Оптимизация производительности AIX 5L: Часть 1.Настройка сетевой производительности

Мониторинг общего состояния сетевого оборудования

Это первая статья цикла из трех статей, посвященных различным вопросам оптимизации работы сети в AIX. В статье рассматриваются рекомендованные методики конфигурирования сети и их применение для эффективного отслеживания состояния сетевого оборудования. Вам в этом помогут такие утилиты, как netstat, netpmon, entstat и nmon. Также вы познакомитесь с инструментами, помогающими при настройке сетевых интерфейсов.

Кен Милберг, UNIX-консультант Future Tech, составитель технической документации и эксперт по сайту, Future Tech

Кен Милберг занимает должности Technical Writer и Site Expert на сайте techtarget.com и предоставляет техническую информацию и поддержку по Linux на searchopensource.com. Он также является автором и техническим редактором IBM Systems Magazine, Open Edition. Кен обладает степенью бакалавра компьютерных и информационных наук и степенью магистра по менеджменту технологий Университета штата Мэрилэнд. Он является основателем и лидером группы пользователей POWER-AIX Лонг-Айленда. В течение многих лет он работал как в крупных, так и небольших организациях и занимал различные должности от директора по информационным технологиям до главного разработчика AIX. Сейчас он работает в Future Tech, бизнес-партнере IBM в Лонг-Айленде. Кен обладает званиями PMI certified Project Management Professional (PMP), IBM Certified Advanced Technical Expert (CATE, IBM System p5 2006), и Solaris Certified Network Administrator (SCNA). Вы можете связаться с ним по адресу kmilberg@gmail.com.



20.08.2009

Об этой серии статей

Первая часть этой серии из трех статей (ссылки на них даны в разделе Ресурсы), посвященной сетевым вопросам в AIX ®, дает обзор сетевых возможностей и рассказывает об утилитах, служащих для контроля сетевого оборудования. Во второй части описаны тонкая настройка сетевой файловой системы (NFS) и программы для мониторинга, такие как nfsstat и nmon, а также рассмотрена настройка NFS с помощью nfso. В третьей части показано, как отслеживать сетевые пакеты при помощи netstat. Вы научитесь настраивать сеть утилитой no. И, наконец, будут рассмотрены рекомендованные методики оптимизации производительности сетевого ввода-вывода.

Введение

Первое, что обычно приходит на ум системному администратору при возникновении сетевых проблем, это запустить netstat. Аналогично использованию утилит vmstat и iostat для вывода информации о памяти, netstat позволяет получить необходимое представление о том, что происходит в сети. Однако, запустив эту утилиту с параметрами по умолчанию, вы, в отличие от vmstat или iostat, скорее всего не получите всех нужных сведений. Поэтому нелишне будет изучить правильное использование netstat для эффективного контроля состояния системы.

По правде говоря, netstat не является утилитой мониторинга в том смысле, в каком являются vmstat и iostat. Для мониторинга сетевой подсистемы существуют другие, более специализированные программы. В то же время невозможно приступить к контролю сети, не владея полной информацией обо всех компонентах, входящих в ее состав: это и сетевые адаптеры, и коммутаторы, и маршрутизаторы, а также конфигурация виртуальных логических разделов на интересующей вас машине. Вы вряд ли сможете чего-то добиться на локальной машине, если где-то в сети неправильно настроен коммутатор. Однако вы хотя бы сможете указать сетевым специалистам, где искать неполадку. В любом случае не пожалейте времени на сбор всей информации о вашей сети, иначе как вы собираетесь устранять проблемы, не имея точного представления о ее работе? В данной статье будут рассмотрены специфичные для AIX утилиты для контроля в реальном времени, такие как netpmon, которые помогут вам найти узкие места в сети.

В конце концов, какую бы подсистему вы ни настраивали, важно понимать эту работу как постоянный процесс. Как уже было сказано, лучше всего начать контролировать работу системы на начальных этапах, когда все еще работает нормально и пользователи не жалуются. Вы должны иметь представление о "правильном" уровне сетевой производительности – т.е. знать, как "выглядит" правильно работающая система. И последний совет – вносите изменения в работу сети по одному, иначе будет трудно уловить эффект от каждого действия.

Краткий обзор сетевого ввода-вывода

В этой части дается обзор сетевой поддержки в AIX, рассматриваются физические составляющие сети (адаптеры и драйверы устройств) и их настройка, а также описан сетевой стек AIX.

Сразу предупреждаю, что сетевая подсистема AIX непроста для понимания. Для установления проблем, связанных со слабым процессором или нехваткой памяти, достаточно проанализировать совсем немного аппаратных и программных параметров. Более сложным является дисковый ввод-вывод, так как его производительность зависит от гораздо большего числа факторов, особенно от выбранной архитектуры системы, и часто страдает при масштабировании дисковых ресурсов. В этом смысле, как и следовало ожидать, настройки сетевой и дисковой подсистем схожи – обе имеют в основе ввод-вывод. Итак, начнем. На рисунке 1 показаны логические уровни протокола TCP/IP в AIX.

