Обьясняю на пальцах:
После того как из файла прочитано 4К даных - они остаются в памяти (нету ни юзерленда ни кмема - просто в одной физической странице памяти на машине). VM-система знает к какому файлу (vm-обьекту, если быть точным) относится даная страница, и пока она активно используется - эта страница в памяти и остается. Если несколько процессов делают mmap() в одно и то же место одного файла - они пользуются одной! и той же физической страницей памяти на машине. Если несколько процессов загружены из одного исполняемого файла - они тоже пользуются общими страницами памяти. Есть ещё и анонимные страницы - они привязаны не к файлам, а только к процессам (в т.ч. могут принадлежать только ядру). Они не могут быть просто так освобождены, пока жив процесс, а только высвоплены.
Когда процесс читает данные из файла через read() - система копирует (вернее мапит, копирование происходит при записи - copy-on-write) в юзерленд данные из страниц vm-обьекта файла. Если нужная страница даного vm-обьекта уже в памяти - хорошо, если нет - надо читать с диска.VM-система активно взаимодействует с FS. В принципе - почти все vm-обьекты - это есть файлы на диске, разбитые по 4К и замапленые на физические страницы памяти. Активные страницы не освобождаются, а неактивные - освобождаются или высвапливаются чтоб можно было освободить для более эффективного использования. Так работает кеширование во многих ОС.
Для ZFS не была реализовано взаимодействие с VM. ZFS имеет собственный маленький кеш, ограниченный обьемом kmem, с которого копируются данные в юзерленд при чтении.
Для людей, которые неспособны учить матчасть, а способны только кричать, что ZFS не для бюджетного железа, могу предложить провести следующий експеримент:
взять файл обьемом 0.5 RAM и запустить
time md5 filename
time md5 filename
Для UFS
первый раз time покажет сколько времени пошло на то чтоб прочитать файл с диска
второй раз (файл будет закеширован) - чтоб сделать md5 (я про real time, а не user или sys)
Для ZFS каждый раз файл придется читать из диска - он не будет закеширован.
И если поставить на небюджетный сервер 64Г памяти - то толку от ZFS будет ещё меньше - память будет простаивать.