Nano Hash - криптовалюты, майнинг, программирование

libvirt: почему так мало IOPS при прямом подключении LUN к гостевой KVM

У меня есть один KVM и несколько LUN (Compellent SAN) в пуле хранения с несколькими путями. Все файловые системы xfs.

> # virsh vol-list --pool multipath 
dm-3     /dev/mapper/maildata-store-2-repl
dm-4     /dev/mapper/maildata-store-1-back
dm-5     /dev/mapper/metadata-store-2-repl
dm-6     /dev/mapper/metadata-store-1-back
dm-7     /dev/mapper/images

Один LUN предназначен для хранения виртуальных машин (/var/lib/libvirt/images), а другие будут монтироваться непосредственно в виртуальные машины для будущего хранения почты и соответствующих метаданных.

# df /dev/mapper/images1
Sys. de fichiers    blocs de 1K  Utilisé Disponible Uti% Monté sur
/dev/mapper/images1   209611780 18752452  190859328   9% /var/lib/libvirt/images

fio используется для сравнения IOP при произвольной записи:

fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=/tmp/10g.file --bs=4k --iodepth=64 --size=4G --readwrite=randwrite

Итак, я получил этот результат для теста fio при записи в папку tmp виртуальной машины (/dev/mapper/images), очень хорошо!

запись: IOPS=66,1k, BW=258МиБ/с

Теперь я подключаю LUN к этой виртуальной машине с помощью этого XML-файла:

<disk type='block' device='lun'>
  <driver name='qemu' type='raw'/>
  <source dev='/dev/mapper/maildata-store-1-back'/>
  <target dev='sda' bus='scsi'/>
  <address type='drive' controller='0' bus='0' target='0' unit='0'/>

And this command:

virsh attach-device VM_TEST --file lun.xml --persistent

Затем на VM_TEST:

#fdisk /dev/sda #mkfs.xfs /dev/sda1 #mount /dev/sda1 /test

И повторно запустите тест fio на только что созданном разделе:

fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=/test/10g.file --bs=4k --iodepth=64 --size=4G --readwrite=randwrite

Результаты намного хуже:

запись: IOPS=17,6k, BW=68,7МиБ/с

Я играл с различными параметрами в файле xml, такими как cache=none, bus=virtio, .., но мне не удалось реально увеличить показатели.

На данный момент я застрял. Я действительно не знаю, где искать.

Спасибо.

19.02.2019

  • Примечание: в одном случае вы выполняли ввод-вывод для файла в файловой системе, а в другом вы делали это для того, что, вероятно, было блочным устройством поверх другого блочного устройства... 20.02.2019
  • Привет, первая файловая система также находится на блочном устройстве, буфер для Vms находится на LUN. Второй случай — это тоже файловая система на блочном устройстве. Основное различие заключается во всех вещах libvirt между ними. Я думаю, что этот ответ может быть полезно. Спасибо 20.02.2019
  • Конечно, но знаете ли вы, что делает ваша файловая система при прямом вводе-выводе? Это сам по себе вопрос, на который может быть сложный ответ (есть некоторые предупреждения на serverfault.com/a/864574/203726 ) и тот, который вы можете обойти, просто проверив напрямую блочное устройство хоста, которое вы передаете гостевой KVM... 20.02.2019

Ответы:


1

Итак, мне удается получить одинаковые IOP на хостах и ​​​​гостях с помощью этой настройки:

<driver name='qemu' type='raw' cache='directsync' io='native'/>

Я также пытаюсь смонтировать блочное устройство как диск или как луну:

<disk type='block' device='lun'>
  <target dev='sda' bus='scsi'/>

А также

<disk type='block' device='disk'>
  <target dev='sda' bus='virtio'/>

С совершенно такими же результатами.

21.02.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..