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

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


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

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

Команда nfsstat

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

Статистика RPC

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

Начиная с AIX версии 4.2.1 поддерживается вывод информации для NFS версии 3. Статистика NFS в выводе команды nfsstat подразделяется на две части: для версии 2 и для версии 3. Статистика RPC разбита на разделы С установлением соединения (TCP) и Без установления соединения (UDP).

Информация о сервере NFS

В разделе сервера NFS показано как число полученных (calls) и отклоненных (badcalls) вызовов NFS в процессе идентификации, так и счетчики числа и относительного количества сделанных вызовов.

В следующем примере показан раздел Сервер из вывода команды nfsstat с опцией -s:

# nfsstat -s
 
Сервер - RPC:
С установлением соединения:
callsbadcallsnullrecvbadlenxdrcalldupchecksdupreqs
15835      0          0          0          0          772        0
Без установления соединения:
callsbadcallsnullrecvbadlenxdrcalldupchecksdupreqs
0          0          0          0          0          0          0
 
Сервер - NFS:
calls      badcalls   public_v2  public_v3
15835      0          0          0
Версия 2: (0 вызовов)
null       getattr    setattr    root       lookup     readlink   read
0 0%       0 0%       0 0%       0 0%       0 0%       0 0%       0 0%
wrcache    write      create     remove     rename     link       symlink
0 0%       0 0%       0 0%       0 0%       0 0%       0 0%       0 0%
mkdir      rmdir      readdir    statfs
0 0%       0 0%       0 0%       0 0%
Версия 3: (15835 вызовов)
null       getattr    setattr    lookup     access     readlink   read
7 0%       3033 19%   55 0%      1008 6%    1542 9%    20 0%      9000 56%
write      create     mkdir      symlink    mknod      remove     rmdir
175 1%     185 1%     0 0%       0 0%       0 0%       120 0%     0 0%
rename     link       readdir    readdir+   fsstat     fsinfo     pathconf
87 0%      0 0%       1 0%       150 0%     348 2%     7 0%       0 0%
commit
97 0%

Значения полей в разделе Сервер - RPC (-s):

calls
Общее число вызовов RPC, полученных от клиентов

badcalls
Общее число вызовов, отклоненных на уровне RPC

nullrecv
Число случаев, когда вызов RPC был недоступен, в то время как считалось, что он был получен

badlen
Число усеченных и поврежденных пакетов (число вызовов RPC, длина которых была меньше минимально допустимой)

xdrcall
Число вызовов RPC, заголовки которых не были закодированы в формате Внешнего представления данных (XDR)

dupchecks
Число вызовов RPC, обнаруженных в кэше повторных запросов

dupreqs
Число повторных вызовов RPC

Вывод содержит также количества и доли в процентах вызовов различных типов.

Проверка повторных вызовов выполняется для неидемпотентных операций (два вызова которых дают различные результаты). Классический пример - команда rm (удалить). Первая команда rm будет выполнена успешно, но, если ответ будет потерян, клиент может повторить вызов. Этот вызов будет обнаружен в кэше повторных запросов, поэтому вместо повторной попытки удалить файл будет сразу возвращен ответ об успешном выполнении.

Информация о доле операций различных типов (такие как getattr(), read(), write() и readdir()) позволяет определить приоритеты при оптимизации. Например, если велика доля вызовов getattr(), то рекомендуется увеличить кэш атрибутов. При большом числе вызовов write() важна производительность диска и LVM. Обработка вызовов read() может быть ускорена путем увеличения объема оперативной памяти, применяемой для кэширования файлов.

Информация о клиенте NFS

В разделе Клиент NFS показано число отправленных и отклоненных вызовов, число операций получения описателя клиента (clgets), а также количества и доли в процентах вызовов различных типов.

В следующем примере показан раздел Клиент из вывода команды nfsstat с опцией -c:

# nfsstat -c
 
Клиент - RPC:
С установлением соединения:
calls     badcalls  badxids  timeouts  newcreds badverfs  timers
0          0          0          0          0          0          0
nomem     cantconn interrupts
0          0          0
Без установления соединения:
calls     badcalls retrans   badxids   timeouts newcreds  badverfs
6553       0          0          0          0          0          0
timers    nomem     cantsend
0          0          0
 
