Überprüfen Sie detaillierte CPU-Informationen unter Linux mit CoreFreq

Hatten Sie jemals das Bedürfnis, die CPU-Informationen unter Linux zu überprüfen ? Wollten Sie jemals die tatsächliche Geschwindigkeit Ihrer CPU kennen? Oder welcher Prozess ist aktuell an einen Kern gebunden? Das scheinen nur die Fragen für Experten zu sein.

Aber bleib bei mir - wie Alice kannst du mehr als erwartet entdecken, wenn du durch den Spiegel gehst. Lassen Sie mich daher ohne weiteres unseren Hauptprotagonisten vorstellen: CoreFreq.

Kennen Sie Ihre CPU in Linux mit CoreFreq

CoreFreq ist ein Tool zum Sammeln von CPU-Leistungsdaten auf Linux-Systemen. Es hat Open Source Lizenz. Es wurde von CyrIng, einem französischen Entwickler, geschrieben und die Quellen sind auf GitHub verfügbar.

CoreFreq ist anscheinend stabil, muss aber als experimentell betrachtet werden. Ab heute ist es nur im Arch-Repository verfügbar. Es ist (noch) nicht für eine andere Distribution gepackt. Wenn Sie es also ausprobieren möchten, müssen Sie es möglicherweise kompilieren. Das ist nicht schwierig und kann ein schöner erster Schritt sein, wenn Sie das noch nie getan haben.

Schließlich unterscheidet sich CoreFreq von anderen ähnlichen Tools durch das Ziel, hochpräzise Daten zu erfassen . Dazu muss CoreFreq die CPU so nah wie möglich an der Hardware überwachen. Mal sehen, wie es CPU-Informationen auf Linux-Rechner bekommt.

Wie funktioniert CoreFreq?

CoreFreq besteht aus drei Teilen. Ein Kernelmodul, ein Daemon und eine Userland Command Line Interface (CLI).

  • Per Definition hat das Kernelmodul vollen Zugriff auf den Host. Es liegt in seiner Verantwortung, die Daten auf niedriger Ebene zu sammeln.
  • Die Daten werden dann von einem Userland-Daemon gesammelt. Der Daemon muss als root ausgeführt werden .
  • Schließlich verfügt CoreFreq über eine Terminalschnittstelle, über die Daten in einem gut lesbaren Format ausgegeben werden können. Dieses CLI-Tool ist ein gewöhnlicher Prozess und kann vom Endbenutzer verwendet werden.

Kompilieren und Ausführen von CoreFreq

Bevor Sie CoreFreq ausführen, müssen Sie es kompilieren. Das bedeutet, den vom Programmierer geschriebenen Quellcode so zu transformieren, dass Ihr Computer ihn versteht. Haben Sie keine Angst, wenn ich sage, dass Sie es kompilieren müssen - Sie werden nicht viel zu tun haben. Ihr Computer wird die ganze harte Arbeit erledigen.

Die zum Kompilieren von CoreFreq erforderlichen Schritte sind - mit Ausnahme der Installation der erforderlichen Pakete - für alle Linux-Distributionen weitgehend identisch. Hier gebe ich die Anweisungen für CentOS / Red Hat und Debian. Gerne können Sie den Kommentarbereich nutzen, um bei Bedarf weitere Details zu anderen Distributionen zu erfahren.

Jetzt ist es jedoch an der Zeit, Ihren bevorzugten Terminalemulator zu öffnen und mit der Eingabe zu beginnen. Für Red Hat / CentOS gehören die erforderlichen Tools zur Gruppe „Entwicklungstools“. Installieren Sie einfach Folgendes:

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

Für Debian & Debian-basierte Distributionen müssen Sie stattdessen einige einzelne Pakete installieren:

  # specific to Debian-based distributions sudo apt-get install dkms git libpthread-stubs0-dev 
  • dkms ist ein Tool zum Erstellen von Kernelmodulen aus dem Quellcode. Dies ist erforderlich, da CoreFreq als Kernelmodul implementiert ist, um Daten von der Hardware so nah wie möglich zu erfassen.
  • Git ist ein Tool für die verteilte Entwicklung. Hier wird nur eine Kopie des neuesten CoreFreq-Entwicklungsbaums heruntergeladen. Wenn Sie möchten, können Sie die Software jedoch selbst patchen und Pull-Anforderungen an den ursprünglichen Entwickler senden.
  • libpthread-stubs0-dev ist eine erforderliche Bibliothek zum Erstellen von CoreFreq (nun, unter Linux enthält sie nur pkg-config-Daten, aber geben wir für heute vor)

