Uruchamiam następujące polecenie, aby uzyskać liczbę procesorów / rdzeni w systemie Linux:
cat /proc/cpuinfo | grep processor | wc -l
Działa, ale nie wygląda elegancko. Jak możesz to poprawić?
linux
bash
command-line
Michael
źródło
źródło
Odpowiedzi:
nproc
jest tym, czego szukasz.Więcej tutaj: http://www.cyberciti.biz/faq/linux-get-number-of-cpus-core-command/
źródło
nproc
znajduje się na mojej maszynie wirtualnej ubuntu, ale nie na mojej maszynie opartej na RedHat 5.5.nproc --all
dla wszystkich zainstalowanych jednostek przetwarzania. Bez--all
,nproc
pokazuje tylko jednostki przetwarzania dostępne dla bieżącego procesu. Przeczytaj stronę podręcznika, aby uzyskać więcej informacji. MMV.Najprostsze narzędzie jest dostarczane z glibc i nazywa się
getconf
:źródło
nproc
tego działa (domyślnie) w systemie Mac OS X._NPROCESSORS_ONLN
(lub cokolwiek z procesorem cpu, proc itp.) Jest wymienione w jego danych wyjściowych. Miałem nadzieję, że ponieważ jest to narzędzie posix, będzie działać w systemie Linux / Solaris, więc nie musiałem używać rozgałęziania.Myślę, że metoda, którą podajesz, jest najbardziej przenośna w systemie Linux. Zamiast odradzać niepotrzebne
cat
iwc
procesy, możesz je nieco skrócić:źródło
Jeśli chcesz to zrobić, aby działało na Linuksie i OS X, możesz zrobić:
źródło
psrinfo -p
zamiast tegoW nowszych jądrach możesz również użyć
/sys/devices/system/cpu/
interfejsu, aby uzyskać trochę więcej informacji:Zobacz oficjalne dokumenty, aby uzyskać więcej informacji o tym, co to wszystko oznacza.
źródło
online
plik, prostszy niż to, co robi nproc)Gdy ktoś zapyta o „liczbę procesorów / rdzeni”, wymagane są 2 odpowiedzi. Liczba „procesorów” byłaby liczbą fizyczną zainstalowaną w gniazdach na komputerze.
Liczba „rdzeni” odpowiadałaby rdzeniom fizycznym. Rdzenie hiperwątkowe (wirtualne) nie zostałyby uwzględnione (przynajmniej według mnie). Jako ktoś, kto pisze wiele programów z pulami wątków, naprawdę musisz znać liczbę rdzeni fizycznych w porównaniu z rdzeniami / hiperwątkami. To powiedziawszy, możesz zmodyfikować następujący skrypt, aby uzyskać odpowiedzi, których potrzebujesz.
Wynik na maszynie z 2 modelami procesorów fizycznych Xeon X5650, każdy z 6 fizycznymi rdzeniami, które również obsługują technologię wielowątkowości:
Na komputerze z 2 procesorami mdeol Xeon E5472, każdy z 4 fizycznymi rdzeniami, które nie obsługują wielowątkowości
źródło
lscpu(1)
Polecenie przekazane przez util-linux projektu może również być przydatne:źródło
To jest dla tych, którzy chcą przenośnego sposobu liczenia rdzeni procesora na * bsd, * nix lub solaris (nie testowano na aix i hp-ux, ale powinno działać). Zawsze mi się to udało.
solaris
grep
iegrep
nie mają-o
opcji, więcsed
jest używany zamiast tego.źródło
Kolejna linijka, bez liczenia rdzeni hiperwątkowych :
źródło
Jeśli potrzebujesz metody niezależnej od systemu operacyjnego, działa w systemach Windows i Linux. Użyj Pythona
źródło