Медленная NFS, nfsstat -c: что такое поле authrefrsh (он же newcreds?)?


10

(net-fs / nfs-utils-1.2.3-r1, 2.6.38.5-zen + Gentoo)

Погуглив это кажется полным тупиком. man nfsstat ничего не говорит о предмете. Самым близким, что я мог получить, было выяснение того, что, вероятно, ранее было « новыми кредитами ».

newcreds Количество раз, когда аутентификационная информация должна была обновляться.

Моя проблема в том, что я думаю, что я вижу низкую производительность NFS по сравнению с OpenVPN, и единственное, что я сразу вижу, это значительно отличается от всех результатов nfsstat Google, это то, что мое поле "звонки" равно точно "authrefrsh" и, следовательно, очень высоко , Все результаты поиска всегда имели authrefrsh как 0 или очень низкое число. Прежде чем я смогу перейти к отладке некоторых других аспектов, я мог бы выяснить, что это значит.

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

$ watch -n 1 nfsstat -c

Every 1,0s: nfsstat -c                                Sat May 21 23:04:55 2011

Client rpc stats:
calls      retrans    authrefrsh
308565     2211       308565

Client nfs v3:
null         getattr      setattr      lookup       access       readlink
0         0% 172372   55% 17        0% 30485     9% 36057    11% 26831     8%
read         write        create       mkdir        symlink      mknod
25879     8% 107       0% 21        0% 0         0% 0         0% 0         0%
remove       rmdir        rename       link         readdir      readdirplus
16        0% 0         0% 11        0% 0         0% 0         0% 16668     5%
fsstat       fsinfo       pathconf     commit
3         0% 50        0% 25        0% 2         0%

Я не могу точно понять, что такое authrefrsh (и это правописание, это преднамеренно, кстати?), И почему оно увеличивается, как это в моем случае?


Когда вы говорите «медленная NFS», что заставляет вас верить, что производительность NFS должна быть выше? Можете ли вы измерить медленно? Имеет ли время дня значение для производительности WRT?
— Майк Пеннингтон

«Медленная NFS» означает, что трафик NFS не должен иметь проблем с получением всей доступной пропускной способности, которая по VPN была не такой большой (100 кБ / с). Вместо этого iftop показывал мне трафик только одной цифры кБ / с в течение tun0. Я полагаю, что я сузил проблему до того, что Portage зарегистрировал пару тысяч пакетов в моем PKGDIR во время связанных с binpkg запусков emerge, что, похоже, мучительно медленная операция. Из того, что я могу сказать до сих пор, лучшим решением может быть регулярное обновление portage squashfs на удаленных рабочих станциях и получение binpkgs через HTTP binhost вместо монтируемого по NFS PKGDIR.
— Икра

Есть какие-нибудь обновления по этому поводу? Я заметил более низкую производительность клиента NFS с новыми серверами SLES 11 и CentOS 6 по сравнению с нашими старыми серверами SLES 9. Клиенты SLES 9 работают быстрее и также показывают authrefrsh=0, в то время как новые ОС показывают тонну authrefrsh. Я думаю, что здесь есть корреляция, но я не совсем уверен, что все это значит.
— Banjer

Какой тип аутентификации NFS вы делаете? AUTH_SYS?
— Братчли

Однако, чтобы ответить на часть вашего вопроса, authrefrsh - это число вызовов клиента NFS, call_refresh()которые в основном отправляются на RPC-сервер (portmap, rpcbind и т. Д.) И проверяют его учетные данные на сервере. Нам нужно выяснить, действительно ли это является причиной задержки. Если вы делаете, AUTH_SYSто накладные расходы низкие и не будут причиной.
— Братчли

Ответы:


5

Из статьи Red Hat в комментариях говорится, что решение

Это ожидаемое поведение.

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

Он ссылается на коммит a17c2153d2e271b0cbacae9bed83b0eaa41db7e1 в пакете sunrpc, который перемещается туда, где происходит аутентификация nfs. Я не буду копировать / вставлять весь коммит, но он в основном меняет эти строки.

-struct rpc_cred *cred = task->tk_msg.rpc_cred;
+struct rpc_cred *cred = task->tk_rqstp->rq_cred;

Насколько я понимаю, эта строка перемещается туда, где происходит call_refresh () (скорее раньше, чем позже). Это, в свою очередь, означает, что большинство всех запросов nfs будут вызывать увеличение authrefrsh, поскольку аутентификация всегда используется.


1

Я вижу то же самое (не используя vpn) - authrefrsh == звонки на стороне клиента. Мне кажется, что количество вызовов увеличивается, затем замедляется, а затем увеличивается число authrefrsh.

Статистика клиента rpc:

calls      retrans    authrefrsh
261697     0          261697

Я также вижу очень высокий Iowait:

dd if=/dev/zero of=/mnt/omoikane/testfile bs=16k count=2048

(из иостата :)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          4.04    0.00    4.04   91.92    0.00    0.00

Я не вижу ничего необычного в wireshark - я использую nfs3 и tcp.


1

Из того, что я понимаю по этой ссылке, authrefresh = Calls не указывает на проблему.

https://bugzilla.redhat.com/show_bug.cgi?id=785931


Добро пожаловать в Unix и Linux! Как правило, нам нравятся ответы на сайте, чтобы они могли стоять сами по себе - Ссылки - это здорово, но если эта ссылка когда-либо разорвется, в ответе должно быть достаточно информации, чтобы она оставалась полезной. Пожалуйста, рассмотрите возможность редактирования своего ответа, чтобы включить больше деталей. Смотрите FAQ для получения дополнительной информации.
— SLM

они имеют в виду, что они не уверены, что это является причиной проблемы или просто идет вверх из-за нее. «стремительный рост» определенно указывает на то, что дела идут плохо. Точно так же это в основном наблюдается параллельно с уродливыми проблемами перфорации.
— Флориан Хейгл
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.