In pretty much every "here is what you should do to optimize Linux in your flash new SSD" guide you can find someone comes with something like this:
"You should tune /proc/sys/vm/vfs_cache_pressure and lower from the default 100 to 50 or something" (and btw setting vm.vfs_cache_pressure = 50 in /etc/sysctl.conf is fastest permanent way of doing that).
It seems like everyone took the copy-and-past route on the first guy who wrote those lines.
I beg to differ.
The thing is: if you can afford the ram and you have a slow (rotionary disk), it makes every sense in the world to significantly lower vfs_cache_pressure because on doing so you're telling the kernel that it should prefer to discard other caches before vfs when there's memory pressure. Otherwise, something simple as a find | xargs grep (or the simply the find itself) can take huge amount of time to traverse directories, etc.
But if you have a 500 Mb/s SSD disk with outstanding random-access times, it's less so. Remember, every other knob remaining on it's defaults, the caches are only flushed when there's ram pressure. And although ram is way faster than ssd, you could be trading a lot of it for a best-case of milliseconds over microseconds, while on the rotational case the relationship is more of seconds for milliseconds and so more perceivable.
On most workloads, you can still benefit from lowering vfs_cache_pressure a bit (say to 90 from it's original 100), but don't go as far as you would with a conventional hard drive for there's little point in doing so. Unless copying huge files/directories around is your work and you have the ram for it, then by all means go for it.
Everyone else should benchmark it before taking for granted. You're welcome.
No comments:
Post a Comment