Рисунок 1. Уровни протокола TCP/IP в AIX
The AIX TCP/IP layers

Как видно, контроль состояния сети большего, чем просто запуск команды netstat и просмотр количества коллизий. Начиная с уровня приложений и заканчивая уровнем среды передачи данных существует множество параметров, нуждающихся в настройке, контроле и регулировании. Посмотрев на этот рисунок, можно заметить некоторое сходство с сетевой моделью OSI (Open Systems Interconnection Model, открытая модель соединения систем). Модель включает в себя семь уровней. Вот они (перечислены снизу вверх):

  • Физический
  • Канальный
  • Сетевой
  • Транспортный
  • Сессионный
  • Уровень представлений
  • Уровень приложений

Пожалуй, наиболее важный момент, который нужно понять, – в процессе передачи данных каждый уровень на одной машине взаимодействует с соответствующем уровнем на другой машине. Приложения пользователя обмениваются данными либо по протоколу UDP (User Datagram Protocol, протокол пользовательских датаграмм), либо по протоколу TCP (Transmission Control Protocol, протокол управления передачей) – эти протоколы соответствуют транспортному уровню. Пакеты этих протоколов различны. Коротко говоря, UDP быстрее, но TCP надежнее. Здесь имеется множество параметров, поддающихся настройке, – их мы рассмотрим далее в статье. Для начала рекомендую вам познакомиться с командой no, при помощи которой меняется большинство сетевых настроек. На аппаратном уровне очень важно понимать, какие именно сетевые компоненты требуют настройки для достижения оптимальной производительности. Возможно, вам и приходилось работать вместе с инженерами, обслуживающими коммутаторы и маршрутизаторы, но скорее всего вам не придется это делать, если конечно вы не единственный человек, отвечающий за небольшую сеть. Наиболее важное устройство, с которым вы будете иметь дело – это cетевой адаптер. На момент написания статьи (2007 год) большинство сетевых адаптеров поддерживало стандарт Gigabit Ethernet, т.е. скорости 10/100/1000 Мбит/с. Приступим к описанию важнейших параметров, которые будут рассмотрены в статье.

Максимальный передаваемый блок

Максимальный передаваемый блок (MTU, Maximum Transfer Unit) определяется как наибольший пакет, который возможно передать в сеть. Он зависит от типа сети. Например, 16-битная сеть Token Ring по умолчанию имеет размер MTU 17914 байт, в то время как FDDI (Fiber Distributed Data Interface, распределенный волоконный интерфейс данных) – 4352 байта. Для Ethernet этот размер составляет 1500 байт (или 9000, если разрешены сверхдлинные jumbo-кадры). Чем больше размер пакета, тем меньше пакетов требуется передать, следовательно, тем выше пропускная способность системы. Но иногда бывает так, что само приложение формирует малые пакеты. Если вы используете Gigabit Ethernet, то вам доступна опция jumbo-кадров, однако поддержка этих кадров должна быть включена и на соответствующих коммутаторах.

Для включения jumbo-кадров сначала введите: # smit devices.

Затем перейдите к разделу Communication>Ethernet>Adapter>Change/show characteristics of an Ethernet adapter. Если есть аппаратная поддержка jumbo-кадров, измените соответствующую опцию с "No" на "Yes", как показано в листинге 1.

Листинг 1. Настройки характеристик Ethernet-адаптера
              Change / show characteristics of an Ethernet adapter

Type or select values in entry fields.
Press Enter AFTER making all desired changes.

[TOP]                                                   [Entry Fields]
  Ethernet Adapter                                    ent1
  Description                                         Virtual I/O Ethernet >
  Status                                              Available
  Location
  Enable ALTERNATE ETHERNET address                   no                     +
  ALTERNATE ETHERNET address                         [0x000000000000]        +
  Minimum Tiny Buffers                               [512]                   +#
  Maximum Tiny Buffers                               [2048]                  +#
  Minimum Small Buffers                              [512]                   +#
  Maximum Small Buffers                              [2048]                  +#
  Maximum Medium Buffers                             [128]                   +#
  Maximum Medium Buffers                             [256]                   +#
  Minimum Large Buffers                              [24]                    +#
[MORE...8]

F1=Help             F2=Refresh          F3=Cancel           F4=List
F5=Reset            F6=Command          F7=Edit             F8=Image
F9=Shell            F10=Exit            Enter=Do

А где же опции для jumbo-кадров? В данном случае эта опция отсутствует, так как иллюстрация соответствует виртуальному Ethernet-адаптеру. Помните, я уже говорил о важности понимания того, какое оборудование входит с состав системы?

А теперь обратимся к другой системе - см. листинг 2.

Листинг 2. Настройки адаптера для второго варианта
              Change / show characteristics of an Ethernet adapter

Type or select values in entry fields.
Press Enter AFTER making all desired changes.

                                                        [Entry Fields]
  Ethernet Adapter                                    ent1
  Description                                         10/100/1000 Base-TX P>
  Status                                              Available
  Location                                            1j-08
  RX descriptor queue size                           [1024]                  +#
  TX descriptor queue size                           [1024]                  +#
  Software transmit queue size                       [8192]                  +#
  Transmit jumbo frames                               yes                    +
  Enable hardware TX TCP resegmentation               yes                    +
  Enable hardware transmit and receive checksum       yes                    +
  Media speed                                         Auto_Negotiation       +
  Enable ALTERNATE ETHERNET address                   no                     +
  ALTERNATE ETHERNET address                         [0x000000000000]        +
  Apply change to DATABASE only                       no                     +

F1=Help             F2=Refresh          F3=Cancel           F4=List
F5=Reset            F6=Command          F7=Edit             F8=Image
F9=Shell            F10=Exit            Enter=Do

Видно, что опция для jumbo-кадров уже присутствует.

Скорость передачи по каналу связи

Взаимодействие между адаптерами в сети зависит от того, каким образом настроена передача по каналу связи. Рекомендуется выбрать вариант настройки 100_full_duplex либо автовыбор. При автовыборе адаптеры на обоих концах сегмента согласовывают наибольшую возможную скорость. Хотя во многих руководствах (включая документацию IBM®) рекомендуется использовать автовыбор, большинство опытных администраторов AIX, которых я знаю, предпочитают явно выставлять полнодуплексный режим, чтобы установить для адаптера заведомо наибольшую возможную скорость. Если после этого соединение не работает должным образом, то следует обратиться к инженерам по обслуживанию сети. Лучше потратить больше времени сейчас, чем допустить передачу данных на низкой скорости из-за неправильно настроенного коммутатора. Для отображения всех необходимых настроек сетевого адаптера существует команда lsattr. Указав в качестве аргумента имя, начинающееся на ent, вы получите аппаратные сведения; начинающееся на en – информацию о соответствующем драйвере. На рисунке 3 показаны аппаратные сведения.

Листинг 3. Вывод аппаратных сведений
testsys:/home/test>lsattr -El ent0
alt_addr        0x000000000000   Alternate Ethernet Address        True
                                 (Альтернативный Ethernet-адрес)
busintr         166              Bus interrupt level               False
                                 (Шинный уровень прерывания)
busmem          0xc8030000       Bus memory address                False
                                 (Шинный адрес в памяти)
chksum_offload  yes              Enable RX Checksum Offload        True
                                 (Включить аппаратное вычисление
				  контрольной суммы при приеме)
intr_priority   3                Interrupt priority                False
                                 (Приоритет прерывания)
ipsec_offload   no               IPsec Offload                     True
                                 (Аппаратное ускорение IPsec)
large_send      no               Enable TCP Large Send Offload     True
                                 (Дробление больших сообщений TCP)
media_speed     Auto_Negotiation Media Speed                       True
                                 (Скоростной режим канала связи)
poll_link       no               Enable Link Polling               True
                                 (Периодический опрос линии связи)
poll_link_timer 500              Time interval for Link Polling    True
                                 (Интервал периодического опроса)
rom_mem         0xc8000000       ROM memory address                False
                                 (Адрес, соответствующий ППЗУ адаптера)
rx_hog          1000             RX Descriptors per RX Interrupt   True
                                 (Число приемных дескрипторов для
				  приемного прерывания)
rxbuf_pool_sz   1024             Receive Buffer Pool Size          True
                                 (Размер пула приемного буфера)
rxdesc_que_sz   1024             RX Descriptor Queue Size          True
                                 (Размер очереди приемного дескриптора)
slih_hog        10               Interrupt Events per Interrupt    True
                                 (Максимальное количество событий для прерывания)
tx_preload      1520             TX Preload Value                  True
                                 (Величина предзагрузки при передаче)
tx_que_sz       8192             Software TX Queue Size            True
                                 (Размер программной очереди передачи)
txdesc_que_sz   512              TX Descriptor Queue Size          True
                                 (Размер очереди дескриптора передачи)
use_alt_addr    no               Enable Alternate Ethernet Address True
                                 (Разрешить альтернативный Ethernet-адрес)

В приведенном примере адаптер настроен на автовыбор скорости.

Также рекомендуется проверить версию прошивки – используйте самые последние версии. Я повидал немало случаев, когда после обновления прошивки сетевые проблемы исчезали. Команда lscfg выдаст информацию о прошивке, как показано в листинге 4.

Листинг 4. Получение информации о прошивке командой lscfg
testsys:/home/test >lscfg -vp | grep -p ROM
      10/100 Mbps Ethernet PCI Adapter II:
        Part Number.................09P5023
        FRU Number..................09P5023
        EC Level....................H10971A
        Manufacture ID..............YL1021
        Network Address.............0002556FC98B
        ROM Level.(alterable).......SCU015
        Product Specific.(Z0).......A5204207
        Device Specific.(YL)........U0.1-P1-I1/E1

      10/100/1000 Base-TX PCI-X Adapter:
        Part Number.................00P3056
        FRU Number..................00P3056
        EC Level....................H11635A
        Manufacture ID..............YL1021
        Network Address.............00096B2E31BD
        ROM Level.(alterable).......GOL002
        Device Specific.(YL)........U0.1-P1/E2

В разделе Ресурсы в конце статьи приведены ссылки на сведения о последних версиях прошивок для различных адаптеров. Посмотрим историю прошивок для адаптера из нашего примера – 10/100/1000 Base-TX PCI-X:

  • GOLxxx – шаблон для кодовых названий всех будущих версий прошивки.
  • GOL021 – в этой версии исправлено значение Vendor Device ID для адаптеров, соответствующих классу B стандарта EMC. Теперь адаптеры правильно определяются в процессе настройки установки AIX по сети (AIX Network Installation Management, NIM). Контрольная сумма для команды "sum" AIX составляет 38603.
  • GOL012 – в версии OF (она же GOL001) существовала очень небольшая вероятность того, что адаптер вызовет зависание системы в случае аппаратной ошибки передачи. В этой версии исключена возможность бесконечной серии попыток посылок пакетов. Проделав неудачные попытки определенное время, адаптер включает таймер ожидания.
  • GOL002 – исправлена проблема, возникающая, когда пользователь выбирал режим 10/auto или 100/auto и не производил сразу ping до коммутатора. В версии GOL001 этот параметр не устанавливался в auto/auto перед передачей в ОС AIX, поэтому AIX, приняв настройку 10/auto или 100/auto, не "знала, что делать", и система останавливалась с кодом ошибки 607. В новой версии прошивки любая неверная комбинация (10/auto, 100/auto, auto/full или auto/half) преобразуется к auto/auto.
  • GOL001 – исходная Open Firmware-версия (GA).

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

Хотя в данной серии статей материал излагается последовательно, вы можете приступить к ознакомлению с принципами управления памятью в сетевой подсистеме. Для начала скажем, что оно основано на структурах данных под названием mbuf. Ядро использует эти структуры для хранения принятых и отправленных данных. Размер буферов варьируется от 32 до 16384 байт, а память под них выделяется посредством запросов к диспетчеру виртуальной памяти (Virtual Memory Manager, VMM). В SMP-машинах на каждый процессор существует отдельный пул доступной памяти. Здесь основной принцип – процессор не может запросить память из чужого пула.

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

  • Виртуальный Ethernet обеспечивает передачу IP-пакетов между логическими разделами на одном и том же мейнфрейме. Поддерживается в AIX 5.3 для POWER5. Передача реализована через виртуальный коммутатор ввода-вывода. Соответствующие адаптеры создаются и управляются из консоли HMC. Если вы помните, только что мы пытались изменить настройку для такого адаптера.
  • Совместно используемый Ethernet является одной из отличительных возможностей расширенной виртуализации POWER (Advanced POWER Virtualization) и позволяет использовать виртуальные серверы ввода-вывода (Virtual I/O Server, VIO). При этом несколько клиентских систем могут использовать один физический сетевой адаптер. Обычно эта конфигурация применяется в системах, не очень требовательных к пропускной способности сети.

Хотя эта статья не о виртуализации, вы должны понимать, что при применении виртуализации надо быть готовым к появлению дополнительных узких мест, лежащих за пределами вашей машины. Виртуализация – довольно заманчивая технология, однако следует быть осторожным при совместном использовании большого числа адаптеров VIO-сервера, иначе это может плохо сказаться на пропускной способности сети. Имея под рукой соответствующие утилиты для контроля, вы сможете узнать о такого рода проблеме. Вам не помешает также ознакомиться с протоколом разрешения адресов (Address Resolution Protocol, ARP) и работой сервера доменных имен (Domain Name Server, DNS) и тем, как они могут влиять на производительность и стабильность сети.

Контроль

В этом разделе будут описаны основные команды для контроля за состоянием сети и другие специфичные для AIX инструменты, доступные вам. Некоторые из этих утилит позволяют быстро устранить проблему, связанную с производительностью, другие – накопить сетевой трафик для последующего анализа в спокойной обстановке.

Вначале вернемся к уже упомянутой команде netstat, которая отображает общую сетевую статистику. Наиболее часто встречающийся способ запуска команды – netstat -in, показанный в листинге 5).

Листинг 5. Запуска команды netstat с опцией -in
@lpar7ml162f_pub[/home/u0004773] > netstat -in
Name  Mtu   Network     Address            Ipkts Ierrs    Opkts Oerrs  Coll
en1   1500  link#2      2a.21.70.0.90.6   21005666     0   175389     0     0
en1   1500  10.153      10.153.3.7        21005666     0   175389     0     0
en0   1500  link#3      2a.21.70.0.90.5   328241182    0     1189     0     0
en0   1500  172.29.128  172.29.137.205    328241182    0     1189     0     0
lo0   16896 link#1                           62223     0    62234     0     0
lo0   16896 127         127.0.0.1            62223     0    62234     0     0
lo0   16896 ::1                              62223     0    62234     0     0
root@lpar7ml162f_pub[/home/u0004773] >

Вот что означают столбцы:

  • Name: Имя сетевого интерфейса.
  • MTU: Максимальный передаваемый блок для интерфейса.
  • Network: Конкретный сетевой адрес, связанный с данным интерфейсом.
  • Address: MAC- или IP-адрес.
  • Ipkts: Общее количество пакетов, принятых интерфейсом.
  • Ierrs: Количество пакетов с ошибкой, принятых интерфейсом.
  • Opkts: Общее количество пакетов, отправленных интерфейсом.
  • Oerrs: Количество пакетов с ошибкой, отправленных интерфейсом.
  • Coll: Количество коллизий на адаптере. В случае Ethernet это поле всегда пусто.

Другая полезная опция netstat, -m, которая позволяет получить статистику о выделении памяти в ядре, т. е. о запросах на выделение памяти под буферы mbuf, включая размеры буферов, число задействованных буферов и количество ошибочных выделений на каждом процессоре. Пример статистики показан в листинге 6.

Листинг 6. netstat с опцией -m
root@lpar7ml162f_pub[/home/u0004773] > netstat -m

Kernel malloc statistics:

******* CPU 0 *******
By size           inuse     calls failed   delayed    free   hiwat   freed
32                  194      5203      0         2      62    2620       0
64                  484      3926      0         7      28    2620       0
128                 309     14913      0         8     875    1310       0
256                 392     14494      0        22     136    2620       0
512                2060 261283179      0       261      60    3275       0
1024                 31      2714      0         8      25    1310       0
2048                587      1237      0       292       5    1965       0
4096                  9      8367      0         2       2     655       0
8192                  2        12      0         2       1     327       0
16384               224       354      0        29       2     163       0
32768                48       183      0        13       3      81       0
65536                84       142      0        42       0      81       0
131072                3         4      0         0      51     102       0


******* CPU 1 *******
By size           inuse     calls failed   delayed    free   hiwat   freed
32                   17        96      0         0     111    2620       0
64                  295      1214      0         5      25    2620       0
128                 151     93806      0         5     713    1310       0
256                  83       273      0         5      29    2620       0
512                1577  86936634      0       199      23    3275       0
1024                  4        18      0         2       4    1310       0
2048                515       516      0       257       1    1965       0
4096                  1       707      0         0       1     655       0
8192                  1         1      0         1       4     327       0
16384                32        32      0         4       0     163       0
65536                34        34      0        17       0      81       0
131072                0         0      0         0      44      88       0

Кроме того, для Ethernet-адаптера можно вывести статистику, связанную с драйвером адаптера, запустив команду entstat (см. листинг 7).

Листинг 7. Вывод статистики драйвера командой enstat
testsys:/home/test>entstat -d en1
-------------------------------------------------------------
ETHERNET STATISTICS (en1) :
(Ethernet-статистика)
Device Type: 10/100 Mbps Ethernet PCI Adapter II (1410ff01)
(Тип устройства)
Hardware Address: 00:02:55:6f:c9:9b
(Аппаратный адрес)
Elapsed Time: 5 days 12 hours 14 minutes 46 seconds
(Время начала сбора статистики)

Transmit Statistics:                          Receive Statistics:
(Статистика передачи)                         (Статистика приема)
--------------------                          -------------------
Packets: 803536                               Packets: 2095253
(Всего пакетов)
Bytes: 511099654                              Bytes: 1099945394
(Всего байт)
Interrupts: 520                               Interrupts: 2074913
(Кол-во прерываний)
Transmit Errors: 0                            Receive Errors: 0
(Кол-во ошибок)
Packets Dropped: 0                            Packets Dropped: 0
(Отброшенных пакетов)
                                              Bad Packets: 0
                                              (Испорченных пакетов)
Max Packets on S/W Transmit Queue: 38
(Максимальное количество пакетов, отмеченное в программной очереди отправки)
S/W Transmit Queue Overflow: 0
(Количество переполнений программной очереди передачи)
Current S/W+H/W Transmit Queue Length: 1
(Текущая суммарная длина программной и аппаратной очереди передачи)

Broadcast Packets: 535                        Broadcast Packets: 997476
(Кол-во широковещательных пакетов)
Multicast Packets: 2                          Multicast Packets: 5477
(Кол-во multicast-пакетов)
No Carrier Sense: 0                           CRC Errors: 0
(Кол-во отсутствий физического соединения)    (Кол-во ошибок по CRC)
DMA Underrun: 0                               DMA Overrun: 0
(Кол-во переполнений DMA)
Lost CTS Errors: 0                            Alignment Errors: 0
(Кол-во потерь сигнала CTS)                   (Кол-во ошибок выравнивания)
Max Collision Errors: 0                       No Resource Errors: 0
(Максимальное кол-во ошибок из-за коллизий)   (Кол-во ошибок отсутствия ресурсов)
Late Collision Errors: 0                      Receive Collision Errors: 0
(Кол-во ошибок из-за поздних коллизий)        (Кол-во ошибок из-за коллизий на приеме)
Deferred: 0                                   Packet Too Short Errors: 0
(Кол-во задержанных пакетов)                  (Кол-во ошибок из-за слишком
                                               коротких пакетов)
