воскресенье, 31 января 2010 г.

ZFS и ARC

Раньше уже возникал вопрос, как все же тюнить параметры ZFS и нужно ли это вообще. "Тюнинг - зло", как говорит один мой знакомый, цитируя, в свою очередь, разработчиков Sun. :)

Я в очередной раз позволю себе не согласиться с этим утверждением.

Вот данные машины, которая глубоко затюнена на экстремальную производительность. Конкретно это Веб-сервер поверх БД Oracle 10g + WebCache + DNS сервер и некоторое количество веб-приложений. Машина оптимизирована на отклик, который составляет в среднем 0,02 секунды.

root @ host1 / # arc_summary.pl
System Memory:
         Physical RAM:  4087 MB
         Free Memory :  235 MB
         LotsFree:      63 MB

ZFS Tunables (/etc/system):
         set zfs:zfs_arc_max=1073741824

ARC Size:
         Current Size:             1024 MB (arcsize)
         Target Size (Adaptive):   1024 MB (c)
         Min Size (Hard Limit):    128 MB (zfs_arc_min)
         Max Size (Hard Limit):    1024 MB (zfs_arc_max)

ARC Size Breakdown:
         Most Recently Used Cache Size:          69%    713 MB (p)
         Most Frequently Used Cache Size:        30%    310 MB (c-p)

ARC Efficency:
         Cache Access Total:             7611011
         Cache Hit Ratio:      83%       6377985        [Defined State for buffer]
         Cache Miss Ratio:     16%       1233026        [Undefined State for Buffer]
         REAL Hit Ratio:       70%       5399102        [MRU/MFU Hits Only]

         Data Demand   Efficiency:    92%
         Data Prefetch Efficiency:    58%

        CACHE HITS BY CACHE LIST:
          Anon:                        6%        431443                 [ New Customer, First Cache Hit ]
          Most Recently Used:         27%        1748620 (mru)          [ Return Customer ]
          Most Frequently Used:       57%        3650482 (mfu)          [ Frequent Customer ]
          Most Recently Used Ghost:    4%        267234 (mru_ghost)     [ Return Customer Evicted, Now Back ]
          Most Frequently Used Ghost:  4%        280206 (mfu_ghost)     [ Frequent Customer Evicted, Now Back ]
        CACHE HITS BY DATA TYPE:
          Demand Data:                62%        4007518
          Prefetch Data:              13%        829263
          Demand Metadata:            21%        1353953
          Prefetch Metadata:           2%        187251
        CACHE MISSES BY DATA TYPE:
          Demand Data:                26%        324286
          Prefetch Data:              48%        596230
          Demand Metadata:            20%        257751
          Prefetch Metadata:           4%        54759
---------------------------------------------


Как следует из приведенных данных, ARC сознательно лимитирован с целью не допустить его чрезмерного разрастания и конфликта с WebCache:

set zfs:zfs_arc_max=1073741824

Режим кэширования ZFS не менялся:

data  primarycache          all                    default
data  secondarycache        all                    default


Хотя из статистики и следует, что, возможно, имеет смысл отключить кэширование метаданных с целью снижения нагрузки на оперативную память, сделать этого не получится:

primarycache    YES      YES   all | none | metadata
secondarycache  YES      YES   all | none | metadata


поскольку не предусмотрено кэширование только данных. Кстати, игры с размерностью лимита для данного конкретного сервера показали оптимум именно в заданном размере.

Quod erat demonstrandum - Что и требовалось доказать.