Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    info@proxmox.su
    +7 (495) 320-70-49
    Заказать звонок
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Телефоны
    +7 (495) 320-70-49
    Заказать звонок
    0
    0
    0
    Аспро: ЛайтШоп
    • +7 (495) 320-70-49
      • Назад
      • Телефоны
      • +7 (495) 320-70-49
      • Заказать звонок
    • info@proxmox.su
    • Москва, Бакунинская улица, 69с1
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Proxmox Виртуальная Среда
    Медленная производительность IOPS внутри ВМ.

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Медленная производительность IOPS внутри ВМ., Proxmox Виртуальная Среда
     
    dustin77
    Guest
    #1
    0
    20.03.2025 18:37:00
    Привет всем! Сейчас тестирую, как можно получить максимальную производительность диска (IOPS) внутри VM. Заметил, что есть жесткий предел внутри VM, например, ~120K случайной записи (с VirtIO SCSI одноконтроллером) и ~170K случайной записи (с VirtIO block). Более точные значения перечислены ниже. Также удалось сузить причину до ограничения потока ввода-вывода, поскольку все процессы ввода-вывода работают в одном потоке, и это нельзя расширить стандартными параметрами Qemu. Это означает, что максимальная скорость масштабируется с тактовой частотой одного ядра, в данный момент она составляет 100%. Обычно вы должны иметь возможность определить несколько потоков ввода-вывода и очередей для устройств VirtIO block, как описано здесь: [https://blogs.oracle.com/linux/post/virtioblk-using-iothread-vq-mapping](<#1 >). Вопрос теперь в том, будет ли эта опция скоро включена в Proxmox? Если вы определяете необходимые параметры через пользовательские параметры в VM.conf (args), вы получаете только сообщение об ошибке: “Свойство ‘virtio-blk-pci.num_queues’ не найдено”. Это было бы огромным приростом в производительности, поскольку вы почти достигаете скорости работы нативно, в зависимости от количества назначенных потоков и дополнительного закрепления CPU. Стоит отметить, что я также проводил те же тесты с автономным NVMe с форматированием ext4, чтобы исключить файловую систему ZFS как первопричину. Скорость на хосте была немного быстрее в некоторых аспектах, но ограничение внутри VM было тем же.

    Хост:

    Конфигурация хранилища: ZFS vDev Mirror (Raid10): 4x Kioxia CD8P-R SIE (7.68TB)

    Результаты тестирования:

    На хосте ZFS: Compression=lz4, ARC=all, Dedup=off, ashift=12, atime=off, recordsize=16K

    Test Name | IOPS | MB/s
    ------- | -------- | --------
    randread | 1425k | 5838 MB/s
    randwrite | 284k | 1162 MB/s
    seqread | 2121k | 8687 MB/s
    seqwrite | 497k | 2035 MB/s

    Код:

    RND Write:
    `fio --bs=4k --direct=1 --gtod_reduce=1 --ioengine=libaio --iodepth=32 --group_reporting --name=randwrite --numjobs=16 --ramp_time=10 --runtime=60 --rw=randwrite --size=256M --time_based --directory=/vdev-mirror/FIO/`

    RND Read:
    `fio --bs=4k --direct=1 --gtod_reduce=1 --ioengine=libaio --iodepth=32 --group_reporting --name=randread --numjobs=16 --ramp_time=10 --runtime=60 --rw=randread --size=256M --time_based --directory=/vdev-mirror/FIO/`

    SEQ Write:
    `fio --bs=4k --direct=1 --gtod_reduce=1 --ioengine=libaio --iodepth=32 --group_reporting --name=seqwrite --numjobs=16 --ramp_time=10 --runtime=60 --rw=write --size=256M --time_based --directory=/vdev-mirror/FIO/`

    SEQ Read:
    `fio --bs=4k --direct=1 --gtod_reduce=1 --ioengine=libaio --iodepth=32 --group_reporting --name=seqread --numjobs=16 --ramp_time=10 --runtime=60 --rw=read --size=256M --time_based --directory=/vdev-mirror/FIO/`

    Внутри VM:

    Конфигурация VM:
    * 32x vCPU
    * Тип CPU хоста
    * 32GB RAM
    * iothread=true
    * discard=true
    * Сырой диск на ZFS vdev mirror

    Чтобы сделать сообщение короче, я просто прикреплю тест randread для обоих типов контроллера хранилища.

    С контроллером VirtIO SCSI:

    Код:
    `fio --bs=4k --direct=1 --gtod_reduce=1 --ioengine=libaio --iodepth=32 --group_reporting --name=randread --numjobs=16 --ramp_time=10 --runtime=60 --rw=randread --size=256M --time_based --directory=/home/FIO/`

    randread: (g=0): rw=randread, bs=® 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=32
    ...
    fio-3.33
    Starting 16 processes
    Jobs: 16 (f=16): [r(16)][100.0%][r=653MiB/s][r=167k IOPS][eta 00m:00s]
    randread: (groupid=0, jobs=16): err= 0: pid=979: Wed Mar 19 14:34:50 2025
     read: IOPS=169k, BW=659MiB/s (691MB/s)(38.6GiB/60008msec)
      bw (  KiB/s): min=667121, max=790884, per=100.00%, avg=675333.80, stdev=1131.55, samples=1916
      iops        : min=166778, max=197718, avg=168831.60, stdev=282.89, samples=1916
     cpu          : usr=0.68%, sys=2.02%, ctx=321241, majf=0, minf=587
     IO depths    : 1=0.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=100.0%, >=64=0.0%
        submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
        complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.1%, 64=0.0%, >=64=0.0%
        issued rwts: total=10124405,0,0,0 short=0,0,0,0 dropped=0,0,0,0
        latency   : target=0, window=0, percentile=100.00%, depth=32

    Внутри VM на Ubuntu Host с установкой QEMU/KVM и двумя iothreads: Чем больше iothreads вы назначаете контроллеру VirtIO block, тем быстрее/лучше производительность внутри VM.

    Код:
    `fio --bs=4k --direct=1 --gtod_reduce=1 --ioengine=libaio --iodepth=32 --group_reporting --name=randread --numjobs=16 --ramp_time=10 --runtime=60 --rw=randread --size=256M --time_based --directory=/home/FIO/`

    randread: IOPS=630k, BW=2460MiB/s (2579MB/s)(144GiB/60003msec)
     
     
     
    UdoB
    Guest
    #2
    0
    20.03.2025 19:42:00
    Приятный тест. Виртуальный диск (на котором fio работает внутри гостя) имеет установку "Cache: Default (No cache)"?
     
     
     
    dustin77
    Guest
    #3
    0
    20.03.2025 19:50:00
    Ах да, чуть не забыл упомянуть... Поменять эти настройки на другие только ухудшило скорость, в лучшем случае. Кэш: Default (Без кэша) Async IO: Native.
     
     
     
    dustin77
    Guest
    #4
    0
    21.03.2025 21:15:00
    Просто интересно, что ты думаешь об этих результатах. Ты же постоянно читаешь про большие кластерные ZFS и Ceph на Proxmox, и я не могу представить, чтобы там такие ограничения просто принимались как должное. Так что любая обратная связь в этом направлении была бы очень кстати. И я был бы рад, если кто-нибудь знает, как настроить несколько iothreads на VM в Proxmox.
     
     
     
    leesteken
    Guest
    #5
    0
    22.03.2025 06:38:00
    Используйте VirtIO SCSI Single: https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_hard_disk

    Отредактировал: Похоже, я неправильно понял вопрос и упустил "single" в первом сообщении этой темы.
     
     
     
    dustin77
    Guest
    #6
    0
    22.03.2025 12:17:00
    Как описано и также указано в предоставленной вами ссылке, на один диск приходится только один поток. Qemu позволяет иметь несколько потоков на диск/контроллер, но это сейчас не используется в Proxmox, или, по крайней мере, я не нашел способа это настроить. Это стало бы невероятным увеличением производительности, как видно из значений в последнем выводе fio выше.
     
     
     
    floh8
    Guest
    #7
    0
    22.03.2025 22:22:00
    https://bugzilla.proxmox.com/show_bug.cgi?id=4295 Тикет по очередям. Может, открываем ещё один для iothreads.
     
     
     
    dustin77
    Guest
    #8
    0
    23.03.2025 17:10:00
    Спасибо, я посмотрю это. Довольно странно, что эта задача открыта так долго.
     
     
     
    igregor
    Guest
    #9
    0
    02.04.2025 14:00:00
    Я тоже заинтересован(а).
     
     
     
    Infotech@
    Guest
    #10
    0
    04.06.2025 21:37:00
    Тоже интересно.
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

    Конфиденциальность Оферта
    © 2026 Proxmox.su
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры