Надеюсь, что кто-то может указать мне правильное направление с некоторыми проблемами производительности iSCSI, которые у меня возникают. Я использую Openfiler 2.99 на более старом ProLiant DL360 G5. Двойной процессор Xeon, 6 ГБ ОЗУ ECC, гигабитный серверный сетевой адаптер Intel, контроллер SAS и 3 диска SAS 10К в массиве RAID 5. Когда я запускаю простой тест записи прямо из коробки, производительность очень хорошая:
[root@localhost ~]# dd if=/dev/zero of=tmpfile bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 4.64468 s, 226 MB/s
Итак, я создал LUN, прикрепил его к другому ящику, в котором я работал с ESXi 5.1 (Core i7 2600k, 16 ГБ ОЗУ, Intel Gigabit Server NIC), и создал новое хранилище данных. Создав хранилище данных, я смог создать и запустить виртуальную машину под управлением CentOS с 2 ГБ ОЗУ и 16 ГБ дискового пространства. ОС установлена нормально, и я могу ее использовать, но когда я провел тот же тест внутри виртуальной машины, я получил совершенно разные результаты:
[root@localhost ~]# dd if=/dev/zero of=tmpfile bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 26.8786 s, 39.0 MB/s
[root@localhost ~]#
На обоих серверах установлены новые сетевые адаптеры Intel Server, и у меня включены Jumbo Frames на коммутаторе, на коробке openfiler, а также на адаптере VMKernel на коробке ESXi. Я могу подтвердить, что это настроено правильно, используя команду vmkping с хоста ESXi:
~ # vmkping 10.0.0.1 -s 9000
PING 10.0.0.1 (10.0.0.1): 9000 data bytes
9008 bytes from 10.0.0.1: icmp_seq=0 ttl=64 time=0.533 ms
9008 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.736 ms
9008 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.570 ms
Единственное, чего я не пробовал в сетевых технологиях, - это соединение двух интерфейсов вместе. Я готов попробовать это в будущем, но пока я пытаюсь упростить задачу.
Я знаю, что это довольно скромная установка, и я не ожидаю высочайшей производительности, но я хотел бы видеть 90-100 МБ / с. Любые идеи?
Вы не предоставили версию CentOS, установленную в качестве гостя VMWare ... но предположим, что это CentOS 6.x.
По умолчанию Планировщик ввода-вывода CFQ - плохой выбор для гостевых виртуальных машин (и большинства систем). Вы захотите его изменить. Раньше я просто рекомендовал установить планировщик на крайний срок, но теперь для систем RHEL / CentOS есть более простой способ ...
Лучший способ справиться с этой и парой других настроек - загрузить настроенная структура и применить к системе лучший профиль.
В твоем случае:
yum install tuned tuned-utils
После установки попробуйте один из подходящих профилей. Для виртуальных машин я либо делаю enterprise-storage
или virtual-guest
. Проверьте и посмотрите, что лучше всего подходит для вас. Перезагрузка НЕ требуется между изменениями профиля.
tuned-adm profile virtual-guest
Рассуждения:
Редактировать:
Что ж, это улучшение. Убедитесь, что в гостевой системе установлены инструменты VMWare. Другие элементы включают настройку файловой системы (например, noatime
) и тому подобное ... но на самом деле эти результаты не должны иметь значения после определенного момента. А dd
test не отражает реалистичных моделей использования.
Один из других инструментов тестирования, например Бонни ++ или iozone было бы более полезно. Возьмите их через yum
.
Как виртуальная машина, вы должны иметь дело с небольшими случайными чтениями и записями. Это будет иметь гораздо большее значение, чем показатели последовательной записи из вашего dd
тест.