Controlla informazioni dettagliate sulla CPU in Linux con CoreFreq

Hai mai sentito il bisogno di controllare le informazioni della CPU in Linux ? Hai mai desiderato conoscere la reale velocità della tua CPU? O quale processo è attualmente associato a un dato core? Quelle sembrano essere le domande solo per esperti.

Ma stai con me, come Alice, potresti scoprire più del previsto passando attraverso lo specchio. Quindi, senza ulteriori indugi, permettetemi di presentare il nostro protagonista principale: CoreFreq.

Conosci la tua CPU in Linux con CoreFreq

CoreFreq è uno strumento per raccogliere dati sulle prestazioni della CPU su sistemi Linux. Ha una licenza open source. È scritto da CyrIng uno sviluppatore francese e le fonti sono disponibili su GitHub.

Sebbene apparentemente stabile, CoreFreq deve essere considerato sperimentale. Ad oggi, è disponibile solo nel repository Arch. Non è ancora confezionato per nessuna altra distribuzione. Quindi, se vuoi fare un tentativo, potrebbe essere necessario compilarlo. Che non è difficile, e potrebbe essere un bel primo passo se non l'hai mai fatto prima.

Infine, ciò che distingue CoreFreq da altri strumenti simili è la raccolta di dati di alta precisione . Per fare ciò, CoreFreq deve monitorare la CPU il più vicino possibile all'hardware. Vediamo ora come ottiene informazioni sulla CPU sulla macchina Linux.

Come funziona CoreFreq?

CoreFreq è composto da tre parti. Un modulo del kernel, un daemon e un'interfaccia della riga di comando (CLI) di userland.

  • Per definizione, il modulo del kernel avrà pieno accesso all'host. È sua responsabilità raccogliere i dati di basso livello.
  • I dati vengono quindi raccolti da un demone di userland. Il daemon deve essere eseguito come root .
  • Infine, CoreFreq è dotato di un'interfaccia terminale per riportare i dati in un piacevole formato leggibile dall'uomo. Questo strumento CLI è un processo ordinario e può essere utilizzato dall'utente finale.

Compilare ed eseguire CoreFreq

Prima di eseguire CoreFreq, devi compilarlo. Ciò significa, trasformando il codice sorgente come scritto dal programmatore in modo tale che il tuo computer lo capirà. Non aver paura quando dico che devi compilarlo - non avrai molto lavoro da fare. Il tuo computer farà tutto il lavoro duro.

I passaggi necessari per compilare CoreFreq saranno per lo più uguali per tutte le distribuzioni Linux, tranne per l'installazione dei pacchetti richiesti. Qui do le istruzioni per CentOS / Red Hat e Debian. Sentiti libero di usare la sezione commenti per dare maggiori dettagli riguardo ad altre distribuzioni se necessario.

Tuttavia, è ora di aprire il tuo emulatore di terminale preferito e iniziare a digitare. Per Red Hat / CentOS, gli strumenti richiesti fanno parte del gruppo "Strumenti di sviluppo", quindi basta installarlo:

# specific to Red Hat, CentOS sudo yum group install "Development Tools" 

Per le distribuzioni basate su Debian e Debian, dovrai invece installare un paio di singoli pacchetti:

  # specific to Debian-based distributions sudo apt-get install dkms git libpthread-stubs0-dev 
  • dkms è uno strumento per compilare moduli del kernel dal sorgente. È necessario poiché CoreFreq è implementato come modulo del kernel per raccogliere i dati il ​​più vicino possibile dall'hardware;
  • git è uno strumento utilizzato per lo sviluppo distribuito. Qui useremo solo per scaricare una copia del più recente albero di sviluppo CoreFreq. Ma se vuoi, puoi aggiustare il software da te stesso e inviare richieste di pull allo sviluppatore originale;
  • libpthread-stubs0-dev è una libreria richiesta per creare CoreFreq (beh, infatti, su Linux contiene solo dati pkg-config, ma facciamo finta per oggi)

Una volta installati gli strumenti necessari sul tuo sistema, sarà il momento di scaricare il codice sorgente di CoreFreq:

  # Distribution-agnostic part git clone //github.com/cyring/CoreFreq.git 

Si prega di notare git scaricherà sia l'ultima versione del sorgente, sia tutta la cronologia delle modifiche del progetto. Per un semplice utente, questo è inutile. Ma ... ho la segreta speranza che questa sia l'occasione per te per dare un'occhiata più da vicino al processo di sviluppo open source. Ma chiudiamo questa parentesi, ora che sei pronto per compilare il software:

  cd CoreFreq/ make && echo Done 

Dopo pochi secondi, la parola "Done" dovrebbe apparire nella finestra del terminale, il che significa che la compilazione ha avuto successo.

A questo punto, le tre parti di CoreFreq sono compilate e pronte per essere avviate. Come ho detto prima, il software è composto da tre parti, quindi in realtà hai tre software per avviare CoreFreq.

Installazione del modulo del kernel

Per motivi tecnici, dato che CoreFreq utilizza lo stesso contatore di basso livello, è necessario prima disattivare il watchdog NMI.

Sul mio sistema Debian, ciò può essere fatto modificando il file / etc / default / grub per aggiungere l'argomento della riga di comando del kernel "nmi_watchdog = 0" ed eseguire update-grub seguito:

  sudoedit /etc/default/grub update-grub 

Ovviamente, è necessario riavviare il sistema affinché il nuovo argomento del kernel sia preso in considerazione.

