Estou executando o seguinte comando para obter o número de processadores / núcleos no Linux:
cat /proc/cpuinfo | grep processor | wc -l
Funciona, mas não parece elegante. Como você sugere melhorá-lo?
linux
bash
command-line
Michael
fonte
fonte
Respostas:
nproc
é o que você está procurando.Mais aqui: http://www.cyberciti.biz/faq/linux-get-number-of-cpus-core-command/
fonte
nproc
está lá na minha VM ubuntu, mas não na minha máquina baseada em RedHat 5.5.nproc --all
para todas as unidades de processamento instaladas. Sem--all
,nproc
mostra apenas as Unidades de Processamento disponíveis para o processo atual. Leia a página do manual para mais detalhes. MMV.A ferramenta mais simples vem com glibc e é chamada de
getconf
:fonte
nproc
, isso funciona (por padrão) no mac os x._NPROCESSORS_ONLN
(ou qualquer coisa com cpu, proc, etc) está listado em sua saída. Eu esperava que, por ser uma ferramenta posix, ela funcionasse no Linux / Solaris, então não tive que usar ramificações.Acho que o método que você fornece é o mais portátil no Linux. Em vez de gerar processos
cat
e desnecessárioswc
, você pode encurtá-lo um pouco:fonte
Se você quiser fazer isso para funcionar no Linux e no OS X, pode fazer:
fonte
psrinfo -p
lugarEm kernels mais recentes, você também pode usar a
/sys/devices/system/cpu/
interface para obter um pouco mais de informações:Consulte os documentos oficiais para obter mais informações sobre o que tudo isso significa.
fonte
online
arquivo, mais simples do que o nproc)Quando alguém pergunta "o número de processadores / núcleos", há 2 respostas solicitadas. O número de "processadores" seria o número físico instalado nos soquetes da máquina.
O número de "núcleos" seria núcleos físicos. Núcleos hyperthreaded (virtuais) não seriam incluídos (pelo menos em minha opinião). Como alguém que escreve muitos programas com pools de threads, você realmente precisa saber a contagem de núcleos físicos vs núcleos / hyperthreads. Dito isso, você pode modificar o script a seguir para obter as respostas de que precisa.
O resultado em uma máquina com 2 processadores físicos modelo Xeon X5650, cada um com 6 núcleos físicos que também suportam hyperthreading:
Em uma máquina com 2 processadores mdeol Xeon E5472, cada um com 4 núcleos físicos que não oferecem suporte a hyperthreading
fonte
O
lscpu(1)
comando fornecido pelo projeto util-linux também pode ser útil:fonte
Isso é para aqueles que desejam uma maneira portátil de contar núcleos de CPU em * bsd, * nix ou solaris (não testei em aix e hp-ux, mas deve funcionar). Sempre trabalhou para mim.
solaris
grep
eegrep
não tem-o
opção, entãosed
é usado em seu lugar.fonte
Outro one-liner, sem contar núcleos hyper-threaded :
fonte
Se você precisa de um método independente do sistema operacional, funciona em Windows e Linux. Use python
fonte