SQE Test: 0                                   Packet Too Long Errors: 0
(Кол-во ошибочных SQE-тестов)                 (Кол-во ошибок из-за слишком
                                               длинных пакетов)
Timeout Errors: 0                             Packets Discarded by Adapter: 0
(Кол-во ошибок таймаута)                      (Кол-во пакетов, отвергнутых адаптером)
Single Collision Count: 0                     Receiver Start Count: 0
(Кол-во единичных коллизий)                   (Начало отсчета приемника)
Multiple Collision Count: 0
(Кол-во множественных коллизий)
Current HW Transmit Queue Length: 1
(Текущая длина аппаратной очереди передачи)

General Statistics:
(Общая статистика)
-------------------
No mbuf Errors: 0
(Кол-во ошибок из-за нехватки буферов mbuf)
Adapter Reset Count: 0
(Кол-во сбросов адаптера)
Adapter Data Rate: 200
(Скорость обмена адаптера)
Driver Flags: 
(Флаги драйвера) Up Broadcast Running
        Simplex AlternateAddress 64BitSupport
        ChecksumOffload PrivateSegment DataRateSet


10/100 Mbps Ethernet PCI Adapter II (1410ff01) Specific Statistics:
(Специфическая статистика адаптера)
--------------------------------------------------------------------
Link Status : up
(Состояние соединения)
Media Speed Selected: Auto negotiation
(Выбранный скоростной режим)
Media Speed Running: 100 Mbps Full Duplex
(Установившийся скоростной режим)
Receive Pool Buffer Size: 1024
(Размер приемного буфера)
No Receive Pool Buffer Errors: 0
(Кол-во ошибок из-за недоступности приемного буфера)
Receive Buffer Too Small Errors: 0
(Кол-во ошибок из-за нехватки приемного буфера)
Entries to transmit timeout routine: 0
(Кол-во входов с процедуру истечения таймаута передачи)
Transmit IPsec packets: 0
(Кол-во переданных IPsec-пакетов)
Transmit IPsec packets dropped: 0
(Кол-во отброшенных при передаче IPsec-пакетов)
Receive IPsec packets: 0
(Кол-во принятых IPsec-пакетов)
Receive IPsec packets dropped: 0
(Кол-во отброшенных при приеме IPsec-пакетов)
Inbound IPsec SA offload count: 0
(Кол-во аппаратных ускорений при приеме IPsec SA)
Transmit Large Send packets: 0
(Кол-во отправок больших пакетов)
Transmit Large Send packets dropped: 0
(Кол-во отброшенных при отправке больших пакетов)
Packets with Transmit collisions:
(Кол-во пакетов, при отправке которых возникали коллизии)
 1 collisions: 0           6 collisions: 0          11 collisions: 0
 2 collisions: 0           7 collisions: 0          12 collisions: 0
 3 collisions: 0           8 collisions: 0          13 collisions: 0
 4 collisions: 0           9 collisions: 0          14 collisions: 0
 5 collisions: 0          10 collisions: 0          15 collisions: 0

testsys:/home/test>

Вы не увидите большого числа коллизий, так как ваша сеть, скорее всего, построена на коммутаторах. Обратите внимание на количество ошибок при передаче – это значение не должно быстро возрастать. Перед тем, как приступать к тонкой настройке, вам необходимо научиться бороться с коллизиями и другими ошибками. Кстати, для вывода аналогичной информации возможно использовать и netstat с опцией -v.

Теперь обратимся к команде netpmon. Она выдает сведения о загрузке процессора, создаваемой сетевой подсистемой, о вводе-выводе в сетевом драйвере и о сокетных системных вызовах и другую статистику. Как и схожие утилиты для мониторинга в реальном времени – tprof и filemon, netpmon запускает мониторинг и работает в фоновом режиме до тех пор, пока вы не дадите команду trcstop. Лично я предпочитаю netpmon, так как она выдает очень подробную информацию о работе сети, а также захватывает трафик, который можно в дальнейшем проанализировать и определить его характер и динамику (хотя для захвата пакетов удобнее использовать nmon). В листинге 8 показан запуск мониторинга с размером буфера в 2 миллиона байт.

Листинг 8. Запуск команды netpmom с опцией -T
root@lpar7ml162f_pub[/etc] > netpmon -T 2000000 -o /tmp/net.out
Wed Sep  5 05:30:27 2007
System: AIX 5.3 Node: lpar7ml162f_pub Machine: 00C22F2F4C00

Run trcstop command to signal end of trace.

А теперь остановим процесс, как показано в листинге 9.

