Медленная 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 (и это правописание, это преднамеренно, кстати?), И почему оно увеличивается, как это в моем случае?

lkraav
источник
Когда вы говорите «медленная 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, поскольку аутентификация всегда используется.

Rothgar
источник
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
они имеют в виду, что они не уверены, что это является причиной проблемы или просто идет вверх из-за нее. «стремительный рост» определенно указывает на то, что дела идут плохо. Точно так же это в основном наблюдается параллельно с уродливыми проблемами перфорации.
Флориан Хейгл