Controleer Gedetailleerde CPU-informatie in Linux met CoreFreq

Heb je ooit de behoefte gevoeld om CPU-informatie onder Linux te controleren ? Heb je ooit de echte snelheid van je CPU willen weten? Of welk proces is momenteel gebonden aan een bepaalde kern? Dat lijken de vragen alleen voor experts te zijn.

Maar blijf bij mij - zoals Alice, je kunt meer ontdekken dan verwacht door door het kijkglas te gaan. Dus, zonder verder oponthoud, laat me onze hoofdpersoon voorstellen: CoreFreq.

Ken je CPU in Linux met CoreFreq

CoreFreq is een hulpmiddel voor het verzamelen van CPU-prestatiegegevens op Linux-systemen. Het heeft een open source licentie. Het is geschreven door een Franse ontwikkelaar en de bronnen zijn beschikbaar op GitHub.

Hoewel blijkbaar stabiel, moet CoreFreq als experimenteel worden beschouwd. Vanaf vandaag is het alleen beschikbaar in Arch-repository. Het is (nog) niet verpakt voor enige andere distributie. Dus als je het eens wilt proberen, moet je het misschien compileren. Dat is niet moeilijk, en misschien een leuke eerste stap als je dat nog nooit eerder hebt gedaan.

Ten slotte, wat CoreFreq onderscheidt van andere vergelijkbare tools, is dat het gericht is op het verzamelen van gegevens met hoge precisie . Om dat te doen, moet CoreFreq de CPU zo dicht mogelijk bij de hardware houden. Laten we nu eens kijken hoe het CPU-informatie krijgt op de Linux-machine.

Hoe werkt CoreFreq?

CoreFreq bestaat uit drie delen. Een kernelmodule, een daemon en een userland- opdrachtregelinterface (CLI).

  • Per definitie heeft de kernelmodule volledige toegang tot de host. Het is zijn verantwoordelijkheid om de gegevens op laag niveau te verzamelen.
  • Gegevens worden vervolgens verzameld door een daemon van de gebruiker. De daemon moet als root worden uitgevoerd.
  • Ten slotte wordt CoreFreq geleverd met een terminalinterface om gegevens te rapporteren in een aardige, door mensen leesbare indeling. Die CLI-tool is een gewoon proces en kan door de eindgebruiker worden gebruikt.

CoreFreq compileren en uitvoeren

Voordat u CoreFreq uitvoert, moet u het compileren. Dat betekent, de broncode zo transformeren als geschreven door de programmeur op een manier dat uw computer dit begrijpt. Wees niet bang als ik zeg dat je het moet compileren - je zult niet veel werk te doen hebben. Uw computer zal al het harde werk doen.

De stappen die nodig zijn om CoreFreq te compileren, zullen grotendeels hetzelfde zijn voor alle Linux-distributies, behalve voor de installatie van de vereiste pakketten. Hier geef ik de instructies voor CentOS / Red Hat en Debian. Voel je vrij om de commentaarsectie te gebruiken om meer details te geven over andere distributies indien nodig.

Toch is het nu tijd om je favoriete terminalemulator te openen en te beginnen met typen. Voor Red Hat / CentOS zijn de vereiste hulpmiddelen onderdeel van de groep "Ontwikkelingshulpmiddelen", dus installeer gewoon dat:

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

Voor op Debian en Debian gebaseerde distributies moet u in plaats daarvan enkele afzonderlijke pakketten installeren:

  # specific to Debian-based distributions sudo apt-get install dkms git libpthread-stubs0-dev 
  • dkms is een hulpmiddel om kernelmodules van de bron te bouwen. Het is vereist omdat CoreFreq is geïmplementeerd als een kernelmodule om gegevens zo dicht mogelijk bij de hardware te verzamelen;
  • git is een tool die wordt gebruikt voor gedistribueerde ontwikkeling. Hier zullen we alleen gebruiken om een ​​kopie van de nieuwste CoreFreq-ontwikkelboom te downloaden. Maar als u wilt, kunt u de software zelf patchen en trekkingsverzoeken sturen naar de oorspronkelijke ontwikkelaar;
  • libpthread-stubs0-dev is een vereiste bibliotheek om CoreFreq te bouwen (eigenlijk bevat Linux alleen pkg-config-gegevens, maar laten we doen alsof voor vandaag)

Zodra de vereiste hulpmiddelen op uw systeem zijn geïnstalleerd, wordt het tijd om de broncode van CoreFreq te downloaden:

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

Let op: git zal zowel de laatste versie van de bron downloaden, als alle wijzigingshistorie van het project. Voor een eenvoudige gebruiker is dit nutteloos. Maar ... ik heb de geheime hoop dat dit de gelegenheid zou kunnen zijn voor u om het open source ontwikkelingsproces van naderbij te bekijken. Maar laten we dat haakje sluiten - terwijl je nu klaar bent om de software te compileren :

  cd CoreFreq/ make && echo Done 

Na enkele seconden zou het woord "Klaar" moeten verschijnen in het terminalvenster, wat betekent dat de compilatie succesvol was.

Op dit punt zijn de drie delen van CoreFreq gecompileerd en klaar om te starten. Zoals ik al eerder zei, bestaat de software uit drie delen, dus je hebt in feite drie software om CoreFreq te starten.

De kernelmodule installeren

Om technische redenen - aangezien CoreFreq dezelfde low-level counter gebruikt, moet u eerst NMI-watchdog uitschakelen.

Op mijn Debian-systeem kan dat door het / etc / default / grub-bestand te bewerken om het "nmi_watchdog = 0" kernelcommandaregelargument toe te voegen en daarna update-grub te voeren:

  sudoedit /etc/default/grub update-grub 

Natuurlijk moet je opnieuw opstarten voor het nieuwe kernelargument waarmee rekening moet worden gehouden.

