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) для вашей системы.
Уточнение, у обоих дистрибьюторов, Netwell и Merlion, есть демо Flash Cache 256Gb и 512Gb.
dve:
Спасибо, это хорошая новость.
Разве можно одновременно две ssh сессии установить к одному контроллеру одному пользователю? У меня вторая сессия отваливается для одного и того же пользователя.
В Украине через дисти “Мегатрейд” можно получить трехтонник с FlashPool или другой трехтонник с FlashCache ну и ещё несколько 22х0 без акселерации :)