O que causa a atualização repetida de credenciais RPC do lado do cliente NFS do Linux?

10

Usando nfsstat -c, estou vendo um "authrefrsh" alto (conhecido como "newcred" em alguns sistemas) contar com meu pc cliente NFS para operações como lse findem diretórios que contêm ~ 1000 arquivos. Isso se correlaciona com um desempenho muito ruim (mais de 20 minutos de listagens de diretório). As operações em cache do NFS não exibem esse comportamento (o authrefrsh ou a desaceleração).

authrefrsh = chama sempre que eu verifico nfsstat:

$ nfsstat -c

Client rpc stats:
calls      retrans    authrefrsh
280462     0          280462

Client nfs v3:
null         getattr      setattr      lookup       access       readlink
0         0% 126990   45% 0         0% 10062     3% 58592    20% 0         0%
read         write        create       mkdir        symlink      mknod
25030     8% 0         0% 65        0% 0         0% 2         0% 0         0%
remove       rmdir        rename       link         readdir      readdirplus
0         0% 0         0% 0         0% 0         0% 0         0% 59654    21%
fsstat       fsinfo       pathconf     commit
0         0% 20        0% 10        0% 0         0%

Detalhes da conexão:

$ mount.nfs -v nfshost:/share/dir /somedir
mount.nfs: timeout set for Tue Feb 21 18:12:18 2012
mount.nfs: trying text-based options 'vers=4,addr=192.168.xx.xx,clientaddr=192.168.xx.xx'
mount.nfs: mount(2): Operation not permitted
mount.nfs: trying text-based options 'addr=192.168.xx.xx'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 192.168.xx.xx prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 192.168.xx.xx prog 100005 vers 3 prot UDP port 1011
nfshost:/share/dir on /somedir type nfs

Ambiente RPC do nfshost:

$ rpcinfo -T udp nfshost nfs
program 100003 version 2 ready and waiting
program 100003 version 3 ready and waiting
program 100003 version 4 ready and waiting

$ rpcinfo -T udp nfshost mountd
program 100005 version 1 ready and waiting
program 100005 version 2 ready and waiting
program 100005 version 3 ready and waiting

$ rpcinfo -T udp nfshost nlockmgr
program 100021 version 1 ready and waiting
rpcinfo: RPC: Program/version mismatch; low version = 1, high version = 4
program 100021 version 2 is not available
program 100021 version 3 ready and waiting
program 100021 version 4 ready and waiting

$ rpcinfo -T udp nfshost llockmgr
rpcinfo: RPC: Program not registered

$ rpcinfo nfshost
program version netid     address                service    owner
100000    2    tcp       0.0.0.0.0.111          portmapper unknown
100000    2    udp       0.0.0.0.0.111          portmapper unknown
100024    1    udp       0.0.0.0.2.212          status     unknown
100024    1    tcp       0.0.0.0.2.215          status     unknown
100021    1    udp       0.0.0.0.226.67         nlockmgr   unknown
100021    3    udp       0.0.0.0.226.67         nlockmgr   unknown
100021    4    udp       0.0.0.0.226.67         nlockmgr   unknown
100021    1    tcp       0.0.0.0.134.55         nlockmgr   unknown
100021    3    tcp       0.0.0.0.134.55         nlockmgr   unknown
100021    4    tcp       0.0.0.0.134.55         nlockmgr   unknown
100011    1    udp       0.0.0.0.3.230          rquotad    unknown
100011    2    udp       0.0.0.0.3.230          rquotad    unknown
100011    1    tcp       0.0.0.0.3.233          rquotad    unknown
100011    2    tcp       0.0.0.0.3.233          rquotad    unknown
100003    2    udp       0.0.0.0.8.1            nfs        unknown
100003    3    udp       0.0.0.0.8.1            nfs        unknown
100003    4    udp       0.0.0.0.8.1            nfs        unknown
100003    2    tcp       0.0.0.0.8.1            nfs        unknown
100003    3    tcp       0.0.0.0.8.1            nfs        unknown
100003    4    tcp       0.0.0.0.8.1            nfs        unknown
100005    1    udp       0.0.0.0.3.243          mountd     unknown
100005    1    tcp       0.0.0.0.3.246          mountd     unknown
100005    2    udp       0.0.0.0.3.243          mountd     unknown
100005    2    tcp       0.0.0.0.3.246          mountd     unknown
100005    3    udp       0.0.0.0.3.243          mountd     unknown
100005    3    tcp       0.0.0.0.3.246          mountd     unknown

Meio Ambiente:

$ uname -a
Linux whiteheat 3.0.0-15-generic #26-Ubuntu SMP Fri Jan 20 17:23:00 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

$ mount.nfs a b -V
mount.nfs: (linux nfs-utils 1.2.4)
Chris Betti
fonte
alguma atualização? Percebi um desempenho inferior dos clientes nfs com kernels mais recentes, por exemplo, SLES 11 SP2 e CentOS 6.4 vs SLES 9 SP4. A única diferença que vejo nas estatísticas é que o authrefrsh é muito alto. Estou assumindo que isso seja uma sobrecarga extra que causa uma degradação no desempenho.
Banjer
Sem atualizações, desculpe. Afastei-me do NFS para o meu aplicativo, porque SSH + SCP era uma opção. A questão foi minando :)
Chris Betti
tem certeza de que não é um problema do nfs v3 vs. v4?
Kofemann
fyi esta questão do Unix SE tem mais pistas sobre esse problema: unix.stackexchange.com/questions/13557/…
Banjer
1
Mais sobre a história do bug: bugzilla.redhat.com/show_bug.cgi?id=785931
Deer Hunter

Respostas:

1

Encontrei esse problema exato com o NFS. O problema no meu caso foi causado pelo fato de o actimeo estar definido como muito baixo. Embora você não esteja usando essa configuração exata, há toda uma família de configurações que podem causar estragos: acregmin, acregmax, acdirmin e acdirmax. Essencialmente, o que acontece é que o sistema está armazenando em cache os atributos de arquivo do NFS. Essas configurações afetam por quanto tempo os atributos do arquivo são mantidos antes da atualização do NFS. Em um sistema com uso intenso, essas atualizações se tornam dolorosamente óbvias.

Outra configuração problemática é noac . Se você usar isso, garante que quaisquer gravações estarão imediatamente disponíveis para todos os outros clientes. No entanto, as gravações aguardam até que a gravação seja concluída no controle remoto, em vez de usar o write-behind. Isso pode deixar o sistema de joelhos se ele grava frequentemente no NFS.

Este é um artigo de blog interessante, onde eles falam sobre as diferentes opções e seus efeitos no desempenho do NFS. Você também pode consultar a página de manual do NFS para obter mais orientações. Infelizmente, o authrefrsh pode ser um pouco complicado e meu problema pode não ter relação alguma, embora com sintomas semelhantes.

Foosh
fonte
O iirc noac também se refere apenas ao cache de credenciais; portanto, as gravações nos metadados da permissão são imediatas, sem "gravações". Não editou, pois não tenho certeza agora.
Florian Heigl
Estou vendo um problema de desempenho relacionado ao noac, e isso é algo de fato, se estiver trabalhando com servidores NFS não corporativos.
Florian Heigl