Si prega di notare durante la scrittura di questo articolo, non l'ho fatto. E non ho alcun problema notevole.

Per installare il modulo del kernel, useremo lo strumento standard di Linux insmod. Caricherà il modulo nel kernel e lo "inizierà":

  sudo insmod corefreqk.ko 

Puoi verificare che CoreFreq sia installato usando lsmod:

  lsmod | grep corefreq corefreqk 45056 0 

Infine, puoi verificare se CoreFreq ha riconosciuto il tuo processore esaminando l'output di dmesg:

  sudo dmesg | grep CoreFreq [57413.945720] CoreFreq: Processor [06_1E] Architecture [Nehalem/Lynnfield] CPU [8/8] 

Avvio del demone

È giunto il momento di avviare il demone. Il suo scopo è raccogliere i dati raccolti dal modulo del kernel (dato che è un buon progetto fare il minor numero di cose possibile all'interno del kernel):

  sudo ./corefreqd -i 

Questo comando non verrà restituito mentre il daemon è in esecuzione. Quindi non essere sorpreso di vedere che il terminale apparentemente "si blocca" - non lo è: il demone sta semplicemente girando, pronto ad accettare le richieste dei clienti. Hai notato che uso il flag "-i" sopra? Questo è per il demone visualizza maggiori informazioni sul terminale su cosa sta succedendo. Solo una questione di curiosità- ma hey, questo articolo è tutto incentrato sulla curiosità!

Avvio del client

Ora sei pronto per avviare l'applicazione client. Apri un nuovo terminale e vai alla directory CoreFreq. Da lì eseguirai il client:

  cd CoreFreq ./corefreq-cli 

Indagare la tua CPU in Linux

Oltre alle caratteristiche statiche del processore, come il nome del modello o le sue funzionalità, una volta che CoreFreq è in esecuzione, è possibile iniziare a indagare sul comportamento dinamico della CPU in condizioni live. Ad esempio, nella schermata sopra, è possibile vedere i vari core del mio processore che funzionano tra 138 MHz e 334 MHz. Il carico (molto piccolo) viene equamente distribuito tra di loro.

Inoltre, è possibile visualizzare per ogni core la quantità di tempo trascorso nei vari stati C del processore (il totale dovrebbe essere al 100%) e il tempo trascorso in modalità Boost turbo. Se non hai familiarità con questi concetti, posso solo incoraggiarti a dare un'occhiata a quelle eccellenti spiegazioni di Victor Stinner: //haypo.github.io/intel-cpus.html

A questo punto, per il bene della dimostrazione, ho lanciato un ciclo infinito in un terminale nella "speranza" di consumare il 100% di un core:

  # infinite loop # eats 100% of the CPU--really? while true; do : ; done 

... e in effetti, posso vedere chiaramente quale core la shell che esegue il loop infinito è attualmente vincolata. Ciò può essere confermato esaminando il monitor dell'attività corefreq-cli

Premere per visualizzare il menu e selezionare Visualizza> Monitor attività:

Non puoi vederlo nella foto qui sopra, ma se lo fai da solo noterai che l'operazione salta da un core ad un altro dopo pochi secondi. Penso di conoscere la ragione di questo comportamento. Ma, potresti indovinarlo? Non esitare a utilizzare la sezione commenti per condividere le tue idee!

Ma prima di farlo, vediamo come fermare CoreFreq.

Ferma CoreFreq

Per fermare CoreFreq, devi semplicemente chiudere le tre parti del software, nell'ordine inverso in cui le hai avviate.

  • uscire dal client premendo F4 o CRTL-C nel terminale client
  • uscire dal demone premendo CTRL-C è il terminale del demone
  • rimuovere il modulo del kernel sudo rmmod corefreqk

E hai finito.

E adesso?

Con alcuni aspetti, CoreFreq ti porta alcune informazioni sulla CPU in Linux che puoi raccogliere usando top, htop, sensori, lscpu e pochi altri strumenti. Ma con CoreFreq, non solo tu hai tutte le informazioni in una sola interfaccia, ma dato il modo in cui i dati vengono raccolti hai una precisione maggiore. Infine, alcuni dati non sono semplicemente disponibili in nessun altro strumento, per quanto ne so, naturalmente (rapporto C-stati? Istruzione-per-cicli?)

È possibile trovare questo strumento come mirato solo per gli sviluppatori che cercano di mettere a punto algoritmi intensivi di calcolo. O per i giocatori desiderosi di verificare quanto guadagno hanno ottenuto overclockando il loro hardware.

Ma devo ammettere personalmente che trovo sempre tali strumenti interessanti in quanto ci permettono di "toccare" la realtà dell'hardware moderno, in genere molto più complessa di quanto non si pensi normalmente. Ad esempio, quanti di voi sapevano che il core di una CPU può funzionare a velocità diverse o potrebbe essere in modalità C diversa?

Ad ogni modo, sono abbastanza sicuro che alcuni di voi troveranno usi molto intelligenti di quello strumento o faranno scoperte interessanti sul loro hardware. Non esitate a condividerlo con noi nella sezione commenti qui sotto. Sono certo che CyrIng sarebbe felice di sentire le tue idee e feedback su CoreFreq per renderlo ancora migliore.

E, non dimenticare: se hai sviluppato un software open source, sentiti libero di contattarci per essere presenti su It's FOSS.

Raccomandato

Mantieni cronologia delle notifiche con notifiche recenti AppIndicator
2019
Note standard: App per la cattura di note crittografate open source
2019
TLDR: Linux Man Pages semplificato
2019