Клиент - NFS:
calls      badcalls   clgets     cltoomany
6541       0          0          0
Версия 2: (6541 вызовов)
null       getattr    setattr    root       lookup     readlink   read
0 0%       590 9%     414 6%     0 0%       2308 35%   0 0%       0 0%
wrcache    write      create     remove     rename     link       symlink
0 0%       2482 37%   276 4%     277 4%     147 2%     0 0%       0 0%
mkdir      rmdir      readdir    statfs
6 0%       6 0%       30 0%      5 0%
Версия 3: (0 вызовов)
null       getattr    setattr    lookup     access     readlink   read
0 0%       0 0%       0 0%       0 0%       0 0%       0 0%       0 0%
write      create     mkdir      symlink    mknod      remove     rmdir
0 0%       0 0%       0 0%       0 0%       0 0%       0 0%       0 0%
rename     link       readdir    readdir+   fsstat     fsinfo     pathconf
0 0%       0 0%       0 0%       0 0%       0 0%       0 0%       0 0%
commit
0 0%

Значения полей в разделе Клиент - RPC (-c):

calls
Общее число вызовов RPC из NFS.

badcalls
Общее число вызовов, отклоненных на уровне RPC.

retrans
Число повторных передач вызова из-за тайм-аута при ожидании ответа от сервера. Этот показатель выдается только в случае RPC без установления соединения.

badxid
Число полученных ответов от сервера, не соответствовавших ни одному из отправленных вызовов. Такой ответ означает, что операция выполнялась слишком долго.

timeouts
Число тайм-аутов ожидания ответа от сервера.

newcreds
Число обновлений идентификационной информации.

badverfs
Число вызовов, оказавшихся неудачными из-за неправильного контрольного кода в ответе.

timers
Число случаев, когда вычисленный тайм-аут был не меньше указанного минимального тайм-аута вызова.

nomem
Число вызовов, которые не удалось выполнить по причине недостатка памяти.

cantconn
Число вызовов, оказавшихся неудачными из-за того, что не удалось установить соединение с сервером.

interrupts
Число вызовов, преждевременно прерванных по сигналу.

cantsend
Число попыток отправки, оказавшихся неудачными из-за того, что не удалось установить соединение с клиентом.

Вывод содержит также количества и доли в процентах вызовов различных типов.

Команда nfsstat -c выдает также информацию о потерянных пакетах UDP, что позволяет отслеживать производительность. Сеть может отбросить пакет, если она не поддерживает его. Потеря пакетов может быть также вызвана слишком большим временем ответа программного и аппаратного обеспечения сети или перегруженностью процессора сервера. Запросы из потерянных пакетов не пропадают, а передаются повторно.

В столбце retrans раздела RPC показано число повторных передач запросов из-за тайм-аута при ожидании ответа. Этот показатель связан с числом потерянных пакетов UDP. Если значение retrans регулярно превышает пять процентов от общего числа вызовов (указанного в первом столбце), сервер или сеть не справляются с нагрузкой. Для выяснения степени загруженности сервера введите на нем команды vmstat, netpmon и iostat.

Высокое значение badxid указывает на то, что запросы достигают серверов NFS, но серверы слишком загружены и не успевают отправлять ответы до тайм-аута, вследствие чего запросы передаются повторно. Значение badxid увеличивается при каждом получении повторного ответа на переданный запрос (XID запроса RPC остается неизменным на всех этапах обработки). Повторные передачи ответа повышают нагрузку на сервер, что еще больше увеличивает время ответа. Если значения badxid и timeouts превышают пять процентов от общего числа запросов, увеличьте значение параметра timeo в опциях монтирования NFS с помощью команды smitty chnfsmnt. Если badxid равно 0, а значения retrans и timeouts велики, попробуйте уменьшить размер буфера NFS (опции rsize и wsize команды mount).

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

Если число повторных передач близко к числу тайм-аутов, то это означает частую потерю пакетов. Пакеты редко теряются клиентом. Обычно пакеты отбрасываются или сетью, или сервером. Сервер может отбрасывать пакеты при переполнении очереди передачи интерфейса или буфера сокета UDP (nfs_socketsize). Если на сервере не наблюдается переполнений буфера сокета и переполнений очереди интерфейса, то, скорее всего, пакеты отбрасываются сетью. Это указывает на неполадки в физических сетях и сетевых устройствах: маршрутизаторах, мостах и концентраторах. Для устранения подобных неполадок может применяться сетевой перехват. Более подробная информация приведена в разделе Отброшенные пакеты.