Sobald die erforderlichen Tools auf Ihrem System installiert sind, wird es Zeit, den Quellcode von CoreFreq herunterzuladen:

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

Bitte beachten Sie, dass git sowohl die neueste Version der Quelle als auch den gesamten Änderungsverlauf des Projekts herunterladen wird. Für einen bloßen Benutzer ist dies nutzlos. Aber… ich habe die geheime Hoffnung, dass dies der Anlass für Sie sein könnte, sich den Open Source-Entwicklungsprozess genauer anzusehen. Aber lassen Sie uns diese Klammer schließen, da Sie jetzt bereit sind , die Software zu kompilieren :

  cd CoreFreq/ make && echo Done 

Nach einigen Sekunden sollte das Wort „Fertig“ im Terminalfenster erscheinen, was bedeutet, dass die Kompilierung erfolgreich war.

Zu diesem Zeitpunkt sind die drei Teile von CoreFreq kompiliert und startbereit. Wie ich bereits sagte, besteht die Software aus drei Teilen - Sie müssen also tatsächlich drei Software-Komponenten installieren, um CoreFreq ausführen zu können.

Installieren des Kernelmoduls

Aus technischen Gründen sollten Sie - da CoreFreq denselben Low-Level-Zähler verwendet - zuerst den NMI-Watchdog deaktivieren.

Auf meinem Debian-System kann dies durch Bearbeiten der Datei / etc / default / grub geschehen, indem das Kernel-Befehlszeilenargument "nmi_watchdog = 0" hinzugefügt und anschließend update-grub :

  sudoedit /etc/default/grub update-grub 

Natürlich müssen Sie neu starten, damit das neue Kernel-Argument berücksichtigt wird.

Bitte beachten Sie beim Schreiben dieses Artikels, dass ich es nicht getan habe. Und ich habe kein erkennbares Problem.

Zur Installation des Kernel-Moduls verwenden wir das Standard-Linux-Tool insmod. Es lädt das Modul in den Kernel und startet es:

  sudo insmod corefreqk.ko 

Sie können mit lsmod überprüfen, ob CoreFreq installiert ist:

  lsmod | grep corefreq corefreqk 45056 0 

Und schließlich können Sie überprüfen, ob CoreFreq Ihren Prozessor erkannt hat, indem Sie die Ausgabe von dmesg untersuchen:

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

Den Daemon starten

Es ist jetzt Zeit, den Daemon zu starten. Sein Zweck ist es, vom Kernelmodul gesammelte Daten zu sammeln (da es ein guter Entwurf ist, so wenig wie möglich im Kernel zu tun):

  sudo ./corefreqd -i 

Dieser Befehl wird nicht zurückgegeben, während der Dämon ausgeführt wird. Seien Sie also nicht überrascht, dass Ihr Terminal anscheinend „hängt“ - dies ist nicht der Fall: Der Daemon wird einfach ausgeführt und ist bereit, Client-Anforderungen anzunehmen. Ist Ihnen aufgefallen, dass ich das oben stehende Flag "-i" verwende? Dies dient dazu, dass der Daemon auf dem Terminal weitere Informationen darüber anzeigt, was gerade läuft. Nur eine Frage der Neugier - aber hey, in diesem Artikel dreht sich alles um Neugier!

Client starten

Sie können jetzt die Client-Anwendung starten. Öffnen Sie ein neues Terminal und wechseln Sie in das CoreFreq-Verzeichnis. Von dort aus führen Sie den Client aus:

  cd CoreFreq ./corefreq-cli 

Untersuchung Ihrer CPU unter Linux

Abgesehen von statischen Merkmalen Ihres Prozessors wie dem Modellnamen oder dessen Funktionen können Sie nach dem Start von CoreFreq das dynamische Verhalten Ihrer CPU unter Live-Bedingungen untersuchen. In der obigen Abbildung sehen Sie beispielsweise, dass die verschiedenen Kerne meines Prozessors zwischen 138 MHz und 334 MHz laufen. Die (sehr kleine) Last wird gleichmäßig auf sie verteilt.

