Cómo rastrear alguna actividad periódica del sistema que dificulta el rendimiento en tiempo real

Cómo rastrear alguna actividad periódica del sistema que dificulta el rendimiento en tiempo real

Estoy ejecutando Jack2 con Pianoteq-5 en una computadora portátil de dos núcleos con ubuntu-14.04 de 64 bits. Estas configuraciones son muy sensibles al rendimiento en tiempo real debido a los requisitos de baja latencia. Al principio escuché clics constantes que básicamente desaparecieron cuando modifiqué /etc/security/limits.conf para habilitar la capacidad RR para el grupo de audio.

Ahora tanto Jack como Pianoteq tienen subprocesos con la clase de programación SCHED_FIFO. Puedo ejecutar jack con un búfer de tamaño 128 muestras y funciona sin problemas la mayor parte del tiempo. Digo "la mayoría" porque cada dos minutos algo destruye el paraíso. Escucho un montón de crujidos terribles. Sospecho que es el resultado de alguna actividad de alta prioridad que comienza en segundo plano. ¿Pero cómo localizar quién es el culpable?

Respuesta1

Aquí tienes una forma de hacerlo. Genera MUCHOS archivos, pero no se me ocurre otra forma de hacerlo.

Suponiendo que no esté presente para ver cuándo el servidor está ocupado, debe usar sysstat para capturar los datos históricos de sus recursos.

Primera forma: use sysstat y recopile estadísticas cada 5 minutos (ocupará aproximadamente 8 MB por día). Su entrada cron se vería así 5 * * * * /usr/lib/sa/sa1
o 5 * * * * /usr/lib64/sa/sa1

sysstat mantendrá hasta un mes de datos. Pero siempre puedes copiar los archivos y archivarlos también.

Utilizaría el comando "sar" para revisar los datos históricos y ver a qué hora estuvo ocupado su servidor.

Ahora que tiene datos históricos en su servidor, también necesita capturar la salida del proceso para poder ver qué se está ejecutando en ese momento. Puedes usar "ps" o "top" para esto

Entonces, cada 5 minutos también puede capturar la salida de top y ps auxww para poder ver todos los procesos que se están ejecutando. Crearía dos subdirectorios "toparchive" y "psarchive" y luego los pondría como mis trabajos cron.

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

o

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

(serán muchos archivos; alternativamente, puede crear un script para tener subdirectorios adicionales con una marca de fecha, como /root/toparchive/20140701/)

Pero básicamente observe su sysstat y podrá saber cuándo su servidor está ocupado, luego verifique la salida superior o ps apropiada que haya capturado para ver qué ocupó su espacio.

Si el proceso está acaparando la memoria, también puede utilizar "pmap" y "pgrep" para observar los procesos actuales y también el uso real de la memoria.

información relacionada