Листинг 9. Остановка netpmom
root@lpar7ml162f_pub[/etc] >
root@lpar7ml162f_pub[/etc] > trcstop
root@lpar7ml162f_pub[/etc] > [netpmon: Reporting started]

[netpmon: Reporting completed]
[               4 traced cpus               ]
[         245.464 secs total preempt time   ]

[netpmon: 164.813 secs in measured interval]

root@lpar7ml162f_pub[/etc] >

Посмотрим, что мы собрали. В листинге 10 приведен небольшой фрагмент собранных данных.

Листинг 10. Фрагмент сбора
# more net.out

Process CPU Usage Statistics:
(Статистика использования процессора по процессам)
-----------------------------
                                                   Network
Process (top 20)             PID  CPU Time   CPU %   CPU %
----------------------------------------------------------
UNKNOWN                    15920  151.2735  36.558   0.000
UNKNOWN                     7794  104.8801  25.346   0.000
UNKNOWN                     6876   73.8785  17.854   0.000
UNKNOWN                     5402   50.6225  12.234   0.000
xmwlm                      13934   15.0469   3.636   0.000
-ksh                        5040    0.0371   0.009   0.000
getty                      18688    0.0280   0.007   0.000
sshd:                      28514    0.0224   0.005   0.000
syncd                      10068    0.0212   0.005   0.000
gil                         3870    0.0163   0.004   0.004
swapper                        0    0.0135   0.003   0.000
spray                       5400    0.0085   0.002   0.000
send-mail                  18654    0.0084   0.002   0.000
rmcd                       15026    0.0081   0.002   0.000
ping                        5036    0.0068   0.002   0.000
ksh                        26642    0.0062   0.002   0.000
trcstop                     5404    0.0057   0.001   0.000
rpc.lockd                  22032    0.0052   0.001   0.000
mail                        6872    0.0039   0.001   0.000
IBM.ServiceRMd             28126    0.0032   0.001   0.000
----------------------------------------------------------
Total (all processes)             395.9176  95.681   0.004
Idle time                          70.3216  16.995

========================================================================

First Level Interrupt Handler CPU Usage Statistics:
(Статистика использования процессора обработчиком
прерываний первого уровня)
---------------------------------------------------
                                                   Network
FLIH                              CPU Time   CPU %   CPU %
----------------------------------------------------------
PPC decrementer                    18.4640   4.462   0.000
queued interrupt                    6.2882   1.520   0.000
external device                     0.6343   0.153   0.000
data page fault                     0.0220   0.005   0.000
----------------------------------------------------------
Total (all FLIHs)                  25.4085   6.140   0.000


TCP Socket Call Statistics (by Process):
(Статистика обращений к TCP-сокетам по процессам)
----------------------------------------
                                   ------ Read -----   ----- Write -----
Process (top 20)             PID   Calls/s   Bytes/s   Calls/s   Bytes/s
------------------------------------------------------------------------
sshd:                      28514      0.47      7754      0.65        40
sshd:                      29596      0.04       596      0.05         3
------------------------------------------------------------------------
Total (all processes)                 0.51      8350      0.70        43

========================================================================


NFSv3 Client RPC Statistics (by Server):
(Статистика RPC-обращений к NFSv3-клиентам по серверам)
----------------------------------------

Server                     Calls/s
----------------------------------
p650                          0.03
------------------------------------------------------------------------
Total (all servers)           0.03

========================================================================

PROCESS: ping   PID: 5036
reads:                  12
  read sizes (bytes):   avg 192.0   min 192     max 192     sdev 0.0
  read times (msec):    avg 7.927   min 7.136   max 12.806  sdev 1.496
writes:                 12
  write sizes (bytes):  avg 64.0    min 64      max 64      sdev 0.0
  write times (msec):   avg 0.052   min 0.039   max 0.063   sdev 0.007

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

Команда lsattr, использовавшаяся нами ранее для просмотра аппаратных параметров, также позволяет получить статистику интерфейсов. Атрибуты, показываемые chdev, настраиваются командами chdev или no. Выведем параметры драйвера, как показано в листинге 11.

Листинг 11. Вывод параметров драйвера командой lsattr
testsys:/home/testsys >lsattr -El en0
alias4               IPv4 Alias including Subnet Mask           True
                     (IPv4-псевдоним с маской подсети)
alias6               IPv6 Alias including Prefix Length         True
                     (IPv6-псевдоним с префиксом длины)
arp           on     Address Resolution Protocol (ARP)          True
                     (Протокол ARP)
authority            Authorized Users                           True
                     (Авторизированные пользователи)
broadcast            Broadcast Address                          True
                     (Широковещательный адрес)
mtu           1500   Maximum IP Packet Size for This Device     True
                     (Максимальный размер пакета для данного устройства)
netaddr              Internet Address                           True
                     (Интернет-адрес)
netaddr6             IPv6 Internet Address                      True
                     (Интернет-адрес IPv6)
netmask              Subnet Mask                                True
                     (Маска подсети)
