Я создал несколько виртуальных машин qemu / KVM на SSD.
На хосте ~ 6 SSD. 1 используется для ОС, а каждый из других SSD имеет два Гости ВМ.
я использую iotune
чтобы ограничить возможности этих приводов:
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='writeback' io='threads'/>
<source file='/var/lib/libvirt/images/sdd/pz/heavy/virtual-machine-1/os.img' aio=''/>
<target dev='vda' bus='virtio'/>
<iotune>
<total_iops_sec>3000</total_iops_sec>
<total_bytes_sec>125829120</total_bytes_sec> #120Mb
</iotune>
</disk>
Когда я подключаюсь к одной из виртуальных машин по SSH и запускаю fio
эти ограничения работают - я не могу выйти за пределы пропускной способности 120 МБ или 3000 IOPS независимо от того, какую конфигурацию я использую на fio (--iodepth
, --bs
--rwmixread
, и т.д).
Однако под нагрузкой, когда я бегу iostat -xm 2
, Я иногда вижу writes per second
или tps
прыгать выше этих пределов.
С двумя виртуальными машинами на диск и соблюдением этих ограничений я должен видеть максимум 6000 операций ввода-вывода в секунду или 240 МБ операций чтения / записи. На следующем выходе вы видите, что это не так:
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdd 6515.00 0.00 23.10 0 46
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdd 0.00 4.50 0.00 7742.50 0.00 58.38 15.44 1.47 0.21 0.00 0.21 0.08 63.10
Это тоже не разовый случай. У меня есть 4 сервера с идентичными настройками виртуальных машин, и я вижу, что это довольно часто происходит на всех SSD и всех серверах:
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdb 0.00 0.00 0.00 9588.50 0.00 33.59 7.17 1.47 0.16 0.00 0.16 0.06 52.85
sdd 0.00 0.00 0.00 8528.00 0.00 66.15 15.89 1.36 0.16 0.00 0.16 0.07 59.30
Это ошибка моей конфигурации, реализации qemu / KVM или интерпретации производительности этих дисков iostat?