Содержание


Настройка SUSE Linux на POWER5 для повышения производительности

Виртуальный SCSI и виртуальный Ethernet

Comments

Введение

В число функций виртуализации IBM System p™, поддерживаемых операционной системой SUSE Linux Enterprise Server (SLES) 10, входят виртуальные устройства SCSI (VSCSI) и виртуальная локальная сеть (VLAN). И в VSCSI, и в VLAN предусмотрены конфигурационные и настроечные параметры, которые позволяют повысить производительность системы. В этой статье дается ряд рекомендаций по настройке и рассказывается об измерительных утилитах, которые предоставляют данные для мониторинга производительности и диагностики проблем, связанных с производительностью виртуализации. Ссылки на информацию о начальной установке и конфигурировании приведены в разделе Ресурсы.

Оптимизация виртуального SCSI

Основным способом оптимизации VSCSI является выбор подходящего планировщика ввода-вывода. Вы можете выбрать планировщик ввода-вывода для сервера или для клиентского устройства VSCSI, либо для обоих устройств. Выбранный планировщик должен соответствовать характеру рабочей нагрузки устройства. По умолчанию при установке выбирается опережающий (anticipatory) планировщик. Лучшим планировщиком ввода-вывода для серверного устройства VSCSI является планировщик noop.

Существуют следующие варианты планировщиков ввода-вывода:

  • noop - организация очереди по принципу fifo
  • anticipatory - опережающее планирование
  • deadline
  • cfq – справедливая очередь (consistently fair queuing)

Чтобы узнать, какой планировщик ввода-вывода используется в данный момент, подайте запрос к файловой системе /sys. Например, в SLES 10 выполните следующую команду:

cat /sys/block/<sd*>/queue/scheduler
                  ^use drive of interest

For example using drive sda:
cat /sys/block/sda/queue/scheduler
[noop] anticipatory deadline cfq

В этом примере используется планировщик [noop]. Планировщик ввода-вывода можно сменить в реальном времени, выводя значение в файл, как показано в приведенном выше примере. Кроме того, вы можете изменить планировщик во время загрузки, добавляя в файл /etc/yaboot.conf строку следующего вида:

append = "elevator=noop"

Использование инструментов VSCSI

В общедоступной версии SLES 10 имеется функциональная ошибка в VSCSI. Установите последнее обновление ядра SLES 10 (2.6.16.21-025-ppc или более новое) с портала SUSE Linux (см. раздел Ресурсы). В этом обновлении содержится исправление ошибки.

Команда iostat входит в состав пакета sysstat, доступ к ней можно получить с помощью утилиты SUSE yast.

  1. Запустите yast.
  2. Выберите software.
  3. Выберите software management.
  4. Найдите sysstat.
  5. Выделите пакет systat.
  6. Выберите "принять" ("accept").
  7. Загрузите установочный диск в соответствии с инструкциями.

Команда iostat -x возвращает много полезной информации о трафике записи и чтения для физических и виртуальных устройств. Ссылки на страницы manual с определениями полей iostat можно найти в разделе Ресурсы.

Диагностика проблем VSCSI

Для диагностики проблем, связанных с производительностью виртуального диска SCSI, необходимо понимать конфигурацию системы VSCSI. Надо знать, как виртуальные устройства соответствуют физическому оборудованию.

Суммарная активность по всем разделам физического диска SCSI должна соответствовать возможностям физического устройства SCSI. Для начала рассмотрите требования к физическому устройству. После этого, если требования слишком высоки, рассмотрите требования к каждому из разделов в отдельности. Откорректируйте соответствие виртуальных и физических устройств таким образом, чтобы требования находились в пределах возможностей оборудования. Для этого может потребоваться корректировка соответствия виртуальных и физических устройств и замена или добавление оборудования.

Рассмотрим пример сервера VSCSI, на котором имеется накопитель SCSI с именем sdc, разбитый на три раздела: sdc1, sdc2 и sdc3, каждый из которых виртуализован. Для клиента каждый из виртуализованных разделов выглядит как отдельный диск. Инструмент iostat показывает загрузку каждого из дисков. iostat позволяет измерять использование разделов sdc1, sdc2 и sdc3 как отдельных устройств со стороны клиента. Рекомендуется сначала запустить iostat на сервере VSCSI, чтобы посмотреть полную загрузку sdc. После этого запустите iostat на каждом из клиентов, чтобы измерить загрузку разделов sdc1, sdc2 и sdc3.

Рисунок 1. Пример виртуального SCSI
Пример виртуального SCSI
Пример виртуального SCSI

Пример измерений

