Как отследить периодическую активность системы, которая препятствует производительности в реальном времени
Я использую Jack2 с Pianoteq-5 на двухъядерном ноутбуке с 64-битной версией Ubuntu-14.04. Такие конфигурации очень чувствительны к производительности в реальном времени из-за требований низкой задержки. Сначала я слышал постоянные щелчки, которые в основном исчезали, когда я настраивал /etc/security/limits.conf, чтобы включить возможность RR для аудиогруппы.
Так что теперь и у Джека, и у Pianoteq есть потоки с классом планирования SCHED_FIFO. Я могу запустить jack с буфером размером 128 сэмплов, и он работает в большинстве случаев без сбоев. Я говорю "большинство", потому что каждые пару минут что-то разрушает рай. Я слышу целое скопление ужасных трещин. Я подозреваю, что это результат какой-то высокоприоритетной деятельности, начинающейся на заднем плане. Но как отследить, кто виноват?
1 ответ
Вот один из способов сделать это. Создает много файлов, но я не могу придумать другой способ сделать это.
Предполагая, что вас нет рядом, чтобы увидеть, когда сервер загружается, вы должны использовать sysstat для сбора ваших исторических данных о ресурсах.
Первый способ: используйте sysstat и собирайте статистику каждые 5 минут (это займет около 8 МБ в день). Ваша запись в cron будет выглядеть примерно так: 5 * * * * /usr/lib/sa/sa1
или 5 * * * * / usr / lib64 / sa / sa1
sysstat будет хранить до месяца данных. Но вы всегда можете скопировать файлы и заархивировать их.
Вы бы использовали команду "sar", чтобы просмотреть исторические данные, чтобы увидеть, когда ваш сервер был занят.
Теперь, когда у вас есть исторические данные на вашем сервере, вам также нужно захватить выходные данные процесса, чтобы вы могли видеть, что работает в данный момент. Вы можете использовать "PS" или "Top" для этого
Таким образом, каждые 5 минут вы также можете записывать выходные данные top и ps auxww, чтобы вы могли видеть все запущенные процессы. Я бы создал два подкаталога "toparchive" и "psarchive", а затем поместил их в качестве моих рабочих мест cron.
5 * * * * top -b -n 1 > /root/toparchive/top.`date +"%Y%m%d_%H%M%S"`
или же
5 * * * * ps auxww > /root/psarchive/ps.`date +"%Y%m%d_%H%M%S"`
(это будет много файлов, в качестве альтернативы вы можете написать его, чтобы у вас были дополнительные подкаталоги с меткой даты, например /root/toparchive/20140701/)
Но в основном следите за своим sysstat, и вы можете узнать, когда ваш сервер загружен, затем проверьте соответствующий вывод top или ps, который вы захватили, чтобы увидеть, что заняло ваше пространство
Если процесс загружает память, вы можете дополнительно использовать "pmap" и "pgrep" для просмотра текущих процессов и фактического использования памяти.