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 без акселерации :)

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

20/0.136

Данный блог не спонсируется, не аффилирован, и не санкционирован компанией NetApp, Inc. Излагаемая в этом блоге точка зрения выражает мнение исключительно его автора и может не совпадать с позицией NetApp, Inc.

This content is not endorsed, sponsored or affiliated with NetApp, Inc. The views expressed in this blog are solely those of the author and do not represent the views of NetApp, Inc.