Рассмотрим пример измерений, который показывает, почему необходимо понимать, как соотносятся физические устройства и виртуальные диски. Как показано на рисунке 1, сервер VIO загружается с sda. После этого сервер VIO виртуализует sdb и три раздела на sdc. Клиент VIO загружается с sda и монтирует три виртуализованных раздела как sdb, sdc и sdd.

Рабочая нагрузка для этого примера создается Flexible File System Benchmark (FFSB) (информацию о загрузке этого инструмента см. в разделе Ресурсы) - инструментом с открытым исходным кодом, который легко настраивается для моделирования различных режимов произвольного и последовательного чтения и записи, с дополнительными возможностями разделения на потоки. В этом примере FFSB настраивается для оценки производительности клиентских дисков sdb, sdc и sdd. Большие последовательные операции чтения выполняются на sdb. Небольшие произвольные операции чтения выполняются на sdc. На sdd ведется последовательная запись, как показано в Листинге 1. Инструмент iostat измеряет суммарную эффективность работы. Тесты сначала запускаются на каждом диске отдельно, а затем одновременно на всех трех дисках.

В листинге 1 показан вывод iostat для больших последовательных операций чтения на sdb.

Листинг 1. Вывод iostat для больших последовательных операций чтения
avg-cpu:  %user    %nice   %system %iowait      %steal    %idle
           0.30     0.00    6.35    93.30       0.00      0.00

Device:   rrqm/s   wrqm/s    r/s     w/s        rsec/s    wsec/s     rkB/s    
sda        0.00     0.45    0.10    0.10        0.80      4.80       0.40     
sdb        1.17     0.80  173.36    0.40    82818.59     11.19   41409.30     
sdc        0.00     0.00    0.00    0.00        0.00      0.00       0.00     
sdd        0.00     0.00    0.00    0.00        0.00      0.00       0.00     

Device:    wkB/s   avgrq-sz   avgqu-sz    await   svctm   %util
sda        2.40      28.00      0.00      5.00     5.00    0.10
sdb        5.60     476.68    102.99    592.19     5.75  100.00
sdc        0.00       0.00      0.00      0.00     0.00    0.00
sdd        0.00       0.00      0.00      0.00     0.00    0.00

В листинге 2 показан вывод iostat для небольших произвольных операций чтения на sdc.

Листинг 2. Вывод iostat для небольших произвольных операций чтения
avg-cpu:  %user    %nice   %system %iowait      %steal    %idle
           0.05     0.00    0.95    99.00       0.00      0.05

Device:   rrqm/s   wrqm/s    r/s     w/s        rsec/s    wsec/s     rkB/s    
sda        0.00     0.45    0.00    0.10        0.00      4.80       0.00     
sdb        0.00     0.00    0.00    0.00        0.00      0.00       0.00     
sdc        0.00     0.80   98.85    0.40     2390.80     11.19    1195.40     
sdd        0.00     0.00    0.00    0.00        0.00      0.00       0.00     
 
Device:    wkB/s   avgrq-sz   avgqu-sz    await   svctm   %util
sda        2.40      48.00      0.00      0.00     0.00    0.00
sdb        0.00       0.00      0.00      0.00     0.00    0.00
sdc        5.60       8.03     31.56    105.50     3.34  100.00
sdd        0.00       0.00      0.00      0.00     0.00    0.00

И, наконец, в листинге 3 показан результат работы iostat для произвольных операций записи на sdd.

Листинг 3. Вывод iostat для произвольных операций записи
avg-cpu:  %user    %nice   %system %iowait      %steal    %idle
           0.00     0.00    1.00    98.95       0.00      0.00

Device:   rrqm/s   wrqm/s    r/s     w/s        rsec/s    wsec/s     rkB/s
sda        0.00     0.45    0.10    0.55        0.80      8.40       0.40     
sdb        0.00     0.00    0.00    0.00        0.00      0.00       0.00     
sdc        0.00     0.00    0.00    0.00        0.00      0.00       0.00     
sdd        0.00   27.69     0.00  455.97        0.00   3866.87       0.00  

Device:    wkB/s   avgrq-sz   avgqu-sz    await   svctm   %util
sda        4.20     14.15       0.01     15.38     4.62    0.30
sdb        0.00      0.00       0.00      0.00     0.00    0.00
sdc        0.00      0.00       0.00      0.00     0.00    0.00
sdd     1933.43      8.48     143.49    297.71     2.19   99.95

Запуск всех трех тестов iostat на стороне клиента показывает, что пропускная способность отдельных дисков при совместной работе ниже, чем при их работе по отдельности. В листинге 4 показаны результаты iostat для трех одновременно исполняемых тестов.

