Como rastrear algumas atividades periódicas do sistema que prejudicam o desempenho em tempo real

Como rastrear algumas atividades periódicas do sistema que prejudicam o desempenho em tempo real

Estou executando o Jack2 com Pianoteq-5 em um laptop de dois núcleos executando o Ubuntu-14.04 de 64 bits. Essas configurações são muito sensíveis ao desempenho em tempo real devido aos requisitos de baixa latência. No início, ouvi cliques constantes que basicamente desapareceram quando ajustei o /etc/security/limits.conf para ativar a capacidade RR para o grupo de áudio.

Então agora tanto Jack quanto Pianoteq possuem threads com classe de agendamento SCHED_FIFO. Posso executar o jack com buffer de amostras de tamanho 128 e ele funciona perfeitamente na maior parte do tempo. Digo 'mais' porque a cada dois minutos algo destrói o paraíso. Eu ouço um monte de estalos terríveis. Suspeito que seja o resultado de alguma atividade de alta prioridade iniciada em segundo plano. Mas como rastrear quem é o culpado?

Responder1

Aqui está uma maneira de fazer isso. Gera MUITOS arquivos, mas não consigo pensar em outra maneira de fazer isso.

Supondo que você não esteja por perto para ver quando o servidor fica ocupado, você deve usar o sysstat para capturar seus dados históricos de recursos.

Primeira forma: use o sysstat e colete estatísticas a cada 5 minutos (ocupará cerca de 8 MB por dia). Sua entrada cron seria algo como 5 * * * * /usr/lib/sa/sa1
ou 5 * * * * /usr/lib64/sa/sa1

sysstat manterá até um mês de dados. Mas você sempre pode copiar os arquivos e arquivá-los também.

Você usaria o comando “sar” para analisar os dados históricos e ver a que horas seu servidor ficou ocupado.

Agora que você tem dados históricos em seu servidor, também precisa capturar a saída do processo para poder ver o que está sendo executado no momento. Você pode usar "ps" ou "top" para isso

Assim, a cada 5 minutos você também pode capturar a saída de top e ps auxww para poder ver todos os processos em execução. Eu criaria dois subdiretórios "toparchive" e "psarchive" e depois os colocaria como meus cron jobs.

5 * * * * top -b -n 1 > /root/toparchive/top.`date +"%Y%m%d_%H%M%S"`

ou

5 * * * * ps auxww > /root/psarchive/ps.`date +"%Y%m%d_%H%M%S"`

(serão muitos arquivos, como alternativa, você pode criar um script para ter subdiretórios adicionais com um carimbo de data, como /root/toparchive/20140701/)

Mas basicamente observe seu sysstat e você poderá descobrir quando seu servidor fica ocupado e, em seguida, verifique a saída top ou ps apropriada que você capturou para ver o que ocupou seu espaço

Se o processo estiver consumindo memória, você também poderá usar "pmap" e "pgrep" para observar os processos atuais e também o uso real da memória.

informação relacionada