Analisando o desempenho do servidor Linux NFS

21

Gostaria de fazer algumas análises do nosso servidor NFS para ajudar a rastrear possíveis gargalos em nossos aplicativos. O servidor está executando o SUSE Enterprise Linux 10.

O tipo de coisa que eu quero saber é:

  • Quais arquivos estão sendo acessados pelos clientes
  • Taxa de transferência de leitura / gravação por cliente
  • Sobrecarga imposta por outras chamadas RPC
  • Tempo gasto em espera em outras solicitações NFS, ou E / S de disco, para atender um cliente

Eu já conheço as estatísticas disponíveis em /proc/net/rpc/nfsd e, na verdade, escrevi um postagem no blog descrevendo-os em profundidade. O que eu estou procurando é uma maneira de aprofundar e ajudar a entender quais fatores estão contribuindo para o desempenho visto por um determinado cliente. Eu quero analisar a função que o servidor NFS desempenha no desempenho de um aplicativo em nosso cluster para que eu possa pensar em maneiras de melhor otimizá-lo.

    
por Kamil Kisiel 10.07.2009 / 05:33

8 respostas

2

Apenas uma ideia, tente farejar o tráfego do nfs com o wireshark. Pode dizer qual usuário acessou qual arquivo:

tshark -R nfs -i eth0
    
por 10.07.2009 / 15:08
2

Eu tenho que dizer de todos os diferentes utilitários * stat disponíveis para um, nfsstat é de longe o pior! Dá-lhe a capacidade de olhar para um monte de contadores, mas isso é tudo. Se você olhar para eles duas vezes, você tem que fazer o trabalho de tentar descobrir o quanto cada contador mudou e se você quer saber a taxa de mudança, então você precisa dividir pelo número de segundos entre as amostras. Com toda a justiça, o nfsstat data muitos anos quando as coisas ainda eram muito rudimentares e agora é dificultado por ninguém querer mudar o formato de saída porque provavelmente quebraria muitas coisas.

Quanto ao uso de collectl para monitorar nfs, ele fornece saída nfsstat em um formato de leitura muito mais fácil, mas o que é ainda melhor, você pode deixá-lo rodar por horas ou dias e reproduzir os dados coletados em segundo plano. Quanto ao pedido para ver o que os processos estão fazendo, o collectl também pode coletar dados do processo, incluindo quanto E / S cada processo está fazendo e até mesmo reproduzi-lo, mostrando os principais usuários de E / S. Você também pode usar o recurso principal em tempo real.

Se você quiser assistir ao tema dos discos, o e-mail collectl também pode fazer isso e exibir tudo em uma exibição coordenada.

Confira ... -mark

    
por 13.07.2009 / 12:41
2

collectl (especialmente seu subsistema NFS ) é um utilitário muito interessante que pode ser útil para sua análise, mas não não corresponde à sua lista de requisitos. Eu não estou ciente de nenhum utilitário Linux que faça isso.

(Por favor, deixe-me adicionar esta nota off-topic: Existe software que corresponde aos seus requisitos: baseado no DTrace da Sun Analytics (pdf) - mas infelizmente não está disponível no Linux. Você encontrará muitos exemplos em Blog do Brendan Gregg que ilustra as capacidades desta ferramenta.

    
por 11.07.2009 / 12:27
1

Confira o nfsstat. Não mostra tudo o que você quer, mas pelo menos um bom subconjunto.

link

    
por 12.07.2009 / 23:56
1

Na minha opinião, isso exatamente destaca o problema com as ferramentas de hoje. Aqui estamos mencionados pelo menos 3, incluindo nfsstat, iostat e iotop. Depois houve menção de wireshare e nfsreplay. Isso realmente soa como uma maneira normal de fazer as coisas? Além de wireshark com é uma categoria própria, você não preferiria 1 ferramenta?

Para os abridores, embora eu ache a saída do iostat muito útil, é muito difícil de ler com todos aqueles .00 nos números. O Collectl reporta exatamente os mesmos dados, mas é formatado muito mais facilmente aos olhos. Você já sabe o que eu penso do nfsstat e como o collectl pode reproduzir qualquer dado, não há necessidade de um utilitário de 'replay'. Quanto ao 'iotop', o collect também pode mostrar processos classificados por qualquer coisa incluída I / O.

Então, você também tem tudo isso, completo com timestamps. Se você precisar de um intervalo de monitoramento mais refinado, pode sempre voltar a amostragem para 0,1 ou 0,5 segundos ou qualquer coisa no meio, embora você gere mais sobrecarga se monitorar os processos tão rapidamente, mas com qualquer utilitário de monitoramento de processos.

E o bônus final é qualquer coisa coletada com o collectl que você possa carregar em uma planilha e facilmente traçar ou usar o colplot que faz parte do collectl-utils.

-mark

    
por 14.11.2010 / 13:07
1

Você pode experimentar o nfswatch do link

Você pode ver um exemplo de saída no link

nfswatch é como top (embora não tenha certeza se há um modo em lote). Quando estiver em execução, você poderá alterar a exibição ao pressionar uma tecla (por exemplo, "c" para exibir clientes NFS usando seu servidor NFS).

No meu breve teste, no entanto, nfswatch parece não funcionar com o NFSv4.

    
por 26.10.2012 / 22:24
1

Eu não tenho melhores respostas no momento, no entanto você pode seguir o disco IO com bastante precisão

iostat -mx <delay in sec.> <devices>

Ele fornece números muito úteis, particularmente o tamanho médio da fila e o tempo de espera (em ms) para suas OIs. Ele é mostrado facilmente se os seus discos são um gargalo e se o gargalo é uma contagem de E / S ou uma taxa de transferência.

Então, com

netstat -plaute | grep nfs

Você verá as conexões do cliente e os bytes transferidos de cada cliente em tempo real. loop nele para dados contínuos. Seria muito fácil fazer um script que fornecesse dados contínuos ... Estou trabalhando nisso:)

Agora, para obter o pedido de veiculação por processo, você pode usar o excelente iotop . Você ainda precisa encontrar uma maneira de combinar os processos nfsd com os clientes.

Quanto a quais arquivos estão sendo acessados por qual cliente, estou preso. Na verdade, arquivos atualmente lidos / gravados de um cliente NFS nem aparecem na saída lsof.

Apenas para expandir o netstat, use watch -d para ver como as coisas mudam & ordenar por host

watch -d "netstat -plaute | grep nfs | sort -k 4,5"
    
por 10.07.2009 / 12:21
0

Você pode querer verificar o nfsreplay. Pode ajudar você a descobrir o que está acontecendo. Você também pode encontrar as informações e links aqui útil

    
por 12.07.2009 / 08:27