[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Руководство по настройке производительности


Анализ производительности сети

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

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

Настройка параметров сети и NFS для увеличения производительности выполняется командами no и nfso. Кроме того, часть параметров настраивается командами chdev и ifconfig.

Команда ping

Команда ping применяется для:

Опции команды ping, связанные с настройкой производительности:

-c
Задает число пакетов. Эта опция полезна для получения протокола трассировки IP-пакетов. Будет получено указанное число пакетов ping.

-s
Задает длину пакетов. Эта опция применяется для проверки работы фрагментации и повторной сборки.

-f
Отправляет пакеты через интервал в 10 мс или немедленно после очередного ответа. Эта опция может быть указана только пользователем root.

Опция -f часто применяется для перегрузки сети и подключенных к ней систем. Например, если вы подозреваете, что проблемы производительности вызваны высокой нагрузкой, вы можете искусственно перегрузить сеть для подтверждения этой гипотезы. Откройте несколько окон aixterm и запустите в каждом из них команду ping -f. Нагрузка на адаптер Ethernet быстро достигнет 100 процентов. Пример приведен ниже:

# date ; ping -c 1000 -f wave ; date
пятница 23 июля 1999 г. 11.52.39
PING wave.austin.ibm.com: (9.53.153.120): 56 байт данных
.
----wave.austin.ibm.com PING Статистика----
1000 пакетов передано, 1000 пакетов получено, 0% пакетов потеряно
время обхода мин/сред/макс = 1/1/23 мс
пятница 23 июля 1999 г. 11.52.42

Примечание: Эту команду следует использовать с осторожностью - она может серьезно нарушить работу сети. Она может быть вызвана только пользователем root.

В этом примере 1000 пакетов были отправлены за 3 секунды. Учтите, что данная команда применяет протокол (ICMP) и, таким образом, не задействует транспортный протокол (UDP/TCP) и интерфейс приложений. Измеренные данные, такие как время обхода, не отражают полной производительности.

При попытке перегрузить соединение с удаленной системой учтите следующее:

Команда ftp

С помощью ftp вы можете передать очень большой объем данных, указав /dev/zero в качестве ввода и /dev/null в качестве вывода. Это позволяет избежать использования дисков (ограничивающих пропускную способность) и кэширования всего передаваемого файла в памяти.

Введите следующие команды ftp (при необходимости увеличьте или уменьшите число блоков, считываемых командой dd):

> bin
> put "|dd if=/dev/zero bs=32k count=10000" /dev/null

Учтите, что после изменения параметров TCP, перед повторным запуском команды ftp для проверки необходимо обновить настройку демона inetd командой refresh -s inetd.

Убедитесь в том, что параметры tcp_senspace и tcp_recvspace не меньше 65535 для "гигантских кадров" и Gigabit Ethernet и ATM с MTU 9180 или больше.

Пример задания параметров приведен ниже:

# no -o tcp_sendspace=65535
# no -o tcp_recvspace=65535
# refresh -s inetd
0513-095 Запрос на обновление подсистемы успешно выполнен. 

Соответствующие команды ftp:

ftp> bin
200 Type set to I.
ftp> put "|dd if=/dev/zero bs=32k count=10000" /dev/null
200 PORT command successful.
150 Opening data connection for /dev/null.
10000+0 records in
10000+0 records out
226 Transfer complete.
327680000 bytes sent in 8.932 seconds (3.583e+04 Kbytes/s)
local: |dd if=/dev/zero bs=32k count=10000 remote: /dev/null
ftp> quit
221 Goodbye.

Команда netstat

Обычно для проверки состояния сети используется команда netstat. Эта команда более полезна для устранения неполадок, чем для измерения производительности. Однако, команда netstat может применяться для подтверждения сетевого характера проблем производительности.

Команда netstat показывает следующую информацию о передаче данных через сетевые интерфейсы:

Применение команды netstat

Команда netstat показывает содержимое различных структур, связанных с активными сетевыми соединениями. В этом разделе обсуждаются только опции, связанные с производительностью сети. Информация о других опциях и столбцах приведена в AIX 5L Version 5.1 Commands Reference.

netstat -i

Показывает состояние всех настроенных интерфейсов.

В следующем примере показана статистика для рабочей станции с интегрированным адаптером Ethernet и Token-Ring:

# netstat -i
Имя   Mtu   Сеть        Адрес              Ipkts Ierrs    Opkts Oerrs  Coll
lo0   16896 <Link>                         144834     0   144946     0     0
lo0   16896 127         localhost          144834     0   144946     0     0
tr0   1492  <Link>10.0.5a.4f.3f.61         658339     0   247355     0     0
tr0   1492  9.3.1       ah6000d            658339     0   247355     0     0
en0   1500  <Link>8.0.5a.d.a2.d5                0     0      112     0     0
en0   1500  1.2.3       1.2.3.4                 0     0      112     0     0

Статистика собирается с момента запуска системы.

Имя
Название интерфейса.

Mtu
Максимальный блок передачи. Максимальный размер, в байтах, передаваемого через интерфейс пакета.

Ipkts
Полное число полученных пакетов.

Ierrs
Полное число ошибок ввода. В это число входят неправильно оформленные пакеты, неправильные контрольные суммы, а также случаи переполнения буфера драйвера устройства.

Opkts
Полное число переданных пакетов.

Oerrs
Полное число ошибок вывода. В это число входят сбои при установлении соединения и переполнения очереди вывода.

Coll
Число обнаруженных конфликтов передачи.

Примечание: Команда netstat -i не поддерживает обнаружение конфликтов для интерфейсов Ethernet (см. Команда entstat).

Ниже приведены рекомендации по настройке:

netstat -i -Z

Данная функция команды netstat очищает все счетчики команды netstat -i.

netstat -I интерфейс интервал

Показывает статистику работы указанного интерфейса. Будет показана та же информация, что и для команды netstat -i, но для указанного интерфейса за указанный интервал времени. Пример:

# netstat -I en0 1
    ввод    (en0)      вывод            ввод    (Все)      вывод
   пакетов ошибок пакетов ошибок конфл. пакетов ошибок пакетов ошибок конфл.
       0     0       27     0     0   799655     0   390669     0     0
       0     0        0     0     0        2     0        0     0     0
       0     0        0     0     0        1     0        0     0     0
       0     0        0     0     0       78     0      254     0     0
       0     0        0     0     0      200     0       62     0     0
       0     0        1     0     0        0     0        2     0     0

В предыдущем примере показан вывод команды netstat -I для интерфейса ent0. Параллельно выводятся два отчета: для указанного интерфейса и для всех доступных интерфейсов (Все). Все поля соответствуют выводу команды netstat -i; например, ввод, пакетов = Ipkts, ввод, ошибок = Ierrs и т.п.

netstat -m

Показывает статистику функций управления буферами. Наиболее полезная часть вывода команды netstat -m - это счетчики, показывающие число отклоненных запросов буферов, и ненулевые значения в столбце числа отказов. Число отклоненных запросов буферов может быть не показано в многопроцессорной системе начиная с версии 4.3.2 - для увеличения производительности в таких системах сбор глобальной статистики по умолчанию отключен. Для включения сбора глобальной статистики присвойте параметру extended_netstats команды no значение 1. Для этого измените файл /etc/rc.net и перезапустите систему.

Вывод команды netstat -m с параметром extended_netstats, равным 1, показан ниже:

# netstat -m
29 буферов занято:
16 страниц кластеров буферов занято
71 Кб выделено для буферов
0 отклоненных запросов буферов
0 вызовов процедур преобразования протоколов
 
Статистика выделения памяти ядром:
 
******* CPU 0 *******
Размер       занято   вызовов отказов отложено свободно  hiwat освобождено
32              419    544702      0         0     221     800       0
64              173     22424      0         0      19     400       0
128             121     37130      0         0     135     200       4
256            1201 118326233      0         0     239     480     138
512             330    671524      0         0      14      50      54
1024             74    929806      0         0      82     125       2
2048            384   1820884      0         0       8     125    5605
4096            516   1158445      0         0      46     150      21
8192              9      5634      0         0       1      12      27
16384             1      2953      0         0      24      30      41
32768             1         1      0         0       0    1023       0
 
Тип          занято вызовов отказов отложено memuse  memmax  mapb
 
Отказы статистики блоков:
0 отказов блоков с высоким приоритетом
0 отказов блоков со средним приоритетом
0 отказов блоков с низким приоритетом

Если сбор глобальной статистики выключен, для определения полного числа отклоненных запросов буферов сложите числа в строке числа отказов для каждого процессора. Если команда netstat -m показывает наличие не выполненных или отклоненных запросов буферов или кластеров, увеличьте число thewall командой no -o thewall=новое значение. Более подробная информация о параметрах thewall и maxmbuf приведена в разделе Обзор средства управления буферами.

Начиная с AIX версии 4.3.3 добавлен столбец отложено. При запросе буферов с флагом M_WAIT, если буферы недоступны, нить приостанавливается до освобождения необходимых буферов. В этом случае увеличивается не счетчик отказов, а счетчик отложенных запросов. До версии AIX 4.3.3 счетчик отказов также не увеличивался, но число отложенных запросов не выводилось.

Рекомендуется увеличить значение thewall, если выделено больше 85 процентов от значения thewall. После увеличения значения thewall проверьте командой vmstat, не привело ли уменьшение объема свободной памяти к уменьшение производительности.

Если буферы будут недоступны при получении запроса, запрос скорее всего будет потерян (информация о пакетах, отброшенных адаптером, приведена в разделе Статистика работы адаптера). Учтите, что запрос, переведенный в состояние ожидания, не считается отклоненным.

Если число не выполненных запросов продолжает увеличиваться, возможна утечка буферов. Для локализации неполадки укажите в параметре net_malloc_police команды no значение 1, либо воспользуйтесь точкой трассировкой 254 и командой trace.

После выделения и закрепления буферов и кластеров они могут быть освобождены приложением. Вместо открепления буфера и возврата его в систему он помещается в список свободных, зависящий от размера буфера. При следующем запросе буфера он берется из списка, благодаря чему экономится время закрепления страниц. Если число буферов в списке свободных достигает максимальной отметки, буферы размером 4096 объединяются в блоки, состоящие из целого числа страниц для возврата системе. При возврате буферов системе увеличивается счетчик освобожденных буферов. Если число освобожденных буферов непрерывно увеличивается, максимальная отметка слишком низка. В AIX начиная с версии 4.3.2 максимальная отметка изменяется в соответствии с объемом оперативной памяти в системе.

netstat -v

Команда netstat -v показывает статистику работы всех драйверов устройств CDLI системы. Информацию для отдельных интерфейсов можно получить командами tokstat, entstat, fddistat и atmstat.

Существует отдельная статистика для каждого интерфейса, а также общая статистика работы всей системы. В следующем примере показаны части вывода команды netstat -v, относящиеся к адаптерам Token-Ring и Ethernet; остальная часть вывода общая. Значения, выводимые для разных адаптеров, незначительно отличаются. Наиболее важные поля выделены.

# netstat -v
-------------------------------------------------------------
Статистика Ethernet (ent0) :
Тип устройства: Адаптер Ethernet PCI 10/100 Мб/с фирмы IBM (23100020)
Аппаратный адрес: 00:60:94:e9:29:18
Прошедшее время: 9 дней 19 часов 5 минут 51 секунд
 
Статистика по передаче:                       Статистика по приему:
--------------------                          -------------------
Пакетов: 0                                    Пакетов: 0
Байт: 0                                       Байт: 0
Прерываний: 0                                 Прерываний: 0
Ошибки передачи: 0                            Ошибки приема: 0
Отброшено пакетов: 0                          Отброшено пакетов: 0
                                              Пакеты с ошибками: 0
Максимальное число пакетов в программной очереди передачи: 0
Переполнений программной очереди передачи: 0
Текущая длина программной и аппаратной очереди передачи: 0
 
Пакетов оповещения: 0                         Пакетов оповещения: 0
Многоцелевые пакеты: 0                        Многоцелевые пакеты: 0
Несущая частота не обнаружена: 0              Ошибка CRC: 0
Выход за нижнюю границу DMA: 0                Выход за верхнюю границу DMA: 0
Ошибки потери CTS: 0                          Ошибки выравнивания: 0
Максимум конфликтов: 0                        Ошибок недостатка ресурсов: 0
Поздних конфликтов: 0                         Конфликтов при получении: 0
Отложено: 0                                   Слишком коротких пакетов: 0
Проверка SQE: 0                               Слишком длинных пакетов: 0
Тайм-аутов: 0                                 Пакетов отклонено адаптером: 0
Одиночных конфликтов: 0                       Попыток получения: 0
Множественных конфликтов: 0
Текущая длина аппаратной очереди передачи: 0
 
Общая статистика:
-------------------
Ошибок недостатка буферов: 0
Число перезапусков адаптера: 0
Флаги драйвера: Up Broadcast Running
        Simplex 64BitSupport PrivateSegment
 
Статистика адаптера IBM 10/100 Мбит/с Ethernet:
------------------------------------------------
Версия микросхемы: 25
Состояние порта RJ45: выключен
Выбранная скорость носителя: 10 Мбит/с полудуплекс
Текущая скорость носителя: Неизвестна
Размер буфера приема: 384
Свободных буферов приема: 128
Ошибок отсутствия буферов приема: 0
Промежуток между пакетами: 96
Число перезапуском адаптера командами IOCTL: 0
Конфликтов при передаче пакетов:
 1 конфликт: 0             6 конфликтов: 0          11 конфликтов: 0
 2 конфликта: 0            7 конфликтов: 0          12 конфликтов: 0
 3 конфликта: 0            8 конфликтов: 0          13 конфликтов: 0
 4 конфликта: 0            9 конфликтов: 0          14 конфликтов: 0
 5 конфликтов: 0          10 конфликтов: 0          15 конфликтов: 0
Длительных ожиданий: 0x0
-------------------------------------------------------------
Статистика Token-Ring (tok0) :
Тип устройства: Адаптер IBM PCI Token-Ring (14103e00)
Аппаратный адрес: 00:20:35:7a:12:8a
Прошедшее время: 29 дней 18 часов 3 минут 47 секунд
 
Статистика по передаче:                       Статистика по приему:
--------------------                          -------------------
Пакетов: 1355364                              Пакетов: 55782254
Байт: 791555422                               Байт: 6679991641
Прерываний: 902315                            Прерываний: 55782192
Ошибок передачи: 0                            Ошибок приема: 1
Отброшено пакетов: 0                          Отброшено пакетов: 0
                                              Пакеты с ошибками: 0
Макимальное число пакетов в программной очереди передачи: 182
Переполнений программной очереди передачи: 42
Текущая длина программной и аппаратной очереди передачи: 0
 
Пакетов оповещения: 18878                     Пакетов оповещения: 54615793
Многоцелевых пакетов: 0                       Многоцелевых пакетов: 569
Тайм-аутов: 0                                 Ошибок накопления при приеме: 0
Текущая длина программной очереди передачи: 0
Текущая длина аппаратной очереди передачи: 0
 
Общая статистика:
-------------------
Ошибок недостатка буферов: 0                  Ошибок сдвоенного кабеля: 0
Ошибок прерывания: 12                         Ошибок AC: 0
Серийных ошибок: 1                            Ошибок копирования кадра: 0
Ошибок частоты: 0                             Аппаратных ошибок: 0
Внутренних ошибок: 0                          Ошибок линии: 0
Потерянных кадров: 0                          Нет других станций: 1
Ошибок маркеров: 0                            Удалений полученной информации: 0
Обнаружено циклов: 17                         Потерь сигнала: 0
Программных ошибок: 35                        Ошибок сигнала: 0
Флаги драйвера: Up Broadcast Running
        AlternateAddress 64BitSupport ReceiveFunctionalAddr
        16 Мбит/с
 
Статистика адаптера IBM PCI Token-Ring (14103e00):
---------------------------------------------------------
Текущая скорость носителя: 16 Мбит/с Полудуплекс
Выбранная скорость носителя: 16 Мбит/с Дуплекс
Переполнений при получении: 0
Опустошений буфера при передаче: 0
Ошибок ARI/FCI: 0
Уровень микрокода адаптера:001PX11B2
Число пакетов в программной приоритетной очереди передачи: 0
Число пакетов в аппаратной приоритетной очереди передачи: 0
Уровень открытого встроенного программного обеспечения: 001PXRS02

Значения выделенных полей:

Для локализации проблем производительности сети проверьте число Ошибок в выводе команды netstat -v.

Дополнительные рекомендации:

Протокол netstat -p

Показывает статистику значений переменных протокола (udp, tcp, ip, icmp); можно указать либо имя протокола, либо его псевдоним. Некоторые имена и псевдонимы протоколов указаны в файле /etc/protocols. Пустой ответ означает отсутствие указанных чисел. Если функция статистики для протокола отсутствует, значение переменной протокола считается неизвестным.

В следующем примере показан вывод для протокола ip:

# netstat -p ip
ip:
:
        491351 пакетов получено всего
        0 неправильных контрольных сумм заголовка
        0 с размером меньше минимального
        0 с размером данных < длины данных
        0 с длиной заголовка < размера данных
        0 с длиной данных < длины заголовка
        0 с неправильными параметрами
        0 с неправильным номером версии
        25930 фрагментов получено
        0 фрагментов отброшено (повторы или выход за границы)
       0 фрагментов отброшено после тайм-аута
        12965 пакетов успешно собрано
        475054 пакетов для данного хоста
        0 пакетов для неизвестного/неподдерживаемого протокола
        0 пакетов переслано
        3332 пакетов не удалось переслать
        0 перенаправлений отправлено
        405650 пакетов отправлено этим хостом
        0 пакетов отправлено с подделанным заголовком ip
        0 исходящих пакетов отброшено из-за отсутствия буферов и пр.
        0 исходящих пакетов отброшено из-за невозможности маршрутизации
        5498 исходящих дейтаграмм фрагментировано
        10996 фрагментов создано
        0 дейтаграмм не может быть фрагментировано
        0 отброшено многоцелевых пакетов IP из-за отсутствия получателя
        0 переполнений ipintrq

Значения выделенных полей:

При просмотре статистики протокола IP обратите внимание на отношение числа полученных пакетов к числу полученных фрагментов. Для сетей с небольшим MTU не должно фрагментироваться больше 10 процентов пакетов. Большое число фрагментов означает, что протоколы более высокого уровня в удаленных хостах передают данные блоками, превышающими MTU интерфейса. Кроме того, фрагментация может происходить на маршрутизаторах и шлюзах. Те же рекомендации относятся к отношению чисел отправленных пакетов и созданных фрагментов.

Фрагментация увеличивает нагрузку на процессор, поэтому важно определить ее причину. Учтите, что фрагментация неизбежна при работе некоторых приложений. Например, фрагментация происходит, если приложение отправляет данные небольшими порциями. Однако, если фрагментация происходит несмотря на то, что приложение отправляет данные большими блоками, найдите причину такого поведения. Возможно, указанный размер MTU интерфейса не совпадает с размером MTU удаленных систем.

В следующем примере показан пример вывода для протокола udp:

# netstat -p udp
udp:
        11521194 дейтаграмм получено
        0 неполных заголовков
        0 полей неправильной длины
       0 неправильных контрольных сумм
        16532 пакетов отброшено из-за отсутствия сокета
        232850 дейтаграмм оповещения и многоцелевых отброшено из-за отсутствия сокета
       77 переполнений буфера сокета
        11271735 доставлено
        796547 дейтаграмм отправлено

Значения выделенных полей:

Если команда netstat -p udp показывает наличие переполнений буферов сокетов, рекомендуется увеличить число демонов nfsd. Сначала проверьте, не перегружен ли процессор или ввод-вывод системы, затем проверьте настройки других уровней связи командой no -a. Если система перегружена, необходимо либо уменьшить нагрузку, либо модернизировать систему.

В следующем примере показан пример вывода для протокола tcp:

# netstat -p tcp
tcp:
        63726 пакетов отправлено
                34309 пакетов данных (6482122 байт)
                198 пакетов данных (161034 байт) отправлено повторно
                17437 пакетов уведомления (7882 отложено)
                0 срочных пакетов
                0 пакетов проверки окна
                3562 пакетов обновления окна
                8220 управляющих пакетов
        71033 пакетов получено
                35989 уведомлений (для 6444054 байт)
                2769 повторных уведомлений
                0 лишних уведомлений
                47319 пакетов (19650209 байт) получено в правильном порядке
                182 полностью повторных пакетов (29772 байт)
                4 пакетов с повторными данными (1404 байт повторены)
                2475 пакетов в неправильном порядке (49826 байт)
                0 пакетов (0 байт) данных после окна
                0 проверок окна
                800 пакетов обновления окна
                77 пакетов получено после закрытия
                0 пакетов с неправильной аппаратной контрольной суммой
                0 отброшено из-за неправильной контрольной суммы
                0 отброшено из-за неправильных полей заголовка
        0 запросов установления соединения
        3125 запросов установления соединения
        1626 разрешений установления соединения
        4731 соединений установлено (включая разрешения)
        5543 соединений закрыто (включая 31 отброшенных)
        62 неполных соединений отброшено
        38552 сегментов обновлено (38862 попыток)
        0 повторных передач, связанных с вычислением MTU маршрута
        3 прерываний вычисления MTU маршрута, связанных с повторной передачей
        553 тайм-аутов повторной передачи
                28 соединений отброшено из-за тайм-аута повторной передачи
        0 постоянных тайм-аутов
        464 тайм-аутов времени жизни
                26 проверок времени жизни отправлено
                1 соединений отброшено по времени жизни
        0 соединений использовано повторно
        0 отложенных уведомлений для SYN
        0 отложенных уведомлений для FIN
        0 отправок с отсоединением

Значения выделенных полей:

Сравните число отправленных пакетов с числом повторно отправленных пакетов. Если число повторно отправленных пакетов превышает 10-15 процентов от полного числа пакетов, происходят тайм-ауты TCP; возможно, они вызваны слишком высокой нагрузкой на сеть для передачи уведомлений до наступления тайм-аута. Повторные передачи TCP могут также быть вызваны перегрузкой принимающего узла, либо общими проблемами производительности сети; повторные передачи сами по себе увеличивают поток данных и нагрузку на сеть.

Кроме того, сравните число полученных пакетов с числом полностью повторных пакетов. Если после отправки пакета происходит тайм-аут ожидания подтверждения, пакет передается повторно. При этом другая сторона может получить все переданные копии пакета. Если число повторных пакетов превышает 10-15 процентов, возможно, сеть или принимающий узел перегружен. Повторные передачи пакетов также увеличивают поток данных в сети.

Тайм-аут повторной передачи регистрируется, если узел отправил пакет, но не получил подтверждение за заданное время. При этом выполняется повторная передача пакета. Это значение увеличивается для каждой повторной передачи. Повторные передачи увеличивают нагрузку на CPU; если подтверждение так и не будет получено, пакет будет отброшен.

netstat -s

Команда netstat -s показывает статистику для каждого протокола (в то время как команда netstat -p показывает статистику только для указанного протокола).

netstat -s -s

Недокументированная опция -s -s показывает только ненулевые строки вывода команды netstat -s, упрощая анализ ошибок.

netstat -s -Z

Это недокументированная функция команды netstat. Она очищает все счетчики команды netstat -s.

netstat -r

Другая опция, связанная с производительностью - это вычисленный MTU маршрута (PMTU).

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

Значение MTU маршрута можно вывести командой netstat -r. В следующем примере команда netstat -r -f inet применяется для просмотра только таблиц маршрутизации:

# netstat -r -f inet
Таблицы маршрутизации
Цель             Шлюз              Флаги   Ссылки  ЧастотаPMTU Инт Срок Группы
 
Дерево маршрутов для семейства протоколов 2:
default          itsorusi          UGc       1      348   -   tr0   -
9.3.1            sv2019e           Uc       25    12504   -   tr0   -
itsonv           sv2019e           UHW       0      235   -   tr0   -
itsorusi         sv2019e           UHW       1      883  1492 tr0   -
ah6000d          sv2019e           UHW       1      184  1492 tr0   -
ah6000e          sv2019e           UHW       0      209   -   tr0   -
sv2019e          sv2019e           UHW       4    11718  1492 tr0   -
coyote.ncs.mainz itsorusi          UGHW      1       45  1492 tr0   -
kresna.id.ibm.co itsorusi          UGHW      0       14  1492 tr0   -
9.184.104.111    kresna.id.ibm.com UGc       0        5   -    tr0   -
127              localhost         U         3       96  -    lo0   -

netstat -D

Опция -D позволяет узнать число пакетов, получаемых каждым из уровней сетевой подсистемы, а также число отброшенных пакетов на каждом уровне.

# netstat -D
 
Источник                       Ipkts                Opkts     Idrops     Odrops
-------------------------------------------------------------------------------
tok_dev0                    19333058               402225          3          0
ent_dev0                           0                    0          0          0
                ---------------------------------------------------------------
Всего для устройств         19333058               402225          3          0
-------------------------------------------------------------------------------
tok_dd0                     19333055               402225          0          0
ent_dd0                            0                    0          0          0
                ---------------------------------------------------------------
Всего для драйверов         19333055               402225          0          0
-------------------------------------------------------------------------------
tok_dmx0                      796966                  N/A   18536091        N/A
ent_dmx0                           0                  N/A          0        N/A
                ---------------------------------------------------------------
Всего для демультиплексоров   796966                  N/A   18536091        N/A
-------------------------------------------------------------------------------
IP                            694138               677411       7651       6523
TCP                           143713               144247          0          0
UDP                           469962               266726          0        812
                ---------------------------------------------------------------
Всего для протоколов         1307813              1088384       7651       7335
-------------------------------------------------------------------------------
lo_if0                         22088                22887        799          0
tr_if0                        796966               402227          0        289
                ---------------------------------------------------------------
Всего для интерфейсов         819054               425114        799        289
-------------------------------------------------------------------------------
                ---------------------------------------------------------------
Всего для NFS/RPC                N/A                 1461          0          0
-------------------------------------------------------------------------------
(Примечание:  N/A -> Не применимо)

Уровень устройств показывает число пакетов, получаемых и передаваемых адаптером, а также отброшенных при приеме и передаче. Существуют различные причины ошибок адаптера, для получения более подробной информации проанализируйте вывод команды netstat -v.

Уровень драйверов показывает число пакетов, полученных драйвером устройства для каждого адаптера. Для определения причин ошибок запустите команду netstat -v.

Значения для демультиплексоров показывают число пакетов на уровне демультиплексоров, а ненулевое значение в столбце Idrops обычно указывает на отклонение определенных пакетов при фильтрации (например, пакеты Netware и DecNet не поддерживались и отклонялись системой в примере).

Более подробную информацию об уровне протоколов можно получить командой netstat -s.

Примечание: В выводимой статистике N/A означает, что соответствующий параметр не применим к уровню. Для статистики NFS/RPC все входящие пакеты RPC проходят через NFS, поэтому данные числа не складываются, поэтому в поле Всего для NFS/RPC стоит N/A. NFS не поддерживает счетчики исходящих пакетов и отброшенных исходящих пакетов отдельно для NFS и RPC. Поэтому в полях для отдельных счетчиков стоит N/A, а полное значение показано в поле Всего для NFS/RPC.

Команда netpmon

Команда netpmon выводит подробную информацию о работе сети в течение заданного интервала времени, собранную функцией трассировки. Поскольку команда netpmon вызывает функцию трассировки, ее разрешено запускать только пользователю root и членам группы system.

Кроме того, команду netpmon нельзя запускать с другими командами сбора данных, использующими функцию трассировки, например, tprof и filemon. Как правило, команда netpmon выполняется в фоновом режиме, отслеживая работу параллельно выполняющихся приложений и системных команд.

Команда netpmon собирает следующую информацию о работе системы:

Вычисляются следующие значения:

Для того чтобы узнать, установлена ли в системе команда netpmon, вызовите следующую команду:

# lslpp -lI perfagent.tools

Команда netpmon включает функцию трассировки, которую можно временно выключить с помощью подкоманды trcoff, снова включить с помощью подкоманды trcon или выключить с помощью подкоманды trcstop. После выключения трассировки команда netpmon записывает свой отчет в стандартный вывод.

Работа с командой netpmon

Если не указана опция -d, команда netpmon сразу же включает функцию трассировки. Для того чтобы выключить трассировку, вызовите команду trcstop. После выключения трассировки команда netpmon создаст все перечисленные отчеты и завершит свою работу. В среде клиент-сервер команда netpmon позволяет узнать, каким образом передача данных по сети влияет на общую производительность системы. Ее можно запустить как на клиенте, так и на сервере.

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

Вначале файл трассировки должен быть обработан командой trcrpt -r. Вывод команды должен быть перенаправлен в другой файл:

# gennames > gennames.out
# trcrpt -r trace.out > trace.rpt

Преобразованный файл трассировки можно передать команде netpmon для создания отчета об операциях ввода-вывода, зарегистрированных в ходе трассировки:

# netpmon -i trace.rpt -n gennames.out | pg

В данном примере команда netpmon считывает информацию, собранную функцией трассировки, из файла ввода trace.rpt. Поскольку данные трассировки уже находятся в файле, команда netpmon не переходит в фоновый режим. После того как будут считаны все данные из файла, команда создает отчеты о работе сети и записывает их в стандартный вывод (в данном примере - передает их на вход команде pg).

Если команда trace была запущена с флагом -C all, команду trcrpt также следует запустить с флагом -C all (см. Форматирование вывода команды trace -C).

Ниже приведен пример команды netpmon, запущенной на сервере NFS, которая вызывает команду sleep и создает отчет через 400 секунд. В течение работы команды в системе выполняется копирование смонтированной файловой системы NFS /nfs_mnt.

# netpmon -o netpmon.out -O all; sleep 400; trcstop

С опцией -O можно задать тип отчета, который должен быть создан. Существуют следующие типы отчетов:

cpu
Использование процессора

dd
Операции ввода-вывода драйвера сетевого устройства

so
Чтение и запись данных через сокет Internet

nfs
Операции ввода-вывода NFS

all
Все виды отчетов. Это значение применяется по умолчанию.

# cat netpmon.out
 
Четверг 21 января 2000 г. 15.02.45
Система: AIX itsosmp Узел: 4 Компьютер: 00045067A000
Интервал измерения: 401,053 секунды
========================================================================
Статистика использования CPU процессами:
-----------------------------
                                                   Сеть
Процессы (20 первых)         PID  Время CPU  CPU %   CPU %
----------------------------------------------------------
nfsd                       12370   42.2210   2.632   2.632
nfsd                       12628   42.0056   2.618   2.618
nfsd                       13144   41.9540   2.615   2.615
nfsd                       12886   41.8680   2.610   2.610
nfsd                       12112   41.4114   2.581   2.581
nfsd                       11078   40.9443   2.552   2.552
nfsd                       11854   40.6198   2.532   2.532
nfsd                       13402   40.3445   2.515   2.515
lrud                        1548   16.6294   1.037   0.000
netpmon                    15218    5.2780   0.329   0.000
gil                         2064    2.0766   0.129   0.129
trace                      18284    1.8820   0.117   0.000
syncd                       3602    0.3757   0.023   0.000
swapper                        0    0.2718   0.017   0.000
init                           1    0.2201   0.014   0.000
afsd                        8758    0.0244   0.002   0.000
bootpd                      7128    0.0220   0.001   0.000
ksh                         4322    0.0213   0.001   0.000
pcimapsvr.ip               16844    0.0204   0.001   0.000
netm                        1806    0.0186   0.001   0.001
----------------------------------------------------------
Всего (все процессы)              358.3152  22.336  20.787
Время простоя                    1221.0235  76.114
 
========================================================================
Статистика использования CPU обработчиком прерываний первого уровня:
---------------------------------------------------
                                                   Сеть
FLIH                              Время CPU  CPU %   CPU %
----------------------------------------------------------
уменьшение PPC                      9.9419   0.620   0.000
внешнее устройство                  4.5849   0.286   0.099
неизвестно                          0.1716   0.011   0.000
страничные ошибки (данные)          0.1080   0.007   0.000
плавающая точка                     0.0012   0.000   0.000
страничные ошибки (команды)         0.0007   0.000   0.000
----------------------------------------------------------
Всего (все FLIH)                   14.8083   0.923   0.099
 
========================================================================
Статистика использования CPU обработчиком прерываний второго уровня:
----------------------------------------------------
                                                   Сеть
SLIH                              Время CPU  CPU %   CPU %
----------------------------------------------------------
tokdd                              12.4312   0.775   0.775
ascsiddpin                          0.5178   0.032   0.000
----------------------------------------------------------
Всего (все SLIH)                   12.9490   0.807   0.775
 
========================================================================
Статистика драйвера сетевых устройств (по устройствам):
---------------------------------------------
                        --------- Передано ---------   ------ Получено -------
Устройство             пакетов/с  байт/с  Исп. Дл.очер. пакетов/с байт/с  интерф.
------------------------------------------------------------------------------
token ring 0              31.61     4800  1.7%  0.046   200.93   273994  0.0080
 
========================================================================
 
Статистика передачи для драйвера сетевых устройств (по целевым хостам):
----------------------------------------------------------------
Хост                   пакетов/с  байт/с
----------------------------------------
ah6000c                   31.57     4796
9.3.1.255                  0.03        4
itsorusi                   0.00        0
 
========================================================================
 
Статистика обращений процессов к сокетам TCP:
----------------------------------------
                                   ----- Чтение ----   ---- Запись -----
Процессы (20 первых)         PID  вызовов/с   байт/с  вызовов/с   байт/с
------------------------------------------------------------------------
telnetd                    18144      0.03       123      0.06         0
------------------------------------------------------------------------
Всего (все процессы)                  0.03       123      0.06         0
 
========================================================================
 
Статистика обращений клиентов к серверу NFS:
----------------------------------
                         ----- Чтение ----   ---- Запись -----    Прочее
Клиент                  вызовов/с   байт/с  вызовов/с   байт/с   вызовов/с
------------------------------------------------------------------------
ah6000c                     0.00         0     31.54    258208      0.01
------------------------------------------------------------------------
Всего (все клиенты)         0.00         0     31.54    258208      0.01
 
========================================================================
Подробная статистика использования CPU обработчиком прерываний второго уровня:
-------------------------------------------------------------
SLIH: tokdd
число:                  93039
время CPU (мс):        сред 0.134   мин 0.026  макс 0.541   откл 0.051
SLIH: ascsiddpin
число:                  8136
время CPU (мс):        сред 0.064   мин 0.012  макс 0.147   откл 0.018
Общее (Все SLIH)
число:                  101175
время CPU (мс):        сред 0.128   мин 0.012  макс 0.541   откл 0.053
 
========================================================================
Подробная статистика для драйвера сетевых устройств:
------------------------------------------
Устройство: token ring 0
получено пакетов:       80584
  получено (байт):     сред 1363.6  мин 50     макс 1520    откл 356.3
время получения (мс):  сред 0.081   мин 0.010  макс 0.166   откл 0.020
время на ур. инт.(мс): сред 0.040   мин 0.008  макс 0.375   откл 0.040
передано пакетов:       12678
 передано (байт):      сред 151.8   мин 52     макс 184     откл 3.3
время передачи (мс):   сред 1.447   мин 0.509  макс 4.514   откл 0.374
 
========================================================================
Подробная статистика передачи для драйвера сетевых устройств (по целевым хостам):
-------------------------------------------------------------
Хост: ah6000c
передано пакетов:       12662
  передано (байт):     сред 151.9   мин 52     макс 184     откл 2.9
время передачи (мс):   сред 1.448   мин 0.509  макс 4.514   откл 0.373
 
Хост: 9.3.1.255
передано пакетов:       14
  передано (байт):     сред 117.0   мин 117    макс 117     откл 0.0
время передачи (мс):   сред 1.133   мин 0.884  макс 1.730   откл 0.253
 
Хост: itsorusi
передано пакетов:       1
  передано (байт):     сред 84.0    мин 84     макс 84      откл 0.0
время передачи (мс):   сред 0.522   мин 0.522  макс 0.522   откл 0.000
 
========================================================================
Подробная статистика обращений процессов к сокетам TCP:
-------------------------------------------------
Процесс: telnetd   PID: 18144
операций чтения:        12
  прочитано (байт):    сред 4096.0  мин 4096   макс 4096    откл 0.0
время чтения (мс):     сред 0.085   мин 0.053  макс 0.164   откл 0.027
операций записи:        23
  записано (байт):     сред 3.5     мин 1      макс 26      откл 7.0
время записи (мс):     сред 0.143   мин 0.067  макс 0.269   откл 0.064
Протокол: TCP (все процессы)
операций чтения:        12
  прочитано (байт):    сред 4096.0  мин 4096   макс 4096    откл 0.0
время чтения (мс):     сред 0.085   мин 0.053  макс 0.164   откл 0.027
операций записи:        23
  записано (байт):     сред 3.5     мин 1      макс 26      откл 7.0
время записи (мс):     сред 0.143   мин 0.067  макс 0.269   откл 0.064
 
========================================================================
Подробная статистика обращений клиентов к серверу NFS:
-------------------------------------------
Клиент: ah6000c
операций записи:        12648
  записано (байт):     сред 8187.5  мин 4096   макс 8192    откл 136.2
время записи (мс):     сред 138.646 мин 0.147  макс 1802.067 откл 58.853
прочие вызовы:          5
время выполнения (мс): сред 1.928   мин 0.371  макс 8.065   откл 3.068
Общее (все клиенты)
операций записи:        12648
  записано (байт):     сред 8187.5  мин 4096   макс 8192    откл 136.2
время записи (мс):     сред 138.646 мин 0.147  макс 1802.067 откл 58.853
прочие вызовы:          5
время выполнения (мс): сред 1.928   мин 0.371  макс 8.065   откл 3.068
 

Вывод команды netpmon состоит из отчетов двух типов: общих и подробных. Общие отчеты содержат следующую статистическую информацию:

Общие отчеты расположены в начале вывода команды netpmon. Они содержат информацию, собранную за указанный интервал времени. Подробные отчеты содержат дополнительную информацию об объектах, статистика для которых приведена в общих отчетах. По умолчанию в отчетах выводится 20 максимальных значений измеряемых показателей. Строки отчета упорядочены в порядке уменьшения значений показателей.

Общие отчеты команды netpmon

Отчеты команды netpmon содержат заголовок, в котором указывается дата, ИД компьютера и интервал сбора данных в секундах. После заголовка следует список общих и подробных отчетов различных типов.

Статистика использования CPU процессами

Каждая строка отчета содержит информацию об использовании процессора указанным процессом. Если опция подробного вывода (-v) не задана, то список содержит 20 процессов, на выполнение которых затрачивается больше всего процессорного времени. В нижней области отчета указано общее время процессора, затраченное всеми процессами, а также время простоя процессора. Доля времени, в течение которого процессор простаивает, вычисляется путем деления времени простоя процессора на интервал сбора данных. Сумма времени простоя и общего времени, затраченного на выполнение процессов, не совпадает с интервалом сбора данных, так как какая-та часть времени была затрачена на работу обработчиков прерываний.

Значение Сеть (CPU %) указывает, какая доля процессорного времени (в процентах) бала затрачена на выполнение сетевых функций.

Если указан флаг -t, то отчет содержит информацию об использовании CPU для различных нитей. В этом случае после строки с информацией о процессе следует несколько строк с информацией о том, какое время было затрачено на выполнение отдельных нитей процесса. Для нитей указываются те же значения, что и для процессов, за исключением имени. Нитям имена не присваиваются.

В приведенном примере общего отчета об использовании процессора доля времени простоя (76,114) получена путем деления общего времени простоя (1221,0235) на длину интервала измерения, умноженную на 4 (401,053*4), поскольку на сервере работает четыре процессора. Для получения информации о работе отдельных процессоров вызовите команду sar, ps или другую команду, предназначенную для многопроцессорной системы. Аналогичным образом вычисляется общее значение CPU %. Время простоя отлично от нуля, так как выполнялись операции передачи данных по сети. Сумма итоговых значений для времени CPU (1221.0235 + 358.315) не совпадает с интервалом измерения, так как в системе есть несколько процессоров, и часть времени была затрачена на обработку прерываний. В примере отчета основная часть процессорного времени была затрачена на выполнение сетевых операций: (20,787 / 22,336) = 93,07 процента. Около 77,664 процентов времени процессор простаивал или ожидал выполнения операции.

Примечание: Если в отчете Статистика использования CPU процессами доля времени, затраченная на выполнение сетевых операций (Сеть - CPU%), поделенная на долю времени, затраченную на выполнение всех операций (Всего CPU %), больше 0,5, то основная часть процессорного времени затрачивается на выполнение сетевых функций.

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

Статистика использования CPU обработчиком прерываний первого уровня

В отчете указана информация об использовании процессора обработчиками прерываний первого уровня (FLIH). В нижней области отчета указано общее процессорное время, затраченное на выполнение всех FLIH.

Время CPU
Общее процессорное время, затраченное на выполнение данного FLIH

CPU %
Доля процессорного времени, затраченная на выполнение данного обработчика прерываний.

Сеть - CPU %
Доля процессорного времени, в течение которого обрабатывались прерывания, связанные с работой сети

Статистика использования CPU обработчиком прерываний второго уровня

В отчете указана информация об использовании процессора обработчиками прерываний второго уровня (SLIH). В нижней области отчета указано общее процессорное время, затраченное на выполнение всех SLIH.

Статистика драйверов сетевых устройств (по устройствам)

Каждая строка отчета содержит информацию о работе сетевого устройства.

Устройство
Имя файла, связанного с устройством.

Передано пакетов/с
Число пакетов, передаваемых каждую секунду через данное устройство.

Передано байт/с
Объем данных в байтах, передаваемых каждую секунду через данное устройство.

Передано - Исп.
Доля времени, в течение которого устройство было занято

Передано - Дл. очер.
Среднее число запросов, находящихся в очереди передачи устройства (с учетом запроса, выполняемого в данный момент)

Получено пакетов/с
Число пакетов, получаемых каждую секунду через данное устройство.

Получено байт/с
Объем данных в байтах, получаемых каждую секунду через данное устройство

Получено - Интерф.
Доля времени, затраченная на выполнение операций на уровне интерфейса.

В данном примере параметр Дл. очер. равен 0,046. Это значение намного меньше размера очереди по умолчанию (30). Значение Получено байт/с равно 273994, что намного меньше скорости передачи данных в сети Token-Ring (16 Мб/с). Следовательно, этот отчет показывает, что сеть слабо загружена.

Статистика передачи для драйвера сетевых устройств (по целевым хостам)

В каждой строке отчета указано, какой объем данных был передан указанному целевому хосту на уровне драйвера устройства.

Хост
Имя целевого хоста. Звездочка (*) указывается в тех случаях, когда имя целевого хоста неизвестно.

пакетов/с
Число пакетов, передаваемых хосту каждую секунду.

байт/с
Объем данных в байтах, передаваемых хосту каждую секунду.

Статистика обращений процессов к сокетам TCP

Данная статистическая информация выводится для всех протоколов Internet. В каждой строке отчета указано, сколько раз процесс обращался к сокету того или иного протокола через функции read() и write(). В нижней области отчета указано общее число обращений к сокету указанного протокола.

Статистика обращений клиентов к серверу NFS

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

Если команда выполняется на клиенте, то статистика обращений к серверу NFS заменяется на статистику работы клиента с различными серверами (Статистика обращений клиента к серверам NFS (по файлам), Статистика применения RPC на клиенте NFS (по серверам), Статистика работы клиента NFS (по процессам)).

Подробные отчеты команды netpmon

Команда создает подробные отчеты тех типов, которые заданы с опцией -O. Для указанных типов отчетов создаются как общие, так и подробные отчеты. Подробные отчеты содержат те же записи, что и общие отчеты, но содержат статистику выполнения различных транзакций.

Статистика выполнения транзакций включает число транзакций заданного типа, время ответа и, при необходимости, объем обработанных данных. Для объема обработанных данных указывается среднее, минимальное и максимальное значения, а также стандартное отклонение. Примерно две трети указанных значений находятся в пределах стандартного отклонения от среднего значения. Объем данных указывается в байтах. Время ответа указывается в миллисекундах.

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

Ниже описаны поля отчета:

SLIH
Имя обработчика прерываний второго уровня

число
Число прерываний указанного типа

время cpu (мс)
Процессорное время, затраченное на обработку прерываний данного типа

Подробная статистика для драйвера сетевых устройств (по устройствам)

Ниже описаны поля отчета:

Устройство
Имя файла, связанного с устройством

получено пакетов
Число пакетов, полученных через данное устройство

получено (байт)
Общий объем полученных пакетов

время получения (мс)
Время обработки полученных пакетов

время на ур. инт. (мс)
Время обработки полученных пакетов на уровне интерфейса

передано пакетов
Число пакетов, переданных через это устройство

получено (байт)
Общий объем переданных пакетов

время передачи (мс)
Время обработки переданных пакетов

Существуют и другие типы подробных отчетов, в том числе Подробная статистика передачи для драйвера сетевого устройства (по хостам) и Подробная статистика обращений к сокетам TCP (по процессам). Для клиента NFS создаются отчеты Подробная статистика обращений клиента NFS к серверам (по файлам), Подробная статистика вызова RPC клиентом NFS (по серверам) и Подробная статистика работы клиента NFS (по процессам). Для сервера NFS дополнительно создается отчет Подробная статистика обращений клиентов к серверу NFS. Поля этих отчетов аналогичны описанным ниже.

В приведенном примере значения из отчета Подробная статистика для драйвера сетевого устройства связаны следующим образом:

Из этого отчета, как и из общего отчета для драйвера устройства, видно, что сеть загружена слабо. Средний объем полученных данных составляет 1363.6 байт, что немного меньше MTU по умолчанию. В случае Token-Ring размер максимального блока передачи по умолчанию составляет 1492 байт. Если указанное значение больше MTU (размер MTU можно узнать с помощью команды lsattr -E -l интерфейс, где интерфейс нужно заменить на имя интерфейса, например, en0 или tr0), то измените MTU или размер очереди передачи адаптера для повышения производительности с помощью следующей команды:

# ifconfig tr0 mtu 8500

или

# chdev -l 'tok0' -a xmt_que_size='150'

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

Примечание:

Ограничения на применение команды netpmon

Для получения статистической информации команда netpmon применяет функцию трассировки. Следовательно, ее применение создает дополнительную нагрузку на систему.

Для того чтобы избежать снижения производительности, рекомендуется выполнять автономную обработку данных трассировки, а в многопроцессорных системах - указывать в команде trace флаг -C all.

Команда traceroute

Команда ping позволяет убедиться, что удаленная сеть IP достижима. Однако с ее помощью нельзя обнаружить и устранить неполадки. Рассмотрим следующий пример:

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

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

Примеры успешного выполнения команды traceroute

Команда traceroute применяет протокол UDP и функцию создания отчета об ошибках, предусмотренную в ICMP. Эта команда трижды отправляет пакет UDP каждому шлюзу или маршрутизатору, входящему в маршрут. Первый пакет отправляется ближайшему шлюзу. Второй пакет отправляется следующему за ним транзитному узлу и т.д. Последний пакет отправляется целевой системе. В выводе команды указывается имя шлюза, IP-адрес шлюза и время оборота трех пакетов, отправленных шлюзу. Ниже приведен пример вывода команды:

# traceroute wave
trying to get source for wave
source should be 9.53.155.187
traceroute to wave.austin.ibm.com (9.53.153.120) from 9.53.155.187 (9.53.155.187), 30 hops max
outgoing MTU = 1500
 1  9.111.154.1 (9.111.154.1)  5 ms  3 ms  2 ms
 2  wave (9.53.153.120)  5 ms  5 ms  5 ms

Ниже приведен другой пример:

# traceroute wave
trying to get source for wave
source should be 9.53.155.187
traceroute to wave.austin.ibm.com (9.53.153.120) from 9.53.155.187 (9.53.155.187), 30 hops max
outgoing MTU = 1500
 1  9.111.154.1 (9.111.154.1)  10 ms  2 ms  3 ms
 2  wave (9.53.153.120)  8 ms  7 ms  5 ms

Команда была повторно вызвана после того, как истек срок действия записи ARP. Обратите внимание, что время оборота первого пакета, отправляемого шлюзу или целевому хосту, больше, чем у остальных пакетов. Это связано с тем, что дополнительное время затрачивается на получение информации от протокола ARP. Если маршрут проходит через сеть с коммутацией каналов (WAN), то при передаче первого пакета дополнительное время будет затрачено на установление соединения. В результате может произойти тайм-аут. Тайм-аут по умолчанию составляет 3 секунды. Его можно изменить с помощью опции -w.

Первые 10 мс затрачены системой (9.53.155.187) на получение адреса шлюза 9.111.154.1 с помощью протокола ARP. Следующие 8 мс затрачены шлюзом на получение адреса целевого хоста (wave). В данном случае применяется DNS, поэтому перед отправкой каждого пакета команда traceroute обращается к серверу DNS.

Примеры обнаружения ошибок с помощью команды traceroute

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

Ошибка шлюза (маршрутизатора)

В приведенном ниже примере пакеты отправляются из системы 9.53.155.187. Маршрут к мосту включает две системы, играющие роль маршрутизаторов. Во второй из этих систем функция маршрутизации была временно выключена (опции ipforwarding было присвоено значение 0 с помощью команды no). Рассмотрим приведенный ниже пример:

# traceroute lamar
trying to get source for lamar
source should be 9.53.155.187
traceroute to lamar.austin.ibm.com (9.3.200.141) from 9.53.155.187 (9.53.155.187), 30 hops max
outgoing MTU = 1500
 1  9.111.154.1 (9.111.154.1)  12 ms  3 ms  2 ms
 2  9.111.154.1 (9.111.154.1)  3 ms !H *  6 ms !H

Все сообщения об ошибках ICMP, за исключением Истекло время и Порт недостижим, выдаются в следующем формате:

!H
Хост недостижим

!N
Сеть недостижима

!P
Протокол недоступен

!S
Ошибка в исходном маршруте

!F
Требуется фрагментация

Ошибка целевой системы

Если в течение 3 секунд от целевой системы не будет получен ответ, то для всех запросов возникает тайм-аут, и в выводе команды указывается звездочка (*).

# traceroute chuys
trying to get source for chuys
source should be 9.53.155.187
traceroute to chuys.austin.ibm.com (9.53.155.188) from 9.53.155.187 (9.53.155.187), 30 hops max
outgoing MTU = 1500
 1  * * *
 2  * * *
 3  * * *
^C#

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

Число транзитных узлов на пути к целевому хосту

Ниже приведен другой пример вывода команды:

# traceroute mysystem.university.edu (129.2.130.22)
traceroute to mysystem.university.edu (129.2.130.22), 30 hops max
1 helios.ee.lbl.gov (129.3.112.1) 0 ms 0 ms 0 ms
2 lilac-dmc.university.edu (129.2.216.1) 39 ms 19 ms 39 ms
3 lilac-dmc.university.edu (129.2.215.1) 19 ms 39 ms 19 ms
4 ccngw-ner-cc.university.edu (129.2.135.23) 39 ms 40 ms 19 ms
5 ccn-nerif35.university.edu (129.2.167.35) 39 ms 39 ms 39 ms
6 csgw/university.edu (129.2.132.254) 39 ms 59 ms 39 ms
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 rip.university.EDU (129.2.130.22) 59 ms! 39 ms! 39 ms!

В данном примере половина из 12 промежуточных шлюзов (13 узел - это целевая система) не указаны в выводе. Фактически эти узлы не являлись шлюзами. Целевой хост скопировал значение TTL из полученной дейтаграммы в свой ответ ICMP, поэтому этот ответ был удален на обратном пути. Поскольку узлы ICMP не отправляют друг другу сообщения, никакого извещения не было получено. Наличие ! (восклицательный знак) после каждого поля, указывающего время оборота пакета, говорит о несовместимости программного обеспечения. (Такая ошибка была обнаружена путем отправки пробного пакета с помощью команды traceroute по маршруту вдвое большей длины. Маршрут к целевому хосту на самом деле содержал только семь промежуточных узлов.)

Демон iptrace и команды ipreport и ipfilter

Существуют различные средства для получения информации о работе сети. Некоторые из них входят в состав операционной системы. Для работы других требуется специальное аппаратное обеспечение. Для получения подробной информации о передаче отдельных пакетов по сети можно воспользоваться демоном iptrace и командой ipreport. Для применения демона iptrace в операционной системе версии 4 необходимо установить набор файлов bos.net.tcp.server. Этот набор файлов содержит демон iptrace и некоторые другие полезные команды, в частности, trpt и tcdump. Демон iptrace разрешено запускать только пользователю root.

По умолчанию демон iptrace включает трассировку для всех пакетов. С помощью опции -a можно исключить пакеты ARP. Другие опции позволяют трассировать только пакеты, полученные от определенного хоста (-s), отправленные определенному хосту ( -d) или соответствующие определенному протоколу (-p). Поскольку на работу демона iptrace затрачивается значительное процессорное время, рекомендуется максимально сократить число пакетов, для которых включается трассировка.

Поскольку программа iptrace является демоном, ее нужно запускать с помощью команды startsrc, а не напрямую из командной строки. В этом случае будет проще управлять работой командой и ее завершением. Ниже приведен пример вызова этой команды:

# startsrc -s iptrace -a "-i tr0 /home/user/iptrace/log1"

Данная команда запускает демон iptrace для трассировки всех пакетов, передаваемых через интерфейс Token-Ring, tr0. Информация трассировки будет записана в файл /home/user/iptrace/log1. Для того чтобы завершить работу демона, вызовите следующую команду:

# stopsrc -s iptrace

Если демон iptrace был запущен без помощи команды startsrc, то для завершения его работы определите ИД процесса демона с помощью команды ps и убейте процесс с помощью команды kill.

Команда ipreport служит для форматирования файла протокола. Отформатированный протокол записывается в стандартный вывод. Различные опции позволяют распознавать и форматировать пакеты RPC (-r), присвоить каждому пакету номер (-n) и добавить к каждой строке префикс из трех символов, обозначающий протокол (-s). Ниже приведен пример вызова команды ipreport для форматирования только что созданного файла log1, принадлежащего пользователю root:

# ipreport -ns log1 >log1_formatted

Результатом выполнения этой команды будет последовательность отчетов о пакетах, как в приведенных ниже примерах. Первым указывается пробный пакет команды ping. Рекомендуется обратить внимание на следующие поля:

Номер пакета 131
TOK: =====( пакет отправлен через интерфейс tr0 )=====пятница 14 января 2000 г. 08.42.07
TOK: пакет 802.5
TOK: заголовок MAC 802.5:
TOK: поле управления доступом =0, поле управления кадрами = 40
TOK: [ src = 90:00:5a:a8:88:81, dst = 10:00:5a:4f:35:82]
TOK: поле управления маршрутизацией = 0830, маршрут из 3 сегментов
TOK: сегменты маршрута [ ef31 ce61 ba30  ]
TOK: Заголовок 802.2 LLC:
TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP)
IP:     < SRC =  129.35.145.140 >  (alborz.austin.ibm.com)
IP:     < DST =  129.35.145.135 >  (xactive.austin.ibm.com)
IP:     ip_v=4, ip_hl=20, ip_tos=0, ip_len=84, ip_id=38892, ip_off=0
IP:     ip_ttl=255, ip_sum=fe61, ip_p = 1 (ICMP)
ICMP:   icmp_type=8 (ECHO_REQUEST)  icmp_id=5923  icmp_seq=0
ICMP: 00000000     2d088abf 00054599 08090a0b 0c0d0e0f     |-.....E.........|
ICMP: 00000010     10111213 14151617 18191a1b 1c1d1e1f     |................|
ICMP: 00000020     20212223 24252627 28292a2b 2c2d2e2f     | !"#$%&'()*+,-./|
ICMP: 00000030     30313233 34353637                       |01234567        |

