На Linux, как сказать, сколько ядер машины активно?

На Linux, как сказать, сколько ядер машины активно? Я предполагаю, что тест для этого будет работать для Android тоже. Мне нужно знать, активно ли более одного ядра. Хотелось проверить это, создав процесс, создающий много потоков. Возможно ли для потока запросить, на каком процессоре он работает? таким образом, можно определить, будут ли когда-либо использоваться несколько ядер под большой нагрузкой. Не уверен, что я на правильном пути.

5 ответов

Решение

Ты можешь использовать top перечислить использование каждого ядра. При необходимости нажмите 1, чтобы разделить строку ЦП на отдельный ряд для каждого ядра.

Вы также можете добавить столбец, который показывает последнее использованное ядро ​​для каждого процесса. Нажмите f, чтобы вызвать список полей, затем j, чтобы активировать столбец "P". Затем нажмите пробел, чтобы вернуться к просмотру в реальном времени.

ps имеет поле под названием psr чтобы сказать вам, на каком процессоре выполняется задание.

Таким образом, вы можете использовать что-то вроде:

ps -e -o psr= | sort | uniq | wc -l

Обратите внимание, что просто работает ps как это, конечно, сделает по крайней мере одно ядро ​​активным.

Вероятно, лучше запустить это:

tmp=/tmp/ps.$$
ps -e -o psr= > /tmp/ps.$$
sort -u "$tmp" | wc -l
rm "$tmp"

таким образом sort а также wc не увеличивайте количество.

htop

Эта команда хорошо работает как в Ubuntu, так и в Centos и графически показывает, сколько процессоров и как они используются.

для сентос:

yum install htop

для убунту:

apt-get install htop

Вы можете использовать cat /sys/devices/system/cpu/ возможный или cat /sys/devices/system/cpu/online. В основном это возможно, если у вас есть отдельный процессор для запуска какой-либо конкретной программы.

Попробуйте следующее:

cat /proc/cpuinfo

Вот ссылка на пример Android Java.

Другие вопросы по тегам