Сбор статистики для выбора параметров vFRC в VMware
Как известно, для эффективного использования vFRC (virtual flash read cache) у VMware, нужно правильным образом выбрать два параметра — размер кэша, и размер блока кэша. Если с размером ещё можно попытаться разобраться эмпирически (читай — методом научного тыка), то с размером блока это сделать как-то сложнее. Чтобы правильно выбрать размер блока, нужна статистика по каждой отдельной виртуальной машине, для которой предполагается использовать vFRC, на предмет того, блоки какого размера превалируют в дисковом обмене. И именно такой размер блока нужно выставлять в vFRC. Оказывается, в VMware есть механизм, который такую позволяет собрать статистику по размерам блоков обмена.
Для этого нужно подключиться к хосту, на котором работает искомая ВМ, по SSH. И выполнить следующие команды:
vscsiStats -l
Эта команда выведет нам список виртуалок на хосте, а также виртуальных дисков у каждой виртуалки:
[root@esx-1:~] vscsiStats -l Virtual Machine worldGroupID: 35676, Virtual Machine Display Name: TEST-IO, Virtual Machine Config File: /vmfs/volumes/55f97ce4-d51833a0-3617-0007430759d0/TEST-IO/TEST-IO.vmx, { Virtual SCSI Disk handleID: 8214 (scsi0:0) Virtual SCSI Disk handleID: 8215 (scsi0:1) }
У меня на хосте одна машина, поэтому вот.
Из этого чарующего списка нас интересуют два идентификатора: Virtual Machine worldGroupID и и Virtual SCSI Disk handleID..
Первый является идентификатором ВМ, второй — идентификатором того виртуального диска этой ВМ, для которой вам нужна статистика. В моём случае worldGroupID равен 35676, а Virtual SCSI Disk handleID равен 8215 — меня интересует именно второй диск. На этой виртуалке у меня сейчас запущен Microsoft JetStress 2013 и тестовые базы лежать именно на втором диске.
Затем, нужно запустить сбор статистики. Делается это командой:
[root@esx-1:~] vscsiStats -s -w 53290 -i 8202 vscsiStats: Starting Vscsi stats collection for worldGroup 53290, handleID 8202 (scsi0:0) Success.
Ключ /-w/ задаёт worldGroupID, ключ /-i/ задаёт disk handleID. Хост нам отвечает, что сбор статистики начат.
Через какое-то время можно посмотреть, что там мы насобирали:
[root@esx-1:~] vscsiStats -p ioLength -c -w 35676 -i 8215 Histogram: IO lengths of commands,virtual machine worldGroupID,35676,virtual disk handleID,8215 (scsi0:1) min,4096 max,524288 mean,41803 count,1308632 Frequency,Histogram Bucket Limit 0,512 0,1024 0,2048 0,4095 72510,4096 0,8191 17429,8192 14999,16383 4949,16384 1107407,32768 4878,49152 1839,65535 18921,65536 754,81920 4768,131072 60065,262144 113,524288 0,524288 Histogram: IO lengths of Read commands,virtual machine worldGroupID,35676,virtual disk handleID,8215 (scsi0:1) min,4096 max,262144 mean,50433 count,724878 Frequency,Histogram Bucket Limit 0,512 0,1024 0,2048 0,4095 910,4096 0,8191 0,8192 2,16383 0,16384 667157,32768 0,49152 0,65535 428,65536 1,81920 269,131072 56111,262144 0,524288 0,524288 Histogram: IO lengths of Write commands,virtual machine worldGroupID,35676,virtual disk handleID,8215 (scsi0:1) min,4096 max,524288 mean,31087 count,583754 Frequency,Histogram Bucket Limit 0,512 0,1024 0,2048 0,4095 71600,4096 0,8191 17429,8192 14997,16383 4949,16384 440250,32768 4878,49152 1839,65535 18493,65536 753,81920 4499,131072 3954,262144 113,524288 0,524288
Формат таблички очень простой. Три блока диаграмм, первая — всего количество команд ввода-вывода с блоками соответствующего размера, затем отдельно команды только чтения, и только записи. Цифры идут в формате: «<кол-во_команд>, <размер_блока>».
Как вы понимаете из названия технологии «Virtual Flash READ cache», нас интересует только второй раздел, который «IO lengths of Read commands». Если эти данные сохранить в формат CSV, а затем творчески обработать в Excel, то получим вот такую красивую картинку: cache», нас интересует только второй раздел, который «IO lengths of Read commands». Если эти данные сохранить в формат CSV, а затем творчески обработать в Excel, то получим вот такую красивую картинку:

Из каковой следует, что размер блока кэша нам для этой нагрузки следует делать именно 32 Kb.
После того, как мы осознали эту простую истину, нужно выключить сбор статистики на гипервизоре:
vscsiStats -x
И идти настраивать vFRC :-)
Вообще же, vscsiStat — довольно интересная утиля. Она позволяет не только выяснить размер блоков, которыми виртуалка обменивается с хранилищем, но и оценить тип нагрузки в терминах «случайная/последовательная». Для этого нужно собрать инфу командой:
vscsiStats -p seekdistance -w
Она покажет, насколько далеко находятся запрашиваемые виртуалкой блоки данных. Чем дальше цифры от 0, тем нагрузка «случайнее». Есть ещё возможность оценить статистику по задержкам выполнения команд, и есть ключ /-p all/, который выводит вообще все типы данных.
Так же один белый человек озадачился, и создал страничку, на которой можно просто впихнуть весь вывод, который сгенерила вам vscsiStat, и нарисовать красивые диаграммы автоматически. Вот что-то такое в итоге получается:

Вот ссылка: http://www.virten.net/vscsistats/
Скажем автору большое человеческое спасибо за такой сервис :-) Скажем автору большое человеческое спасибо за такой сервис :-)
Comments
Comments powered by Disqus