Let op tijdens het schrijven van dit artikel, ik heb het niet gedaan. En ik heb geen merkbaar probleem.

Om de kernelmodule te installeren, zullen we de standaard Linux-tool insmod gebruiken. Het laadt de module in de kernel en "start" het:

  sudo insmod corefreqk.ko 

U kunt controleren of CoreFreq is geïnstalleerd met lsmod:

  lsmod | grep corefreq corefreqk 45056 0 

En tot slot kunt u controleren of CoreFreq uw processor heeft herkend door de uitvoer van dmesg te bekijken:

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

De daemon starten

Het is nu tijd om de daemon te starten. Het doel is om gegevens te verzamelen die zijn verzameld door de kernelmodule (aangezien het een goed ontwerp is om zo min mogelijk dingen in de kernel te doen):

  sudo ./corefreqd -i 

Deze opdracht keert niet terug terwijl de daemon actief is. Dus wees niet verrast om te zien dat je terminal blijkbaar "hangt" -het is het niet: de daemon draait gewoon, klaar om client-verzoeken te accepteren. Is het u opgevallen dat ik hierboven de vlag "-i" gebruik? Dit is om de daemon meer informatie over de terminal te laten zien over wat er aan de hand is. Gewoon een kwestie van nieuwsgierigheid, maar hey, dit artikel gaat helemaal over nieuwsgierigheid!

De client starten

U bent nu klaar om de clienttoepassing te starten. Open een nieuwe terminal en ga naar de CoreFreq-map. Vanaf daar start u de client:

  cd CoreFreq ./corefreq-cli 

Onderzoek naar je CPU in Linux

Naast de statische eigenschappen van uw processor, zoals de modelnaam of de mogelijkheden, kunt u, zodra CoreFreq actief is, het dynamische gedrag van uw CPU onder live omstandigheden onderzoeken. In de bovenstaande schermopname ziet u bijvoorbeeld dat de verschillende kernen van mijn processor tussen 138 MHz en 334 MHz lopen. De (zeer kleine) belasting wordt gelijkmatig over hen verdeeld.

Bovendien kunt u voor elke kern de hoeveelheid tijd die in de verschillende processor-C-toestanden is doorgebracht (totaal moet 100% zijn) en de tijd die in de turbo-boostermodus is doorgebracht, bekijken. Als je niet bekend bent met die concepten, kan ik je alleen maar aanmoedigen om die uitstekende uitleg van Victor Stinner te bekijken: //haypo.github.io/intel-cpus.html

Op dit punt, terwille van de demonstratie, lanceerde ik een oneindige lus in een terminal in de "hoop" om 100% van één kern te consumeren:

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

... en inderdaad, ik kan duidelijk zien in welke kern de shell met de oneindige lus momenteel is gebonden. Dit kan worden bevestigd door te kijken naar de corefreq-cli taakmonitor

Druk op om het menu te openen en weergave kiezen> taakmonitor:

Je kunt dat niet zien op de bovenstaande afbeelding, maar als je dat zelf uitvoert, zul je merken dat de taak na enkele seconden van een kern naar een andere springt. Ik denk dat ik de reden voor dat gedrag weet. Maar, kun je het raden? Aarzel niet om de commentaarsectie te gebruiken om uw ideeën te delen!

Maar laten we eerst eens kijken hoe CoreFreq kan worden gestopt.

CoreFreq stoppen

Om CoreFreq te stoppen, hoeft u alleen maar de drie delen van de software te sluiten, in de omgekeerde volgorde waarin u ze hebt gestart.

  • sluit de client af door op F4 of CRTL-C in de clientterminal te drukken
  • sluit de daemon af door op CTRL-C te drukken is de daemon terminal
  • verwijder de kernel-module sudo rmmod corefreqk

En je bent klaar.

En nu?

Door sommige aspecten, brengt CoreFreq je wat CPU-informatie in Linux die je kunt verzamelen met behulp van top, htop, sensoren, lscpu en enkele andere tools. Maar met CoreFreq beschikt u niet alleen over alle informatie in slechts één interface, maar gezien de manier waarop gegevens worden verzameld, heeft u een hogere nauwkeurigheid. Ten slotte zijn sommige gegevens gewoon niet beschikbaar in een andere tool - voor zover ik het natuurlijk weet (C-states ratio? Instructie-per-cycli?)

Misschien vindt u deze tool alleen bedoeld voor ontwikkelaars die proberen computerintensieve algoritmen te verfijnen. Of voor gamers die graag willen weten hoeveel winst ze hebben behaald door hun hardware te overklokken.

Maar ik moet persoonlijk toegeven dat ik dergelijke hulpmiddelen altijd interessant vind omdat ze ons in staat stellen om de realiteit van moderne hardware aan te raken - meestal veel complexer dan we gewoonlijk denken. Hoeveel van u wisten bijvoorbeeld dat de verschillende kern van een CPU op verschillende snelheden kan werken of zich in een andere C-modus bevindt?

Hoe dan ook, ik ben er vrij zeker van dat sommigen van jullie zeer slimme gebruiken van die tool zullen vinden of intrigerende ontdekkingen over hun hardware zullen doen. Aarzel niet om dat met ons te delen in de commentaarsectie hieronder. Ik weet zeker dat CyrIng graag uw ideeën en feedback over CoreFreq hoort om het nog beter te maken.

En vergeet niet: als je een open source software hebt ontwikkeld, neem dan gerust contact met ons op om op It's FOSS te verschijnen.

Aanbevolen

Installeer Adobe Lightroom Alternatieve RawTherapee in Ubuntu
2019
Download 15 prachtige sexy achtergronden van Debian
2019
Gebruik de modus Niet storen in Ubuntu met NoNotifications
2019