prefixlen            Prefix Length for IPv6 Internet Address    True
                     (Длина префикса для адресов IPv6)
remmtu        576    Maximum IP Packet Size for REMOTE Networks True
                     (Максимальный размер пакета для удаленных сетей)
rfc1323              Enable/Disable TCP RFC 1323 Window Scaling True
                     (Включить/выключить регулировку окна TCP по RFC 1323)
security      none   Security Level                             True
                     (Уровень безопасности)
state         detach Current Interface Status                   True
                     (Текущее состояние интерфейса)
tcp_mssdflt          Set TCP Maximum Segment Size               True
                     (Максимальный размер TCP-сегмента)
tcp_nodelay          Enable/Disable TCP_NODELAY Option          True
                     (Включить/выключить опцию TCP_NODELAY)
tcp_recvspace        Set Socket Buffer Space for Receiving      True
                     (Размер сокетного буфера на прием)
tcp_sendspace        Set Socket Buffer Space for Sending        True
                     (Размер сокетного буфера на отправку)
testsys:/home/testsys>

Для устранения различных проблем я также люблю пользоваться командой spray. Эта команда посылает с вашей машины однонаправленный поток пакетов на удаленные машины, после чего выдает количество переданных пакетов и скорость передачи (см. листинг 12).

Листинг 12. Работа команды spray
root@lpar7ml162f_pub[/etc] > /usr/etc/spray lpar8test  -c 2000 -l 1400 -d 1
sending 2000 packets of length 1402 to
        lpar8test ...

        34 packets (1.700%) dropped by lpar8test
        23667 packets/second, 33181234 bytes/second
root@lpar7ml162f_pub[/etc] >

В приведенном примере было послано 2000 пакетов на машину lpar8test с задержкой в 1 микросекунду. Каждый пакет имел размер 1400 байт. Перед запуском spray убедитесь, что демон sprayd не закомментирован в настройках inetd (по умолчанию в AIX это так). Раскомментировав нужную строку, не забудьте заставить inetd перечитать настройки. Если вы видите много отброшенных пакетов, с вашей сетью что-то не так.

И в заключение давайте взглянем на утилиту nmon, работа которой показана в листинге 13.

Листинг 13. Утилита nmon
?nmon????????p=Partitions???????Host=lpar7ml162f_pubRefresh=2 secs???05:43.15?????????
? Network ????????????????????????????????????????????????????????????????????????????
?I/F Name Recv=KB/s Trans=KB/s packin packout insize outsize Peak->Recv Trans     ?
?    en1     2.1     0.0      46.3      0.0    46.0    0.0        2.1     0.0        ?
?    en0    43.8     0.3     575.2      0.5    77.9  674.0       43.8     0.6        ?
?    lo0     0.0     0.0       0.0      0.0     0.0    0.0        0.0     0.0        ?
?  Total     0.0     0.0 in Mbytes/second                                            ?
?I/F Name  MTU  ierror oerror collision Mbits/s Description                          ?
?    en1   1500      0      0      0   2047 Standard Ethernet Network Interface      ?
?    en0   1500      0      0      0   2047 Standard Ethernet Network Interface      ?
?    lo0  16896      0      0      0      0 Loopback Network Interface

Если вы уже знакомы с другими моими статьями об AIX (см. раздел Ресурсы), вы, наверное, заметили, что я очень люблю команду nmon – да вы сами наверняка ее полюбите, начав использовать. Если нажать n после запуска nmon, то вашему взору предстанет удобная картина всего, что связано с сетью, включая детальные сведения об адаптерах, MTU, счетчики ошибок и коллизий, скорости в мегабитах.

Кроме этого, nmon позволяет захватывать сетевой трафик. Анализатор nmon "умеет" создавать удобные графические отчеты в формате Microsoft® Excel. В разделе Ресурсы вы найдете ссылку на Wiki от IBM, которая содержит руководство по использованию утилиты и разные файлы для загрузки.

Резюме

В статье было продемонстрировано, насколько важной является сетевая подсистема. Были описаны логические уровни сетевой подсистемы AIX и их соответствие модели OSI. Вы освоили некоторые рекомендуемые методики конфигурирования сети, научились изменять настройки Ethernet (включать jumbo-кадры) и просматривать информацию о сетевом адаптере и драйвере. Мы попробовали утилиты для контроля за сетью – netpmon и nmon – и провели с их помощью мониторинг в реальном времени. В следующей части этой серии статей вы научитесь настраивать NFS и овладеете различными утилитами для мониторинга, такими как nfsstat и nmon, а также откроете для себя настройку NFS при помощи nfso.

Ресурсы

Научиться

Получить продукты и технологии

  • Разработайте ваш следующий проект с помощью пробного ПО от IBM (EN), которое можно загрузить прямо с developerWorks.

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=AIX и UNIX
ArticleID=422257
ArticleTitle=Оптимизация производительности AIX 5L: Часть 1.Настройка сетевой производительности
publish-date=08202009