Doubling the CPU speed is usually better than doubling the number of
CPUs.
Consider striping the disks (e.g., RAID disks).
Add more swap space when there is no other way to increase the memory
available to the application (or to reduce the
application's memory usage requirements).
Test to see if running on raw partitions will be faster.
Look at
mapping
filesystems into memory for speedier startups and accesses. But be
aware that this reduces system memory available to applications. For
multiuser applications, this is an efficient way of sharing in-memory
data.
Move components from network-mounted disks to local disks.
Ensure that system swap files are on different disks from any
intensively used files.
Cluster
files together at the disk level, if possible, or within one big
container file.
Defragment disks regularly if applicable to your system.
Move executables or index files to disk sweet spots.
Consider altering priority levels of
processes to tune the amount of CPU time they get.
Consider locking processes into memory so they do not get paged out.
Partition the system to allocate determinate resources to your
application.
Consider tuning the maximum packet size specified by the TCP/IP stack.
Ensure that your TCP/IP stacks have no performance problems
associated with them.
Consider running a local caching DNS server to improve the speed of
hostname lookups.