Su Linux, come dire quanti core della macchina sono attivi?


13

Su Linux, come dire quanti core della macchina sono attivi? Presumo che un test per questo funzionerebbe anche per Android. Devo sapere se più di un core è mai attivo. Mi chiedevo di testarlo facendo in modo che un processo creava molti thread. È possibile per un thread interrogare su quale processore è acceso? in questo modo si può dire se più core saranno mai usati sotto carico pesante. Non sono sicuro di essere sulla strada giusta.


Per "attivo", suppongo che intendi quanti core sono attualmente in uso? O vuoi dire quanti core ha il sistema?
Mikel,

Sì, vorrei dire quanti sono attualmente in uso

Risposte:


19

È possibile utilizzare topper elencare l'utilizzo di ciascun core. Premere 1 se necessario per dividere la riga della CPU in una riga separata per ciascun core.

È inoltre possibile aggiungere una colonna che mostra l'ultimo core utilizzato per ciascun processo. Premere f per visualizzare l'elenco dei campi, quindi j per attivare la colonna "P". Quindi premere spazio per tornare alla vista dal vivo.


Quindi forse dovrei scrivere ed eseguire un programma che genera molti thread e quindi eseguire il comando 'top' nella console?
likejudo

Penso che dovrebbe funzionare. Premi H quando ti trovi topper elencare le discussioni separatamente. Oppure potresti scrivere un programma con un ciclo infinito ed eseguirlo un sacco di volte.
Brian,

Diciamo, scrivo il programma per generare 100 thread, ognuno eseguendo un calcolo lungo e intenso. Se lo scrivo in Java (Android), c'è una garanzia che JVM / KVM eseguirà i thread su core diversi e li eseguirà su tutti i core?
likejudo

1
Non lo so - non è quello che dovrebbe capire il tuo esperimento?
Brian,

Devo testare un programma che dice che limiterà il numero di core del processore utilizzati. Cercherò ancora un po '. Grazie!
Mi piace il

6

psha un campo chiamato psrper dirti su quale processore è in esecuzione un lavoro.

Quindi potresti usare qualcosa come:

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

Nota che il semplice funzionamento in psquesto modo renderà attivo almeno un core.

Probabilmente è meglio eseguire questo:

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

in questo modo il sorte wcnon aumentano il conteggio.


Cosa succede se il sistema ha 16 core e nessuno ne sta usando alcuni?

Quindi stampa 0 perché nessuno di essi è in uso. Penso che sia questa la domanda.
Mikel,

Non ho visto nuovi commenti alla domanda.

1
Naturalmente, eseguendo psstiamo rendendo attivo almeno 1 core. ;-)
Mikel,

Grazie per la tua risposta. Lo svantaggio è che ho bisogno di sapere se più di un core è mai attivo. Mi chiedevo di testarlo facendo in modo che un processo creava molti thread. È possibile per un thread interrogare su quale processore è acceso? in questo modo si può dire se più core saranno mai usati sotto carico pesante. Non sono sicuro di essere sulla strada giusta.

3
htop

Questo comando funziona bene in Ubuntu e Centos e mostra graficamente quante CPU e come vengono utilizzate.

per centos:

yum install htop

per Ubuntu:

apt-get install htop

2

Prova quanto segue:

cat /proc/cpuinfo

Ecco un link ad un esempio Java Android.


1
Per "attivo", suppongo che Anil significhi quanti core sono attualmente in uso e quanti sono inattivi, ovvero un'approssimazione di quanto il sistema sia occupato. /proc/cpuinfoti dice solo quanti core ha il sistema e anche tu dovresti fare di più che cat /proc/cpuinfotenere conto di HyperThreading.
Mikel,

OK - non era chiaro ma hai ragione.
Amir Afghani,

0

Puoi usare cat / sys / devices / system / cpu / possible o cat / sys / devices / system / cpu / online. È possibile soprattutto se hai isolato una cpu per eseguire qualche programma particolare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.