Я решил проверить производительность виртуальной дисковой подсистемы VirtualBox. Решено было проверить производительность носителей подключенных к виртуальным контроллерам ide, sata и scsi , а также файловой системы общих папок и в режиме прямого доступа (raw диски) к дискам. Для измерения производительности была выбрана программа iozone. |
Виртуальный жесткий диск vdi c установленной гостевой ОС Ubuntu последовательно подключался к различным виртуальным контроллерам для которого производились измерения. Для каждого теста производилось по пять замеров производительности операций чтения и записи командой iozone -s 512m -i 0 -i 1 и рассчитывалось их среднее значение. Ниже приведены результаты тестирования (значения приведены в килобайтах):
Условные обозначения:
box ide, box sata, box scsi — результаты для виртуального носителя подключенного соответственно к виртуальным контроллерам ide, sata и scsi.
Hdd — производительность дисковой подсистемы хоста
share - производительность общей папки
raw - производительность в режиме прямого доступа к диску.
Погрешность измерений с моей точки зрения довольно велика, однако полученные результаты хорошо показывает общую картину. Операции чтения практически приближаются к производительности хоста, а вот скорости записи значительно различаются. Как и следовало ожидать sata и scsi контроллеры обеспечивают большую производительность дисковых операций, чем ide (что явно указано в документации). Однако при создании виртуальных машин по умолчанию виртуальные диски подключаются к ide контроллеру, и если вы хотите увеличить производительность дисковых операций ваших виртуальных машин то вам необходимо добавить к ВМ виртуальный sata контроллер. У меня вызвала удивление очень низкая производительность операций ввода/вывода общих папок и скорость записи в режиме прямого доступа к диску (возможно это связано с тем, что в данном режиме не используются кеш и буферы файловой системы хоста, да и у гостя памяти меньше). В виртуальных машинах, конечно, не возможно достичь производительности хост системы, но возможно подобрать некие настройки виртуальных машин, что бы хоть как то приблизиться к ним.
У меня на хосте имеется два SATA диска. На первом «прописалась» операционная система Ubuntu 9.10, а на другом я создал два отдельных раздела (c файловой системой ext4) для проведения тестов: один для хранения образа виртуального диска (vdi), а второй для прямого доступа и предоставления общей папки. Мой компьютер довольно древний и не поддерживает аппаратную виртуализацию и на нем установлен VirtualBox версии 3.1.:
ilya@ilya-desktop:~$ VBoxManage list hostinfo
Sun VirtualBox Command Line Management Interface Version 3.1.4
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.
Host Information:
Host time: 2010-03-11T19:13:17.686000000Z
Processor online count: 1
Processor count: 1
Processor#0 speed: 2526 MHz
Processor#0 description: Intel(R) Celeron(R) CPU 2.53GHz
Memory size: 2013 MByte
Memory available: 1693 MByte
Operating system: Linux
Operating system version: 2.6.31-19-generic
Виртуальная машина была создана с помощью стандартного мастера создания виртуальных машин с жестким диском на 8Gb. Установлена гостевая ОС Ubuntu 9.10 и установлены гостевые дополнения, потом были добавлены контроллеры SATA и SCSI, добавлена общая папка:
ilya@ilya-desktop:~$ VBoxManage showvminfo "ubuntu 9.10"
Sun VirtualBox Command Line Management Interface Version 3.1.4
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.
Name: ubuntu 9.10
Guest OS: Ubuntu
UUID: 36ef55a8-cbce-4b19-873e-b10abed9ff36
Config file: /home/ilya/.VirtualBox/Machines/ubuntu 9.10/ubuntu 9.10.xml
Hardware UUID: 36ef55a8-cbce-4b19-873e-b10abed9ff36
Memory size: 512MB
VRAM size: 12MB
Number of CPUs: 1
Synthetic Cpu: off
CPUID overrides: None
Boot menu mode: message and menu
Boot Device (1): HardDisk
Boot Device (2): Not Assigned
Boot Device (3): Not Assigned
Boot Device (4): Not Assigned
ACPI: on
IOAPIC: off
PAE: off
Time offset: 0 ms
Hardw. virt.ext: on
Hardw. virt.ext exclusive: on
Nested Paging: off
VT-x VPID: off
State: powered off (since 2010-03-06T20:39:51.000000000)
Monitor count: 1
3D Acceleration: off
2D Video Acceleration: off
Teleporter Enabled: off
Teleporter Port: 0
Teleporter Address:
Teleporter Password:
Storage Controller Name (0): IDE Controller
Storage Controller Type (0): PIIX4
Storage Controller Instance Number (0): 0
Storage Controller Max Port Count (0): 2
Storage Controller Port Count (0): 2
Storage Controller Name (1): Floppy Controller
Storage Controller Type (1): I82078
Storage Controller Instance Number (1): 0
Storage Controller Max Port Count (1): 1
Storage Controller Port Count (1): 1
Storage Controller Name (2): SATA контроллер
Storage Controller Type (2): IntelAhci
Storage Controller Instance Number (2): 0
Storage Controller Max Port Count (2): 30
Storage Controller Port Count (2): 2
Storage Controller Name (3): SCSI контроллер
Storage Controller Type (3): LsiLogic
Storage Controller Instance Number (3): 0
Storage Controller Max Port Count (3): 16
Storage Controller Port Count (3): 16
IDE Controller (0, 1): Empty
Floppy Controller (0, 0): Empty
SATA контроллер (0, 0): /media/big/vbox/ubuntu 9.10.vdi (UUID: 555deb38-aeee-49a0-882d-83042ccb2000)
SATA контроллер (1, 0): /home/ilya/.VirtualBox/HardDisks/sdb7.vmdk (UUID: af4be319-d554-4a6c-88b4-a9bfdb509ba8)
NIC 1: MAC: 080027ADF72A, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps
NIC 2: disabled
NIC 3: disabled
NIC 4: disabled
NIC 5: disabled
NIC 6: disabled
NIC 7: disabled
NIC 8: disabled
UART 1: disabled
UART 2: disabled
Audio: disabled
Clipboard Mode: Bidirectional
VRDP: disabled
USB: disabled
USB Device Filters:
<none>
Shared folders:
Name: 'ilya', Host path: '/home/ilya' (machine mapping), writable
Guest:
Statistics update: disabled