Ниже приведен фрагмент операции ftp. Размер IP-пакета совпадает с размером MTU этой сети (1492 байт).

Номер пакета 501
TOK: =====( пакет получен через интерфейс tr0 )=====пятница 10 декабря 1999 года 08.42.51
TOK: пакет 802.5
TOK: Заголовок MAC 802.5:
TOK: поле управления доступом =18, поле управления кадрами = 40
TOK: [ src = 90:00:5a:4f:35:82, dst = 10:00:5a:a8:88:81]
TOK: поле управления маршрутизацией = 08b0, маршрут из 3 сегментов
TOK: сегменты маршрута [ ef31 ce61 ba30  ]
TOK: Заголовок 802.2 LLC:
TOK: dsap aa, ssap aa, ctrl 3, proto 0:0:0, type 800 (IP)
IP:     < SRC =  129.35.145.135 >  (xactive.austin.ibm.com)
IP:     < DST =  129.35.145.140 >  (alborz.austin.ibm.com)
IP:     ip_v=4, ip_hl=20, ip_tos=0, ip_len=1492, ip_id=34233, ip_off=0
IP:     ip_ttl=60, ip_sum=5ac, ip_p = 6 (TCP)
TCP:    <исходный порт=20(данные ftp), целевой порт=1032 >
TCP:    th_seq=445e4e02, th_ack=ed8aae02
TCP:    th_off=5, flags<ACK |>
TCP:    th_win=15972, th_sum=0, th_urp=0
TCP: 00000000     01df0007 2cd6c07c 00004635 000002c2     |....,..|..F5....|
TCP: 00000010     00481002 010b0001 000021b4 00000d60     |.H........!....`|
             --------- Lots of uninteresting data omitted -----------
TCP: 00000590     63e40000 3860000f 4800177d 80410014     |c...8`..H..}.A..|
TCP: 000005a0     82220008 30610038 30910020              |."..0a.80..     |

Команда ipfilter выдает таблицу заголовков операций, полученных из файла вывода ipreport. Кроме того, выдается некоторая информация о запросах NFS и ответах на эти запросы.

Для того чтобы узнать, установлена ли команда ipfilter в системе, вызовите следующую команду:

# lslpp -lI perfagent.tools

Ниже приведен пример вызова этой команды:

# ipfilter log1_formatted

Распознаны следующие заголовки операций: udp, nfs, tcp, ipx, icmp. Команда ipfilter создает отчеты трех типов:

Статистика работы адаптера

Описанные в этом разделе команды позволяют получить примерно такую же информацию, что и команда netstat -v. С их помощью можно сбросить статистику адаптера (-r) и получить более подробный отчет, чем предоставляется командой netstat -v (опция -d).

Команда entstat

Команда entstat позволяет просмотреть статистическую информацию, собранную указанным драйвером адаптера Ethernet. Помимо общей информации можно просмотреть дополнительную информацию об указанном устройстве. Для этого служит опция -d. С ее помощью можно просмотреть полную статистическую информацию. Если флаги не заданы, то выдается только общая статистическая информация.

Команда entstat вызывается командой netstat с флагом -v. Команда netstat вызывает команду entstat без флагов.

# entstat ent0
-------------------------------------------------------------
Статистика по адаптеру Ethernet (ent0) :
Тип устройства: Адаптер Ethernet PCI 10/100 Мб/с фирмы IBM (23100020)
Аппаратный адрес: 00:60:94:e9:29:18
Истекшее время: 0 дней, 0 часов, 0 минут, 0 секунд
 
