---
title: "Сбор статистики для выбора параметров vFRC в VMware"
slug: "sbor-statistiki-dlya-vybora-parametrov-vfrc-v-vmware"
date: "2016-03-21T17:01:00+03:00"
author: "at-hacker"
tags:
  - "FileSystem"
  - "VMware"
  - "Производительность"
canonical_url: "http://at-hacker.in/?go=all/sbor-statistiki-dlya-vybora-parametrov-vfrc-v-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, то получим вот такую красивую картинку:

![](/assets/images/vfrc_blocks.jpg)

Из каковой следует, что размер блока кэша нам для этой нагрузки следует делать именно 32 Kb.

После того, как мы осознали эту простую истину, нужно выключить сбор статистики на гипервизоре:

```
vscsiStats -x
```

И идти настраивать vFRC :-)

Вообще же, vscsiStat — довольно интересная утиля. Она позволяет не только выяснить размер блоков, которыми виртуалка обменивается с хранилищем, но и оценить тип нагрузки в терминах «случайная/последовательная». Для этого нужно собрать инфу командой:

```
vscsiStats -p seekdistance -w 
```

Она покажет, насколько далеко находятся запрашиваемые виртуалкой блоки данных. Чем дальше цифры от 0, тем нагрузка «случайнее». Есть ещё возможность оценить статистику по задержкам выполнения команд, и есть ключ /-p all/, который выводит вообще все типы данных.

Так же один белый человек озадачился, и создал страничку, на которой можно просто впихнуть весь вывод, который сгенерила вам vscsiStat, и нарисовать красивые диаграммы автоматически. Вот что-то такое в итоге получается:

![](/assets/images/vscsiStat_example.png)

Вот ссылка: [http://www.virten.net/vscsistats/](http://www.virten.net/vscsistats/) 

Скажем автору большое человеческое спасибо за такой сервис :-)
Скажем автору большое человеческое спасибо за такой сервис :-)
