Мне просто интересно, как я могу узнать в bash, сколько процессорных ядер пользователь сейчас использует на Linux Server?
Я отправляю достаточное количество фоновых заданий на сервер, поэтому я хотел бы написать сценарий bash, чтобы проверить перед отправкой задания, не слишком ли много запущенных заданий (процессов), потому что я должен позволить другим у пользователей достаточно ядер для работы. Я хотел бы знать, какая команда bash может сказать мне, сколько ядер используется моей работой сейчас.
Спасибо и всего наилучшего!
Я не знаю, поможет ли это, но вы можете использовать эту
mpstat
утилиту для разбивки загрузки ЦП по отдельным процессорам (или ядрам). Например:В этом примере вы можете видеть , что центральный процессор
0
,1
и6
делают больше работы , чем остальные. Иногда вы увидите, что один процессор близок (или почти) к 100%, а другие - к нулю. Это может быть индикатор программы (или части программы), который является однопоточным и может использовать только один процессор за один раз.Для установки
mpstat
в системе Fedora, RHEL или CentOS используйтеyum install sysstat
.источник
# aptitude search mpstat #
.aptitude search systat
вместо этого.sysstat
на Debian и на Ubuntu . Я ожидаю, что большинство производных от Debian дистрибутивов используют одно и то же имя пакета. В дистрибутивах, основанных на Debian, начните сapt-cache search --full mpstat
.Если явно не настроено не (то есть, закрепление процесса на конкретном процессоре), можно предположить, что все ядра используются постоянно. Планировщик выделит процессам следующее доступное ядро. Например, «Системный монитор» (часть GNOME) показывает, что моя нагрузка почти одинакова на всех 4 ядрах моей машины.
источник
Итак, вы увидите здесь ответы, которые расскажут вам, как используются ваши ядра.
ОДНАКО - это на самом деле не делает вам услугу. Вы сделали базовое предположение, которое просто не имеет места - что ваши рабочие места будут стремиться сгруппировать себя в некоторое подмножество ядер.
Вместо этого ваши задания будут распределены по всем ядрам, если вы не реализуете что-то, что каким-то образом удерживает их. (Примечание: я не рекомендую этого; просто говорю «если»)
Вот альтернативная стратегия: Определите для вашей конкретной системы, что такое уровень НАГРУЗКИ, когда вы чувствуете, что для других пользователей «приемлемо» добавлять больше заданий. Затем создайте что-то, что отправляет новое фоновое задание только тогда, когда уровень нагрузки ниже этого предела.
Таким образом, решение будет независимым от количества ядер, более портативным, более гибким и более простым в настройке.
источник
Если вы хотите сделать это так, чтобы он работал на Linux и OS X, вы можете сделать:
источник
Вы можете получить приблизительную оценку, запустив
top
, нажав 'U
' и указав свое имя пользователя, а затем добавив загрузку ЦП из нескольких ваших лучших процессов.источник
top
может работать в пакетном режиме с ключом -b. Объедините его с ключом -n, чтобы получить необходимое количество итераций.top
вывод, или Google, чтобы увидеть, сделал ли это кто-то уже. Тем не менее, я не уверен, что это стоит затраченных усилий, потому что я думаю, что я получу разные результаты для каждого прогона, учитывая скорость, с которой происходит переключение контекста. Разве система не является достаточно хорошим индикатором? Он эффективно сообщает вам, сколько виртуальных ядер требуется для обработки очереди процессов (процессов, ожидающих на процессоре).