Статистика по передаче:                       Статистика по приему:
--------------------                          -------------------
Пакетов: 0                                    Пакетов: 0
Байт: 0                                       Байт: 0
Прерываний: 0                                 Прерываний: 0
Ошибок передачи: 0                            Ошибок приема: 0
Отброшено пакетов: 0                          Отброшено пакетов: 0
                                              Пакеты с ошибками: 0
Макс. число пакетов в прогр. очереди передачи: 0
Переполнений прогр. очереди передачи: 0
Общая длина прогр. и аппар. очередей передачи: 0
 
Пакет оповещения: 0                           Пакет оповещения: 0
Многоцелевые пакеты: 0                        Многоцелевые пакеты: 0
Несущая частота не обнаружена: 0              Ошибка CRC: 0
Выход за нижнюю границу DMA: 0                Выход за верхнюю границу DMA: 0
Ошибки потери CTS: 0                          Ошибки выравнивания: 0
Макс.число конфликтов: 0                      Ошибки из-за отсутствия ресурсов: 0
Конфликты опоздания: 0                        Конфликты при получении:  0
Задержки: 0                                   Слишком короткие пакеты: 0
Проверка SQE: 0                               Слишком длинные пакеты: 0
Ошибки ожидания: 0                            Пакеты, отброшенные адаптером: 0
Число одиночных конфликтов: 0                     Начальный счетчик получателя: 0
Число множественных конфликтов: 0
Текущая длина аппар. очереди передачи: 0
 