Листинг 4. Результаты для всех трех одновременно исполняемых тестов
avg-cpu:  %user    %nice   %system %iowait      %steal    %idle
           0.05     0.00    1.60    98.30       0.00      0.00

Device:   rrqm/s   wrqm/s    r/s     w/s        rsec/s    wsec/s     rkB/s
sda        0.00     0.10    0.05    0.20        0.40      2.80       0.20     
sdb        1.10     0.40   14.84    0.25     7084.86      7.60    3542.43     
sdc        0.00     0.75   52.22    0.45      417.79     11.19     208.90     
sdd        0.00    14.89    0.00  312.29        0.00   2618.29       0.00

Device:    wkB/s   avgrq-sz   avgqu-sz    await   svctm   %util
sda        1.40     12.80       0.00      8.00     6.00    0.15
sdb        3.80    469.93      91.77   4818.38    66.26  100.00
sdc        5.60      8.14      30.72    641.45    18.98  100.00
sdd     1309.15      8.38     142.79    451.13     3.20  100.00

Рассмотрим теперь загрузку физического диска сервера. Как мы помним из Рисунка 1, на серверном диске sdc создано три раздела, которые клиент использует как диски sdb, sdc и sdd. Измерения iostat на стороне сервера показывают, что загрузка физического диска sdc составляет 100%, как видно из листинга 5.

Листинг 5. Измерения iostat на стороне сервера, показывающие загрузку физического диска
avg-cpu:  %user    %nice   %system %iowait      %steal    %idle
           0.00     0.00    1.40     0.00       0.00     98.60

Device:   rrqm/s   wrqm/s    r/s     w/s        rsec/s    wsec/s     rkB/s
sda        0.00     0.00    0.00    0.10        0.00      0.80       0.00
sdb        0.00     0.00    0.00    0.00        0.00      0.00       0.00
sdc        0.00     0.00   61.97  322.04     6821.79   2704.65    3410.89

Device:    wkB/s   avgrq-sz   avgqu-sz    await   svctm   %util
sda        0.40      8.00       0.00     15.00    15.00    0.15
sdb        0.00      0.00       0.00      0.00     0.00    0.00
sdc     1352.32     24.81      27.50     70.54     2.60  100.00

Этот пример показывает влияние борьбы за ресурсы физического диска на его пропускную способность и время отклика. Если для устройств VSCSI отмечается снижение пропускной способности или времени отклика, посмотрите на загрузку физического устройства, возможно, причиной является нехватка ресурсов.

Настройка виртуальной LAN

Виртуальная LAN - это функция POWER Hypervisor™, которая позволяет устанавливать защищенные соединения между логическими разделами без использования физических адаптеров ввода-вывода. Поскольку данные между логическими разделами в VLAN передаются по TCP/IP, настройка параметров этого протокола влияет на производительность передачи данных. Вы можете использовать набор настроечных параметров, который отлично подходит для данной среды, не содержащей физических адаптеров ввода-вывода. В листинге 6 показаны рекомендации по настройке производительности VLAN.

Листинг 6. Рекомендации по настройке MTU1500
        /sbin/sysctl -w net.ipv4.tcp_timestamps=1
        /sbin/sysctl -w net.ipv4.tcp_sack=1
        /sbin/sysctl -w net.ipv4.tcp_window_scaling=1
        /sbin/sysctl -w net.core.netdev_max_backlog=3000
        /sbin/sysctl -w net.ipv4.tcp_wmem='4096 87380   30000000'
        /sbin/sysctl -w net.ipv4.tcp_rmem='4096 87380   30000000'
        /sbin/sysctl -w net.ipv4.ip_local_port_range='8096      131072'
        /sbin/sysctl -w net.core.rmem_max=10485760
        /sbin/sysctl -w net.core.rmem_default=10485760
        /sbin/sysctl -w net.core.wmem_max=10485760
        /sbin/sysctl -w net.core.wmem_default=10485760
        /sbin/sysctl -w net.core.optmem_max=10000000
        echo 128 > /sys/class/net/eth0/weight
        echo 128 > /sys/class/net/eth1/weight

Использование инструмента настройки VLAN

Основным инструментом для анализа сети VLAN является утилита netstat, которая позволяет выводить большое количество информации о сетевой подсистеме. Среди наиболее полезных сведений, которые дает эта утилита - информация об интерфейсе и статистика сети. Информацию о сетевом интерфейсе можно вывести с помощью netstat -i, а статистику протокола TCP/IP - с помощью netstat -s.

Диагностика проблем VLAN

Один из инструментов, используемых для измерения максимальной пропускной способности TCP - iperf (см. ссылку на сайт Национальной лаборатории прикладных исследований сетей в разделе Ресурсы).

