понедельник, 16 августа 2010 г.

Использование памяти ZFS

Известно, что файловая система ZFS очень агрессивно использует доступную физическую память под собственный файловый кэш. Заявлено, что при необходимости файловая система освободит память для любого приложения, которое запросит, но на практике эта память освобождается весьма неспешно и неохотно, что приводит к заметному снижению производительности.

Если заведомо известно, что в системе будут присутствовать приложения, которым нужен значительный объем памяти для работы, то общем кэша следует ограничить.
В Solaris 10 это делается добавлением строки в /etc/system
set zfs:zfs_arc_max = 0x1000000000
и перезагрузкой. Данный параметр ограничит используемый объем 64 гигабайтами. Ограничение жесткое и превышено никогда не будет.
Это же можно сделать на лету с помощью утилиты mdb, но знающие люди весьма не советуют, потому даже команды приводить не буду.
Другие полезные команды по теме -
текущий объем файлового кэша в гигабайтах
kstat zfs:0:arcstats:size|grep size|awk {'print $2"/1024/1024/1024"'}|bc
установленный лимит в гигабайтах
kstat zfs:0:arcstats:c_max|grep c_max|awk {'print $2"/1024/1024/1024"'}|bc

2 комментария:

  1. > с помощью утилиты mdb, но знающие люди весьма не советуют

    А почему?

    ОтветитьУдалить
  2. С ходу линк не нашел, но это unstable kernel parameter (как-то так). Вы можете свалиться в панику меняя этот параметр на лету, т.е. ядро не все ситуации может корректно отработать. Потому этот параметр устанавливается именно на этапе загрузки.

    ОтветитьУдалить