Общая статистика:
-------------------
Ошибки отсутствия mbuf: 0
Число перезапусков адаптера: 0
Флаги драйвера: Up Broadcast Running
        Simplex 64BitSupport

в приведенном выше отчете стоит обратить внимание на следующее:

Ошибок передачи
Число ошибок, возникших при передаче данных через данное устройство. Это число учитывает аппаратные ошибки и ошибки в работе сети.

Ошибок приема
Число ошибок, возникших при приеме данных через данное устройство. Это число учитывает аппаратные ошибки и ошибки в работе сети.

Отброшено пакетов
Число пакетов, принятых драйвером устройства для отправки, но не переданных устройству.

Макс. число пакетов в прогр. очереди передачи
Максимальное число пакетов, которое когда-либо находилось в программной очереди передачи.

Переполнений прогр. очереди передачи
Число переполнений очереди передачи.

Ошибки из-за отсутствия ресурсов
Число полученных пакетов, отброшенных на аппаратном уровне из-за нехватки ресурсов. Обычно такие ошибки связаны с переполнением буфера приема адаптера. Некоторые адаптеры позволяют изменять размер буфера приема. Информацию о настройке можно найти в описании атрибутов устройства или в справке SMIT.

Число одиночных/множественных конфликтов
Число конфликтов в сети Ethernet. Эти конфликты не учитываются в соответствующем поле вывода команды netstat -i.

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

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

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

