Como rastrear alguma atividade periódica do sistema que prejudica o desempenho em tempo real

0

Estou usando o Jack2 com o Pianoteq-5 em um laptop de dois núcleos executando 64bit ubuntu-14.04. Essas configurações são muito sensíveis ao desempenho em tempo real devido aos requisitos de baixa latência. No começo eu ouvi cliques constantes que basicamente desapareciam quando eu ajustava o /etc/security/limits.conf para habilitar o recurso RR para o grupo de áudio.

Agora, Jack e Pianoteq têm threads com a classe de agendamento SCHED_FIFO. Eu posso executar jack com buffer de tamanho de 128 amostras e funciona sem problemas a maior parte do tempo. Eu digo "mais" porque a cada dois minutos algo destrói o paraíso. Eu ouço todo um aglomerado de rachaduras terríveis. Eu suspeito que seja o resultado de alguma atividade de alta prioridade começando no segundo plano. Mas como descobrir quem é o culpado?

    
por Dmitry Vyal 01.07.2014 / 08:42

1 resposta

1

Aqui está uma maneira de fazer isso. Gera um monte de arquivos, mas não consigo pensar em outra maneira de fazê-lo.

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

Primeira maneira: use sysstat e colete estatísticas a cada 5 minutos (demora cerca de 8mb por dia). Sua entrada no cron seria algo como     5 * * * * / usr / lib / sa / sa1
ou     5 * * * * / usr / lib64 / sa / sa1

O 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 pesquisar dados históricos para ver a que horas o seu servidor estava ocupado.

Agora que você tem dados históricos em seu servidor, também é necessário 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 ver todos os processos em execução. Eu criaria dois subdiretórios "toparchive" e "psarchive" e os colocaria como meus trabalhos cron.

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"'

(isso vai ser um monte de arquivos, alternativamente você pode criar scripts para que você tenha subdiretórios adicionais com um datestamp, como / root / toparchive / 20140701 /)

Mas, basicamente, assista ao seu sysstat e você pode descobrir quando o seu servidor está ocupado, então verifique a saída top ou ps adequada que você capturou para ver o que ocupou o seu espaço

Se o processo estiver sobrecarregando a memória, você poderá usar adicionalmente "pmap" e "pgrep" para ver também os processos atuais e o uso de memória real.

    
por 01.07.2014 / 19:14