Я запускаю следующую команду, чтобы узнать количество процессоров / ядер в Linux:
cat /proc/cpuinfo | grep processor | wc -l
Это работает, но не выглядит элегантно. Как бы вы посоветовали его улучшить?
linux
bash
command-line
Майкл
источник
источник
Ответы:
nproc
это то, что вы ищете.Подробнее здесь: http://www.cyberciti.biz/faq/linux-get-number-of-cpus-core-command/
источник
nproc
есть на моей виртуальной машине ubuntu, но не на моей машине с RedHat 5.5.nproc --all
для всех установленных процессорных блоков. Без--all
,nproc
показывает только единицы обработки, доступные для текущего процесса. Прочтите страницу руководства для получения более подробной информации. MMV.Самый простой инструмент поставляется с glibc и называется
getconf
:источник
nproc
этого, это работает (по умолчанию) на Mac OS X._NPROCESSORS_ONLN
(или что-то еще с cpu, proc и т. Д.), Она отображается в ее выводе. Я надеялся, так как это инструмент posix, он будет работать в Linux / Solaris, поэтому мне не пришлось использовать ветвление.Я думаю, что предложенный вами метод является наиболее переносимым в Linux. Вместо того , порождая ненужные
cat
иwc
процессы, вы можете сократить его немного:источник
Если вы хотите, чтобы это работало в Linux и OS X, вы можете:
источник
psrinfo -p
вместо этогоВ новых ядрах вы также можете использовать
/sys/devices/system/cpu/
интерфейс для получения дополнительной информации:См. Официальную документацию для получения дополнительной информации о том, что все это означает.
источник
online
файл, более простой, чем то, что делает nproc)Когда кто-то спрашивает «количество процессоров / ядер», запрашиваются 2 ответа. Число «процессоров» будет физическим числом, установленным в сокетах на машине.
Количество «ядер» будет физическим. Гиперпоточные (виртуальные) ядра не будут включены (по крайней мере, на мой взгляд). Как тому, кто пишет много программ с пулами потоков, вам действительно нужно знать количество физических ядер по сравнению с ядрами / гиперпотоками. Тем не менее, вы можете изменить следующий сценарий, чтобы получить нужные вам ответы.
Результат на машине с 2 физическими процессорами модели Xeon X5650, каждый с 6 физическими ядрами, которые также поддерживают гиперпоточность:
На машине с 2 процессорами mdeol Xeon E5472, каждый с 4 физическими ядрами, которые не поддерживают гиперпоточность
источник
Также может быть полезна
lscpu(1)
команда, предоставленная проектом util-linux :источник
Это для тех, кто хочет портативного способа подсчета ядер процессора на * bsd, * nix или solaris (не тестировал на aix и hp-ux, но должен работать). У меня это всегда срабатывало.
solaris
grep
&egrep
not have-o
option, поэтомуsed
вместо этого используется.источник
Еще один однострочник, без учета гиперпоточных ядер :
источник
Если вам нужен метод, независимый от ОС, работает в Windows и Linux. Использовать питон
источник