Если в системе недостаточно ресурсов для приема пакетов, то значение Отброшено пакетов: будет отлично от нуля, а в качестве причины будет указано Недостаточно буферов приема, Ошибки из-за нехватки ресурсов или аналогичное значение.

Истекшее время указывает время, прошедшее с момента предыдущего сброса статистики. Для сброса статистики служит команда entstat -rимя-адаптера.

Для получения аналогичной информации об интерфейсах Token-Ring, FDDI и ATM служат команды tokstat, fddistat и atmstat.

Команда tokstat

Команда tokstat выводит статистическую информацию, собранную указанным драйвером устройства Token-Ring. Помимо статистики, собранной драйвером устройства, пользователь может просмотреть дополнительную информацию об указанном устройстве. Если флаги не заданы, то выводится только статистика, собранная драйвером устройства.

Эта команда вызывается командой netstat с флагом -v. Команда netstat вызывает команду tokstat без флагов.

Вывод команды tokstat tok0 аналогичен выводу команды entstat.

Команда fddistat

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

Эта команда вызывается командой netstat с флагом -v. Команда netstat вызывает команду fddistat без флагов.

Вывод команды fddistat fddi0 аналогичен выводу команды entstat.

Команда atmstat

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

Вывод команды atmstat atm0 аналогичен выводу команды entstat.

Команда no

Команда no позволяет просмотреть и изменить текущие значения параметров сети.

-a
Выводит текущие значения параметров (например: no -a)

-d
Устанавливает для параметров значения по умолчанию (например: no -d thewall)

-o
опция=новое-значение (например: no -o thewall=16384)

Список атрибутов команды no приведен в разделе Параметры сети.

Некоторые атрибуты сети можно изменить в любой момент. Другие атрибуты изменяются во время загрузки. Из нужно изменить до загрузки расширения ядра netinet.

Примечание: Изменения, внесенные с помощью команды no, действуют до следующей загрузки системы. После загрузки всем параметрам присваиваются значения по умолчанию. Для внесения изменений на постоянной основе добавьте команду no в файл /etc/rc.net.

Если в системе применяется конфигурация сети типа Беркли, то поместите атрибуты в начало файла /etc/rc.bsdnet. При работе с системой SP измените файл tuning.cust, как описано в руководстве RS/6000 SP: Installation and Relocation.

Примечание: Команда no не проверяет, что указанное значение параметра допустимо. Вызов команды no с недопустимым значением параметра может нарушить работу системы.

В приведенных ниже разделах описаны атрибуты команды no и способы их настройки.


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]