Zusätzlich können Sie für jeden Kern die Zeit sehen, die in den verschiedenen Prozessor-C-Zuständen verbracht wurde (insgesamt sollten es 100% sein) - und die Zeit, die im Turbo-Boost-Modus verbracht wurde. Wenn Sie mit diesen Konzepten nicht vertraut sind, kann ich Sie nur ermutigen, sich die hervorragenden Erklärungen von Victor Stinner anzusehen: //haypo.github.io/intel-cpus.html

Zu diesem Zeitpunkt habe ich zu Demonstrationszwecken eine Endlosschleife in einem Terminal gestartet, in der Hoffnung, 100% eines Kerns zu verbrauchen:

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

… Und in der Tat kann ich klar erkennen, an welchen Kern die Shell, die die Endlosschleife ausführt, derzeit gebunden ist. Dies kann durch einen Blick in den corefreq-cli task Monitor bestätigt werden

Drücken Sie, um das Menü anzuzeigen, und wählen Sie Ansicht> Aufgabenmonitor:

Sie können das auf dem Bild oben nicht sehen, aber wenn Sie das selbst ausführen, werden Sie bemerken, dass die Aufgabe nach ein paar Sekunden von einem Kern zu einem anderen springt. Ich glaube, ich kenne den Grund für dieses Verhalten. Aber kannst du es erraten? Zögern Sie nicht, den Kommentarbereich zu nutzen, um Ihre Ideen mitzuteilen!

Aber bevor wir das machen, wollen wir sehen, wie wir CoreFreq stoppen können.

Stoppen von CoreFreq

Um CoreFreq zu stoppen, müssen Sie lediglich die drei Teile der Software in der umgekehrten Reihenfolge beenden, in der Sie sie gestartet haben.

  • Beenden Sie den Client, indem Sie im Client-Terminal F4 oder CRTL-C drücken
  • Beenden Sie den Daemon, indem Sie STRG-C drücken. Dies ist das Daemon-Terminal
  • Entfernen Sie das Kernelmodul sudo rmmod corefreqk

Und du bist fertig.

Und nun?

In einigen Aspekten liefert CoreFreq einige CPU-Informationen in Linux, die Sie mit top, htop, sensors, lscpu und einigen anderen Tools erfassen können. Mit CoreFreq haben Sie jedoch nicht nur alle Informationen in nur einer Oberfläche, sondern aufgrund der Art und Weise, wie Daten gesammelt werden, eine höhere Genauigkeit. Schließlich sind einige Daten - soweit ich weiß - in keinem anderen Tool verfügbar (Verhältnis der C-Zustände? Anweisung pro Zyklus?).

Möglicherweise richtet sich dieses Tool nur an Entwickler, die rechenintensive Algorithmen optimieren möchten. Oder für Gamer, die gerne überprüfen möchten, wie viel Gewinn sie durch Übertakten ihrer Hardware erzielt haben.

Ich muss jedoch zugeben, dass ich solche Tools immer interessant finde, da sie es uns ermöglichen, die Realität moderner Hardware zu „berühren“ - normalerweise viel komplexer, als wir es normalerweise glauben. Zum Beispiel, wie viele von Ihnen wussten, dass die verschiedenen Kerne einer CPU unterschiedlich schnell laufen - oder sich in einem anderen C-Modus befinden?

Trotzdem bin ich mir ziemlich sicher, dass einige von Ihnen sehr clevere Verwendungsmöglichkeiten für dieses Tool finden oder interessante Entdeckungen über ihre Hardware machen werden. Zögern Sie nicht, uns dies im Kommentarbereich weiter unten mitzuteilen. Ich bin sicher, CyrIng würde sich über Ihre Ideen und Rückmeldungen zu CoreFreq freuen, um es noch besser zu machen.

Und nicht vergessen: Wenn Sie eine Open-Source-Software entwickelt haben, können Sie sich gerne an uns wenden, um auf It's FOSS vorgestellt zu werden.

Empfohlen

Uruk: Eine neue Distribution basierend auf Trisquel GNU / Linux
2019
So stellen Sie gelöschte Dateien unter Linux wieder her
2019
So erstellen Sie ein bootfähiges Ubuntu-USB-Laufwerk für Mac in OS X
2019