4

Я использую gentoo, и в любое время, когда я работаю в режиме безотказной работы, моя "Средняя нагрузка" застревает на уровне 7.0 по всем направлениям. При использовании top, htop или dstat загрузка процессора всегда простаивает. Компьютер используется для запуска Java-программы, которая использует много пакетов NIO и java.util.concurrent (там может быть много спин-блокировок). Может ли это привести к увеличению числа ложных загрузок? Собственно, как можно начать отлаживать это? Компьютер не загружен, так как его производительность вполне нормальная. Какие-либо предложения?

uptime: " 10:56:50 up 327 days, 21:01,  4 users,  load average: 7.00, 7.03, 7.00"
uname -a: "Linux host 2.6.30-gentoo-r6 #1 SMP Tue Oct 6 12:08:22 EDT 2009 i686 Intel(R) Xeon(R) CPU X5550 @ 2.67GHz GenuineIntel GNU/Linux"

1 ответ1

2

Ваши номера, кажется, действительны и ниже чрезмерного использования. Полностью используемая система с восемью ядрами (или ЦП) будет иметь среднюю нагрузку 8,0. В настоящее время средняя загрузка составляет примерно 88%. Вот почему система не имеет проблем с производительностью.

Рекомендации:

http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages
http://www.linuxjournal.com/article/9001?page=0,1


Из википедии

Свободный компьютер имеет номер загрузки 0. Каждый процесс, использующий или ожидающий ЦП (очередь готовности или очередь выполнения), увеличивает число загрузки на 1. Большинство систем UNIX учитывают только процессы в состоянии «запущено» (на ЦП) или «работоспособно» (ожидает ЦП). Однако Linux также включает процессы в непрерывном спящем состоянии (обычно в ожидании активности диска), что может привести к заметно отличающимся результатам, если многие процессы остаются заблокированными в операциях ввода-вывода из-за загруженной или зависшей системы ввода-вывода [1]. Это, например, включает в себя блокировку процессов из-за сбоя сервера NFS или из-за медленного носителя (например, устройства хранения USB 1.x). Такие обстоятельства могут привести к повышению средней нагрузки, что не отражает фактического увеличения загрузки ЦП (но все же дает представление о том, как долго пользователям приходится ждать).

Это означает, что ваши потоки Java отвечают за загрузку, потому что (угадывая) большинство вещей в util.concurrent воспринимаются ОС как блокировка ввода-вывода. Вы можете начать исследовать эти процессы с помощью инструментов, которые упоминаются в ответах на этот вопрос: как выяснить, какой процесс потребляет, ждать-процессор?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .