Eu gostaria de fazer uma análise 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 coisas que estou procurando saber são:
- Quais arquivos estão sendo acessados por quais clientes
- Taxa de transferência de leitura / gravação por cliente
- Despesas gerais impostas por outras chamadas RPC
- Tempo gasto aguardando outras solicitações NFS, ou E / S de disco, para atender um cliente
Eu já sei sobre as estatísticas disponíveis /proc/net/rpc/nfsd
e, de fato, escrevi uma postagem no blog descrevendo-as em profundidade. O que estou procurando é uma maneira de aprofundar e ajudar a entender quais fatores estão contribuindo para o desempenho observado por um cliente específico. 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 otimizá-lo da melhor maneira.
linux
performance
nfs
Kamil Kisiel
fonte
fonte
Respostas:
Apenas uma idéia, tente cheirar o tráfego da NFS com o wireshark. Pode dizer qual usuário acessou qual arquivo:
fonte
Eu tenho que dizer de todos os diferentes utilitários * stat disponíveis para um, o nfsstat é de longe o pior! Isso permite que você veja vários contadores, mas é tudo. Se você olhar para eles duas vezes, terá que fazer o trabalho de tentar descobrir o quanto cada contador mudou e, se quiser saber a taxa de alteração, precisará dividir pelo número de segundos entre as amostras. Com toda a justiça, o nfsstat data de muitos anos em que as coisas ainda eram bastante grosseiras e agora é dificultada por ninguém querer mudar o formato da saída, porque provavelmente quebraria muitas coisas.
Quanto ao uso do collectl para monitorar o nfs, ele fornece a saída do nfsstat em um formato muito mais fácil de ler, mas o melhor é que você pode deixá-lo funcionar por horas ou dias e reproduzir os dados que você coletou em segundo plano. Quanto à solicitação para ver o que os processos estão executando, o collectl também pode coletar dados do processo, incluindo a quantidade de E / S que cada processo está executando e até 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 próprio eu também pode fazer isso e exibir tudo em uma exibição coordenada.
Confira ... -marque
fonte
O collectl (especialmente seu subsistema NFS ) é um utilitário muito bom que pode ser útil para sua análise, mas não corresponde à sua lista de requisitos. Não conheço nenhum utilitário Linux que faça isso.
(Por favor, deixe-me adicionar esta nota fora do tópico: Há um software que atende aos seus requisitos: Analytics baseado em DTrace da Sun (pdf) - mas infelizmente não está disponível no Linux. Você encontrará muitos exemplos excelentes no blog de Brendan Gregg, que ilustram os recursos desta ferramenta.)
fonte
Confira nfsstat. Não mostra tudo o que você deseja, mas pelo menos um bom subconjunto.
http://linux.die.net/man/8/nfsstat
fonte
Na minha opinião, isso destaca exatamente o problema com as ferramentas de hoje. Aqui são mencionados pelo menos três, incluindo nfsstat, iostat e iotop. Depois, houve uma menção passageira a wireshare e nfsreplay. Isso realmente soa como uma maneira normal de fazer as coisas? Além de wireshark, há uma categoria própria, você não prefere uma ferramenta?
Para abridores, embora eu ache a saída do iostat muito útil, é muito difícil ler com todos esses 0,00 nos números. Collectl relata exatamente os mesmos dados, mas é muito mais fácil de formatar. Você já sabe o que penso do nfsstat e, como o collectl pode reproduzir qualquer dado, não há necessidade de um utilitário 'replay'. Quanto ao 'iotop', o collect também pode mostrar processos classificados por qualquer E / S incluída.
Então, você também tem tudo isso, com carimbos de data e hora. Se você precisar de um intervalo de monitoramento mais preciso, poderá sempre aumentar a amostragem para 0,1 ou 0,5 segundos ou qualquer coisa intermediária, embora você gere mais sobrecarga se monitorar processos tão rapidamente, mas faria com qualquer utilitário de monitoramento de processos.
E o bônus final é qualquer coisa que você coleciona com collectl, que você pode carregar em uma planilha e plotar facilmente OU usar colplot, que faz parte dos collectl-utils.
-marca
fonte
Você pode tentar
nfswatch
em http://nfswatch.sourceforge.netVocê pode ver alguns exemplos de resultados em http://prefetch.net/blog/index.php/2009/06/16/monitoring-nfs-operations-with-nfswatch/
nfswatch
é comotop
(embora eu não tenha certeza se existe um modo em lote). Após a execução, você pode alterar a exibição da tela pressionando uma tecla (por exemplo, "c" para exibir clientes NFS usando o servidor NFS).No meu breve teste, no entanto,
nfswatch
parece não funcionar com o NFSv4.fonte
Não tenho respostas melhores no momento, no entanto, você pode acompanhar o IO do disco com muita precisão com
Ele fornece números muito úteis, principalmente o tamanho médio da fila e o tempo de espera (em ms) para suas E / S. Ele mostra com bastante facilidade se seus discos são um gargalo e se o gargalo é contagem ou taxa de transferência de E / S.
Então com
Você verá as conexões do cliente e os bytes transferidos de cada cliente em tempo real. loop para dados contínuos. Seria muito fácil criar um script que forneça dados contínuos ... Estou trabalhando nele :)
Agora, para obter IO 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, eu estou preso. Na verdade, os arquivos atualmente lidos / gravados a partir de um cliente NFS nem aparecem na saída lsof.
Apenas para expandir o netstat, use watch -d para ver como as coisas mudam e classificam por host
fonte
Você pode querer dar uma olhada no nfsreplay. Isso pode ajudá-lo a descobrir o que está acontecendo. Além disso, você pode encontrar informações e links aqui úteis
fonte