В нашем примере с помощью утилиты iperf мы измеряли пропускную способность VLAN в системе на базе четырехпроцессорного компьютера с процессорами POWER5, у которого для каждого серверного и клиентского раздела было выделено по 0,5 физического процессора. В системе было установлено 2 ГБ оперативной памяти и была включена опция параллельной многопоточности (SMT). Измеренная пропускная способность составила всего около 500 Мбит/с. Для используемого гигабитного адаптера она должна была бы составлять около 1000 Мбит/с. В листинге 7 показана пропускная способность iperf и вывод vmstat. vmstat - это Linux-утилита для мониторинга производительности в реальном времени. vmstat выдает информацию о доле свободного времени процессора в предпоследней колонке id. Загрузка процессора рассчитывается как 100% - доля свободного времени процессора.

Листинг 7. Пропускная способность iperf и вывод vmstat
[root@power] /iperf_202/iperf-2.0.2/src > ./iperf -c en0host2 -w 1024KB -N
------------------------------------------------------------
Client connecting to en0host2, TCP port 5001
TCP window size:   256 KByte (WARNING: requested 1.00 MByte)
------------------------------------------------------------
[  3] local 192.168.1.1 port 55990 connected with 192.168.1.2 port 5001
[  3]  0.0-10.0 sec    632 MBytes    530 Mbits/sec

vmstat output:

[root@power] /root > vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
 0  0      0 360088  75136 681724    0    0     1     3   13    37  1  6 93  0
 0  0      0 360088  75136 681724    0    0     0     0    6    18  0  0 100  0
 0  0      0 360088  75136 681724    0    0     0     0    9    12  0  0 100  0
 0  0      0 360088  75136 681724    0    0     0     0    6    10  0  0 100  0
 3  0      0 359684  75136 681724    0    0     0     0  358    96  0  2 98  0
 1  0      0 359808  75136 681724    0    0     0     0 14774  1464  0 63 37  0
 1  0      0 359684  75136 681724    0    0     0     8 13913  1452  0 64 36  0
 1  0      0 359808  75136 681724    0    0     0     0 14676  1359  1 65 35  0
 1  0      0 359544  75136 681724    0    0     0     8 14260  1598 12 67 20  0
 1  0      0 359668  75136 681724    0    0     0     0 12198  1882  0 62 38  0
 2  0      0 359544  75136 681724    0    0     0     0 13844  1435  1 63 37  0
 1  0      0 359544  75136 681724    0    0     0     0 14808  1372  0 64 37  0
 1  0      0 359668  75136 681724    0    0     0     0 13934  1454  0 62 37  0
 1  0      0 359700  75136 681724    0    0     0     0 11327  1886  0 64 35  0
 0  0      0 359576  75136 681724    0    0     0     0 14650  1343  0 60 40  0

Разделу, в котором исполнялся тест, было выделено всего 0,5 физического процессора, так что измеренный с помощью vmstat показатель загрузки следует считать весьма высоким. Отсюда можно сделать вывод, что показатель iperf действительно ограничивается возможностями процессора. Затем мы изменили конфигурацию системы: на каждый серверный и клиентский разделы было выделено по одному физическому процессору. Запуск теста на системе с новой конфигурацией показал более высокие результаты, представленные в листинге 8.

Листинг 8. Более высокие результаты iperf
[root@power] /iperf_202/iperf-2.0.2/src > ./iperf -c en0host2 -w 1024KB -N
------------------------------------------------------------
Client connecting to en0host2, TCP port 5001
TCP window size:   256 KByte (WARNING: requested 1.00 MByte)
------------------------------------------------------------
[  3] local 192.168.1.1 port 39856 connected with 192.168.1.2 port 5001
[  3]  0.0-10.0 sec  1.22 GBytes  1.05 Gbits/sec

Благодаря дополнительным процессорным ресурсам тест смог вывести канал Ethernet на полную скорость. Используя эти знания, системный администратор может выбрать подходящее распределение процессорных ресурсов.

Заключение

Знание средств поддержки виртуального SCSI и виртуальной локальной сети серверов IBM System p, поддерживаемых SLES 10, может помочь системному администратору настроить систему на более высокую производительность. В этой статье показано, что борьба за ресурсы физического диска может снизить пропускную способность и время отклика устройств VSCSI. Подобным же образом недостаток процессорной мощности может привести к снижению производительности VLAN. Обе ситуации можно разрешить путем добавления физических ресурсов, необходимых для виртуальных устройств.


Ресурсы для скачивания


Похожие темы


Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=228331
ArticleTitle=Настройка SUSE Linux на POWER5 для повышения производительности
publish-date=06042007