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
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 é:
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.
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
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
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.
Confira o nfsstat. Não mostra tudo o que você quer, mas pelo menos um bom subconjunto.
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
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.
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"
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
Tags performance nfs linux