В некоторых случаях производительность NFS кажется низкой, в то время как вывод команды nfsstat -c указывает, что число тайм-аутов и повторных передач запроса невелико. Это означает, что клиент получает ответ от сервера сразу после отправки запроса. В этом случае следует сначала выяснить, сколько экземпляров демона biod запущено на клиенте. Кроме того, такая ситуация может наблюдаться при удаленном блокировании файлов. При удаленном блокировании файлов, доступных через NFS, клиент переходит в полностью синхронный режим работы и полностью прекращает кэширование данных и атрибутов этих файлов. Это обычное поведение клиента в таких случаях, однако, к сожалению, оно приводит к значительному снижению производительности. Блокирующие пакеты указаны в выводе команды ipreport как запросы NLM.

nfsstat -m

Начиная с AIX версии 4.2.1 команда nfsstat -m выдает имя и адрес сервера, флаги монтирования, текущий размер блоков чтения и записи, число повторных передач, а также тайм-ауты для динамической повторной передачи для каждой точки монтирования клиента:

# nfsstat -m
/SAVE from /SAVE:itsorus.austin.ibm.com
 Флаги:   vers=2,proto=udp,auth=unix,soft,intr,dynamic,rsize=8192,wsize=8192,retrans=5
 Поиск:   srtt=27 (67 мс), dev=17 (85 мс), cur=11 (220 мс)
 Чтение:  srtt=16 (40 мс), dev=7 (35 мс), cur=5 (100 мс)
 Запись:  srtt=42 (105 мс), dev=14 (70 мс), cur=12 (240 мс)
 Все:     srtt=27 (67ms), dev=17 (85ms), cur=11 (220ms)

Числа в скобках, показанные в этом примере, представляют собой фактические интервалы в миллисекундах. Прочие числа - это значения времени в условных единицах, применяемые ядром операционной системы. Их можно игнорировать. Значения времени ответа показаны для операций поиска, чтения, записи, а также для сочетания всех этих операций (Всего). Прочие сокращения в этом выводе означают следующее:

srtt
Усредненное время оборота пакета

dev
Приближенное отклонение

cur
Текущий интервал тайм-аута

Команда netpmon

См. раздел Команда netpmon.

Команда nfso

Команда nfso служит для настройки атрибутов NFS. Она позволяет просмотреть и изменить текущие параметры сетевой поддержки ядра. Ее можно выполнять в любой запущенной системе.

Примечание: Команда nfso не проверяет границы диапазонов. При неправильном использовании эта команда может нарушить работу системы.

Для просмотра параметров команды nfso и их значений введите команду nfso -a:

# nfso -a
portcheck= 0
udpchecksum= 1
nfs_socketsize= 60000
nfs_tcp_socketsize= 60000
nfs_setattr_error= 0
nfs_gather_threshold= 4096
nfs_repeat_messages= 0
nfs_udp_duplicate_cache_size= 0
nfs_tcp_duplicate_cache_size= 0
nfs_server_base_priority= 0
nfs_dynamic_retrans= 1
nfs_iopace_pages= 0
nfs_max_connections= 0
nfs_max_threads= 128
nfs_use_reserved_ports= 0
nfs_device_specific_bufs= 1
nfs_server_clread= 1
nfs_rfc1323= 0
nfs_max_write_size= 0
nfs_max_read_size= 0
nfs_allow_all_signals= 0

Описание этих атрибутов приведено в разделе Настраиваемые параметры сетевой поддержки. Большинство атрибутов NFS могут быть изменены в любой момент. Изменение атрибутов загрузки, таких как nfs_socketsize, требует остановки и перезапуска NFS.

Для просмотра или изменения одного параметра введите команду nfso -o:

# nfso -o portcheck
portcheck= 0
# nfso -o portcheck=1

Значение параметра по умолчанию можно восстановить с помощью опции -d:

# nfso -d portcheck
# nfso -o portcheck
portcheck= 0

Дополнительная информация об NFS

Ниже приведен обзор файлов, команд, демонов и процедур, относящихся к NFS. Более подробная информация приведена в книгах Руководство по управлению системой AIX 5L версии 5.1: Сети и средства связи и Справочник команд AIX 5L Version 5.1.

Список файлов NFS

Ниже приведен список файлов, в которых хранится информация о конфигурации NFS:

bootparams
Параметры загрузки бездисковых клиентов

exports
Список каталогов, которые можно экспортировать на клиенты NFS

networks
Информация о сетях в Internet

pcnfsd.conf
Параметры настройки демона rpc.pcnfsd

rpc
База данных с информацией для программ RPC

xtab
Список каталогов, экспортированных на данный момент

/etc/filesystems
Список файловых систем, монтируемых при запуске системы

Список команд NFS

Ниже приведен список команд NFS:

chnfs
Запускает указанное число экземпляров демонов biod и nfsd

mknfs
Настраивает систему для запуска NFS и запускает демоны NFS

nfso
Настраивает сетевые параметры NFS

automount
Автоматически монтирует файловую систему NFS

chnfsexp
Изменяет атрибуты каталога, экспортированного через NFS

chnfsmnt
Изменяет атрибуты каталога, смонтированного через NFS

exportfs
Экспортирует и отменяет экспортирование каталогов на клиенты NFS

lsnfsexp
Показывает характеристики каталогов, экспортированных через NFS

lsnfsmnt
Показывает характеристики каталогов, смонтированных через NFS

mknfsexp
Экспортирует каталог через NFS

mknfsmnt
Монтирует каталог через NFS

rmnfs
Останавливает демоны NFS

rmnfsexp
Удаляет каталоги, экспортированные через NFS, из списка экспортированных каталогов сервера

rmnfsmnt
Удаляет файловые системы, смонтированные через NFS, из списка смонтированных файловых систем клиента

Список демонов NFS

Ниже приведен список демонов NFS:

lockd
Обрабатывает запросы на блокировку, полученные через RPC

statd
Обеспечивает восстановление после сбоя для служб блокирования NFS

Ниже приведен список сетевых демонов и утилит:

biod
Отправляет серверу запросы клиента на чтение и запись

mountd
Отвечает на запросы клиентов на монтирование файловых систем

nfsd
Запускает демоны, обрабатывающие запросы клиентов на работу с файловыми системами

pcnfsd
Обрабатывает запросы клиентов PC-NFS

nfsstat
Показывает информацию о возможности приема вызовов системой

on
Выполняет команды в удаленных системах

portmap
Подключает программы RPC к определенным портам интерфейса

rexd
Принимает запросы удаленных систем на запуск программ

rpcgen
Создает код на языке C, реализующий протокол RPC

rpcinfo
Показывает состояние серверов RPC

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

rup
Показывает состояние удаленного хоста в локальной сети

rusers
Показывает список пользователей, вошедших в удаленные системы

rusersd
Отвечает на запросы команды rusers

rwall
Отправляет сообщения всем пользователям сети

rwalld
Обрабатывает запросы команды rwall

showmount
Показывает список всех клиентов, смонтировавших удаленные файловые системы

spray
Отправляет хосту указанное число пакетов

sprayd
Получает пакеты от команды spray

Ниже приведен список демонов и утилит для защищенной работы в сети:

chkey
Изменяет ключ шифрования пользователя

keyenvoy
Обеспечивает взаимодействие пользовательских процессов и сервера ключей

keylogin
Зашифровывает и хранит личный ключ пользователя

keyserv
Хранит общие и личные ключи

mkkeyserv
Запускает демон keyserv и удаляет символ комментария из соответствующих записей файла /etc/rc.nfs

newkey
Создает новый ключ в файле общих ключей

rmkeyserv
Останавливает демон keyserv и устанавливает символ комментария в соответствующих записях этого демона в файле /etc/rc.nfs

ypupdated
Обновляет информацию в отображениях NIS

Ниже приведено название файла конфигурации бездисковых клиентов:

bootparamd
Содержит информацию, необходимую для загрузки бездисковых клиентов

Ниже приведен список функций NFS:

cbc_crypt(), des_setparity(), or ecb_crypt()
Реализуют шифрование DES.


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