As mentioned in the last chapter, PostgreSQL is expected to have both its own dedicated memory (shared_buffers) as well as utilize the filesystem cache. In some cases, when making decisions such as whether it is efficient to use an index or not, the database compares sizes it computes against the effective sum of all these caches; that's what it expects to find in effective_cache_size.
The same rough rule of thumb that would put shared_buffers at 25% of system memory would set effective_cache_size to between 50 and 75% of RAM. To get a more accurate estimate, first observe the size of the filesystem cache:
- Unix-like systems: Add the free and cached numbers shown by the free or top commands to estimate the filesystem ...