The primary advantage of using a paged buffer cache is that it maximizes the use of the physical memory that you have paid for. Almost all spare physical memory is used for file system caching. Only a small amount of physical memory is left free to satisfy short term demands for free memory.
The primary disadvantage of using a paged buffer cache is that it can perform very poorly under intensive buffered I/O. Intensive buffered I/O can quickly exaggerate the apparent working set of cache buffers beyond the point at which it exceeds the size of the page pool less the working set of executable and anonymous pages. When this happens, the system may page frantically until the apparent memory deficit has been satisfied. System performance is seriously compromised during such paging storms, and they can be prolonged if the intensive I/O is sustained.
Most modern paged buffer cache implementations attempt to reduce the risk of I/O related paging storms by managing buffer cache pages on a separate page list that uses an LRU cache replacement policy instead of the inactivity based replacement policy that is used for the rest of the page pool. This allows bounds to be placed on the size of the file system cache, and permits several optimization to the paging algorithms that reduce the risk of paging storms. However, the risk cannot be entirely eliminated, not even with careful tuning, and the original intent of using a paged buffer cache - namely to maximize physical memory usage - is somewhat defeated.
For further operating system specific information, please see the follow these links: Solaris, AIX, Tru64 Unix.
© Ixora Pty Ltd. All rights reserved.