Чтобы получить количество ядер процессора на процессор:
grep "^core id" /proc/cpuinfo | sort -u | wc -l
Или получить количество физических процессоров :
grep "^physical id" /proc/cpuinfo | sort -u | wc -l
Мне просто интересно, как я могу узнать в bash, сколько процессорных ядер пользователь сейчас использует на Linux Server?
Я отправляю достаточное количество фоновых заданий на сервер, поэтому я хотел бы написать сценарий bash, чтобы проверить перед отправкой задания, не слишком ли много запущенных заданий (процессов), потому что я должен позволить другим у пользователей достаточно ядер для работы. Я хотел бы знать, какая команда bash может сказать мне, сколько ядер используется моей работой сейчас.
Спасибо и всего наилучшего!
Чтобы получить количество ядер процессора на процессор:
grep "^core id" /proc/cpuinfo | sort -u | wc -l
Или получить количество физических процессоров :
grep "^physical id" /proc/cpuinfo | sort -u | wc -l
Я не знаю, поможет ли это, но вы можете использовать mpstat
утилиту, чтобы получить распределение использования процессора по отдельным процессорам (или ядрам). Например:
$ mpstat -P ALL 1 12:49:59 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 12:50:00 PM all 7.89 0.00 1.25 0.88 0.00 0.00 0.00 89.97 1359.00 12:50:00 PM 0 14.00 0.00 0.00 0.00 0.00 0.00 0.00 86.00 1043.00 12:50:00 PM 1 15.84 0.00 7.92 3.96 0.00 0.99 0.00 71.29 297.00 12:50:00 PM 2 3.96 0.00 0.00 1.98 0.00 0.99 0.00 93.07 0.00 12:50:00 PM 3 3.96 0.00 0.99 2.97 0.00 0.00 0.00 92.08 0.00 12:50:00 PM 4 4.00 0.00 0.00 0.00 0.00 0.00 0.00 96.00 0.00 12:50:00 PM 5 4.95 0.00 0.99 0.00 0.00 0.00 0.00 94.06 18.00 12:50:00 PM 6 10.89 0.00 0.99 0.00 0.00 0.00 0.00 88.12 0.00 12:50:00 PM 7 5.05 0.00 0.00 0.00 0.00 0.00 0.00 94.95 0.00
В этом примере вы можете видеть, что центральный процессор 0
, 1
и 6
делают больше работы, чем остальные. Иногда вы увидите, что один процессор близок (или почти) к 100%, а другие - к нулю. Это может быть индикатор программы (или части программы), который является однопоточным и может использовать только один процессор за один раз.
Для установки mpstat
в системе Fedora, RHEL или CentOS используйте yum install sysstat
.
Если явно не настроено не (т.е. закрепление процесса на конкретном процессоре), можно предположить, что все ядра используются постоянно. Планировщик выделит процессам следующее доступное ядро. Например, «Системный монитор» (часть GNOME) демонстрирует почти одинаковую нагрузку на все 4 ядра моей машины.
Итак, вы увидите здесь ответы, которые расскажут вам, как используются ваши ядра.
ОДНАКО - это на самом деле не делает вам услугу. Вы сделали базовое предположение, которое просто не имеет места - что ваши рабочие места будут стремиться сгруппировать себя в некоторое подмножество ядер.
Вместо этого ваши задания будут распределены по всем ядрам, если вы не реализуете что-то, что каким-то образом удерживает их. (Примечание: я не рекомендую этого; просто говорю «если»)
Вот альтернативная стратегия: Определите для вашей конкретной системы, что такое уровень НАГРУЗКИ, когда вы чувствуете, что для других пользователей «приемлемо» добавлять больше заданий. Затем создайте что-то, что отправляет новое фоновое задание только тогда, когда уровень нагрузки ниже этого предела.
Таким образом, решение будет независимым от количества ядер, более портативным, более гибким и более простым в настройке.
If you want to do this so it works on linux and OS X, you can do:
CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu)
Вы можете получить приблизительную оценку, запустив top
, нажав ' U
' и указав свое имя пользователя, а затем добавив загрузку ЦП из нескольких ваших лучших процессов.