Predictive Cache Statistics (PCS)

Наверняка вы уже слышали о том, как NetApp использует flash-память в форме памяти, а не эмуляции диска (SSD), я уже не раз рассказывал о том, что такое Flash Cache (ранее PAM-II), как он работает и насколько значительное дает преимущество с точки зрения производительности. С использованием обширного кэша во flash-памяти построен также нетапповский метод Virtual Storage Tiering, по многим своим параметрам превосходящий “классический” tiering, путем физического переноса данных между разными типами дисков.

Увы, все это, про “преимущества и производительность”, лишь слова, так как “потрогать руками”, не купив, Flash Cache довольно сложно, ведь ни один из российских партнеров, как я знаю, не держит систему Flash Cache для триала и демонстраций.

Однако, есть хорошая новость – на любой системе хранения NetApp вы можете оценить эффект от работы Flash Cache даже не имея ее физически, с помощью встроенного средства, под названием PCS – Predictive Cache Statistics.

PCS это компонент, входящий в состав Flexscale, программной подсистемы кэширования, используемой в том числе и Flash Cache. ?? вы можете получить статистику использования Flash Cache даже неустановленного физически в систему (увеличения производительности без физического Flash Cache, конечно, не будет, но вы сможете оценить, скольно блоков при вашей текушей загрузке оказалось бы в кэше данного размера и дало бы cache hit).

Вот что для этого надо сделать.

Включим Flexscale на системе:

>options flexscale.enable on

Задать размер “виртуального Flash Cache” можно командой:

>options flexscale.pcs_size 512GB

В приведенном случае будет задан размер кэша, равный 512GB на контроллер, например это одна плата Flash Cache размером 512GB, или две по 256GB. Значение по умолчанию варьируется в зависимости от модели, но для, например, FAS3270 оно составляет 1024GB.

Показатели кэширования Flash Cache собирает объект счетчиков по имени ext_cache_obj.

Если в системе нет физического Flash Cache, то тогда Flexscale активизирует PCS, это можно увидеть в ответ на команду:

>options flexscale.enable
flexscale.enable             pcs

Чтобы посмотреть данные счетчиков объекта  ext_cache_obj моно спользовать команду stats, традиционно выдающую плохочитаемую портянку данных:

>stats show ext_cache_obj

ext_cache_obj:ec0:type:SPCS
ext_cache_obj:ec0:blocks:268435456
ext_cache_obj:ec0:size:1024
ext_cache_obj:ec0:usage:0%

…и так далее
На практике куда практичнее будет смотреть на “мгновенный срез”, “point-in-time view” этих счетчиков, с помощью команды:

>stats show -p flexscale-pcs

Эта команда даст вывод в чуть в более человекочитаемой форме (на примере ниже данных пока нет, поэтому всюду нули):

Instance  Blocks   GB  Usage   Hit  Metadata  Miss Hit Evict Invalidate Insert  Reads  
                                                                                Replaced 
                        %      /s   /s        /s   %    /s    /s        /s      /s 
ec0    268435456  1024  0       0    0         0   0     0     0         0       0

Рекомендую запустить вывод stats и sysstat параллельно в двух разных окнах ssh-терминала и писать вывод на диск, чтобы затем было удобнее разбираться с широкими портянками выводов.

Вот что означают данные в каждом из ее столбцов:

  • Instance: Его значение всегда ec0 для релизов OS после Data ONTAP 7.3.2
  • Blocks: Число блоков, эмулируемых в кэше
  • GB: Размер в гигабайтах для эмулируемого кэша
  • Usage: Процент использования эмулируемого кэша
  • Hit: Число cache hit в блоках 4KB в секунду
  • Metadata: Число cache hit в блоках метаданных 4KB в секунду
  • Miss: Число cache miss в блоках 4KB в секунду
  • Hit %: Соотношение суммарного hit/miss
  • Evict: Число блоков 4kB, вытесняемых из кэша в секунду
  • Invalidate: Число блоков 4kB, инвалидируемых в кэше в секунду
  • Insert: Число блоков 4kB, помещаемых в кэш в секунду
  • Disk Reads Replaced: Число операций чтения, которые читаются из кэша, вместо диска, в секунду

Среди перечисленных параметров самыми важными для нас являются Usage, Hit, Hit %, и Disk Reads Replaced.

Для лучшего понимания работы Flash Cache можно также поиграть с параметрами кэширования. Подробно о них, и о том, как они работают, и какой режим лучше выбрать в случае вашего конкретного характера нарузки, можно посмотреть в руководстве TR-3832, а тут вкратце: для кэширования в NetApp есть три режима. Режим “Только метаданные”, режим “Стандартный”, включенный по умолчанию, и включающий в себя режим “только метаданные”, плюс обычные данные, читаемые с диска, а также режим “Low-prioprity data caching”. В последнем в кэш попадают вообще все данные, даже те, которые обычно игнорируются в “стандартном” режиме. Например, это данные, которые часто перезаписываются, и поэтому быстро инвалидирующиеся, устаревающие в кэше, а также данные, считываемые преимущественно последовательно, большими блоками, на которых кэширование не даст существенного выигрыша (а место в кэше они займут).

Выбор режима кэширования может быть осуществлен глобально, и уточнен для определенных томов. Глобальные настройки устанавливаются таким образом:

flexscale.enable             on
flexscale.lopri_blocks       off
flexscale.normal_data_blocks on

Вариант Metadata-only, применяемый, например, для файловых операций, и вообще для операций, с большим количеством запросов метаданных (это могут быть, например, считывание содержимого директории с сотнями и тысячами файлов в нем, активная работа с именами и атрибутами файлов по NFS, работа со сложными ACL для файлов и директориев, и так далее). ??спользование такого режима поможет резко улучшить latency таких операций, так как запросы метаданных часто занимают значительные объемы операций ввода-вывода.

flexscale.enable             on
flexscale.lopri_blocks       off
flexscale.normal_data_blocks off

??, наконец, Low-priority blocks:

flexscale.enable             on
flexscale.lopri_blocks       on
flexscale.normal_data_blocks on

Ориентируясь на вывод >stats show -p flexscale-pcs вы сможете оценить то, насколько добавление большого кэша улучшит ситуацию с cache hit% для ваших данных, насколько уменьшится трафик ввода-вывода к дискам, и каково оптимальное количество и размер модулей Flash Cache (PAM-II) для вашей системы.

Комментарии (4)

  1. dve:

    Уточнение, у обоих дистрибьюторов, Netwell и Merlion, есть демо Flash Cache 256Gb и 512Gb.

  2. dve:

    Спасибо, это хорошая новость.

  3. bbk:

    Разве можно одновременно две ssh сессии установить к одному контроллеру одному пользователю? У меня вторая сессия отваливается для одного и того же пользователя.

  4. bbk:

    В Украине через дисти “Мегатрейд” можно получить трехтонник с FlashPool или другой трехтонник с FlashCache ну и ещё несколько 22х0 без акселерации :)

Оставить комментарий