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 coisas que procuro saber são:
- Quais arquivos estão sendo acessados por quais clientes
- Taxa de transferência de leitura/gravação por cliente
- Sobrecarga imposta por outras chamadas RPC
- Tempo gasto aguardando outras solicitações NFS, ou E/S de disco, para atender um cliente
Já conheço as estatísticas disponíveis /proc/net/rpc/nfsd
e de facto escrevi umpostagem no blogdescrevendo-os em profundidade. O que procuro é uma forma de me aprofundar e ajudar a entender quais fatores estão contribuindo para o desempenho visto por um determinado cliente. Quero analisar a função que o servidor NFS desempenha no desempenho de um aplicativo em nosso cluster para poder pensar nas melhores maneiras de otimizá-lo.
Responder1
Apenas uma ideia, tente detectar o tráfego NFS com o Wireshark. Pode informar qual usuário acessou qual arquivo:
tshark -R nfs -i eth0
Responder2
Devo dizer que de todos os diferentes utilitários *stat disponíveis, o nfsstat é de longe o pior! Dá a você a capacidade de ver vários contadores, mas isso é tudo. Se você olhar para eles duas vezes, VOCÊ terá que tentar descobrir quanto cada contador mudou e, se quiser saber a taxa de mudança, precisará dividir pelo número de segundos entre as amostras. Com toda a justiça, o nfsstat remonta a muitos anos, quando as coisas ainda eram bastante rudimentares e agora é prejudicado por ninguém querer alterar o formato de saída porque provavelmente quebraria muitas coisas.
Quanto ao uso do collectl para monitorar o nfs, ele fornece saída do nfsstat em um formato muito mais fácil de ler, mas o que é ainda melhor é que você pode deixá-lo rodar por horas ou dias e reproduzir os dados coletados em segundo plano. Quanto à solicitação para ver o que os processos estão fazendo, o collectl também pode coletar dados do processo, incluindo a quantidade de E/S que cada processo está realizando e até mesmo reproduzi-los 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, você também pode fazer isso e exibir tudo em uma exibição coordenada.
Confira... -marca
Responder3
coletar(especialmente seuSubsistema NFS) é um utilitário muito bom que pode ser útil para sua análise, mas nãonãocorresponda à 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áésoftware que atenda às suas necessidades: Sun baseado em DTraceAnálise (pdf)- mas infelizmente não está disponível no Linux. Você encontrará muitos exemplos excelentes emBlog de Brendan Greggque ilustram os recursos desta ferramenta.)
Responder4
Na minha opinião, isso destaca exatamente o problema das ferramentas atuais. Aqui mencionamos pelo menos 3, incluindo nfsstat, iostat e iotop. Depois houve uma menção passageira ao wireshare e ao nfsreplay. Isso realmente parece uma maneira normal de fazer as coisas? Além do wireshark ser uma categoria própria, você não preferiria uma ferramenta?
Para começar, embora eu ache a saída do iostat muito útil, é muito difícil de ler com todos aqueles 0,00 nos números. Collectl relata exatamente os mesmos dados, mas com uma formatação muito mais fácil para os olhos. Você já sabe o que 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 na E/S.
Então aí está tudo também, completo com carimbos de data e hora. Se você precisar de um intervalo de monitoramento mais preciso, poderá sempre reduzir a amostragem para 0,1 ou 0,5 segundos ou qualquer valor intermediário, embora você gere mais sobrecarga se monitorar processos tão rapidamente, mas faria isso com qualquer utilitário de monitoramento de processos.
E o bônus final é qualquer coisa que você coletar com o collectl, que você pode carregar em uma planilha e plotar facilmente OU usar o colplot que faz parte do collectl-utils.
-marca