What affects performance
Caches are use to temporary store data, so we can access that data again faster. A common example is the OS caching files to RAM, so if you access them again while they are still in RAM, the OS doesn't need to perform disk access, and the file loads much, much faster. More important to most applications, however, is the internet. Most web browsers will store various website files on your hard disk, so it can load the page faster if you revisit it.
The performance of running software can also be effected by its compile options. Compile options are passed to the compiler. They state, among various things, optimizations that the compiler should perform. The programs most likely effected by these are programs that crunch numbers, lots of them, over and over. Examples are encoders/decoders, compression/decompression, multimedia applications, possibly some games, etc.
With I/O, mostly read and write to and from the hard disk, the factors of influence can be:
As of Linux 2.6 its possible to have different I/O Schedulers (See IOSched for more info). The I/O scheduler is what manages access to block devices such as the hard disk, it gets to determine when and what programs get access to the disk. There are currently three IOSched managers you can choose from.
- Anticipatory - The first scheduler, developed before IOSched was in place.
- Deadline - Acts like the Anticipatory scheduler only is much less complex.
- CFQ - Completely Fair Queuing scheduler, it divides up access fairly.
CFQ is probably the best for a desktop, while more specialized loads (servers) should look into Deadline or Anticipatory for their scheduling needs.