Ich bin gerade dabei, eine Cacti-Installation zu debuggen und möchte eine CPU-Auslastung erstellen, um meine CPU-Auslastungsdiagramme zu debuggen.
Ich habe versucht, einfach zu laufen cat /dev/zero > /dev/null
, was großartig funktioniert, aber nur 1 Kern verwendet:
Gibt es eine bessere Methode zum Testen / Maximieren der Systemressourcen unter Last?
Verwandte Themen : Wie kann ich unter Windows eine hohe CPU-Last erzeugen?
performance
debian
benchmarking
Der Hochstapler
quelle
quelle
cat
gleichzeitig auszuführen ?screen
Sitzungen einbindet . Aber wenn möglich, würde ich eine ausgefeiltere Lösung vorziehen.cat /dev/random > /dev/null
. Vermutung/dev/zero
funktioniert auch. :-)Antworten:
Versuchen
stress
Es ist so ziemlich ein Äquivalent von Windowsconsume.exe
:quelle
sudo apt-get install stress
sudo yum install stress
sudo pacman -S stress
brew install stress
auf OS XSie brauchen kein zusätzliches Paket zu installieren, Ihre gute alte Shell ist in der Lage, dies alleine zu tun.
Dieser One-Liner lädt Ihre vier Kerne 1 zu 100%:
Wie es funktioniert ist ganz einfach, es werden vier Endlosschleifen gestartet. Jeder von ihnen wiederholt die Null-Anweisung (
:
). Jede Schleife kann einen CPU-Kern zu 100% laden.Wenn Sie verwenden
bash
,ksh93
und andere Schalen Bereiche unterstützen, (dh nichtdash
oder älterksh
), können Sie diese nicht tragbar Syntax verwenden:Ersetzen Sie diese
4
durch die Anzahl der CPUs, die Sie laden möchten, falls diese von abweichen4
.Angenommen, Sie hatten bereits keinen Hintergrundjob ausgeführt, als Sie eine dieser Schleifen gestartet haben, können Sie die Ladegenerierung mit dem folgenden Befehl stoppen:
Beantwortet man den Kommentar von @ underscore_d, so handelt es sich um eine verbesserte Version, die das Stoppen des Ladevorgangs erheblich vereinfacht und die Angabe einer Zeitüberschreitung (Standard 60 Sekunden) ermöglicht. A Control- CBringt auch alle außer Kontrolle. Diese Shell-Funktion funktioniert mindestens unter
bash
undksh
.1 Beachten Sie, dass bei CPUs, die mehr als einen Thread pro Kern unterstützen (Hyper-Threading), das Betriebssystem die Last an alle virtuellen CPUs verteilt. In diesem Fall ist das Ladeverhalten von der Implementierung abhängig (jeder Thread wird möglicherweise als zu 100% ausgelastet gemeldet oder nicht). .
quelle
&
bewirkt , dass ein Befehl in einem separaten Thread oder einem separaten Kern ausgeführt wird ? Ich bin verwirrt.killall bash
lediglich sicher, dass zu diesem Zeitpunkt kein anderes wichtiges Skript ausgeführt wird.killall bash
. Antwort bearbeitet, um eine sicherere Methode zum Beenden der Lastgenerierung hinzuzufügen.Ich habe ein einfaches Python-Skript erstellt, das dasselbe tut. Sie können die Anzahl der zu ladenden CPU-Kerne steuern. Das Gute daran ist, dass es keine andere Ressource als die CPU verbraucht. (Ich denke Mark Johnsons Idee würde eine Menge I / O-Ressourcen verbrauchen, was hier unerwünscht ist.)
Führen Sie dieses Skript einfach vom Terminal aus
$ python temp1.py
. Sie müssen das Skript beenden, wenn Sie fertig sind.Hier ist meine CPU-Verbrauchsleistung, wenn ich 3 meiner Kerne lade.
quelle
Ein alternativer Weg wäre
oder (falls nproc vorhanden ist)
OpenSSL ist heutzutage fast immer in Distributionen verfügbar, daher werden keine zusätzlichen Pakete benötigt.
quelle
Beginnen Sie zwei
Befehle für jeden Kern in Ihrem System.
Stoppen
oder
quelle
Normalerweise nehme ich die cpuburn Suite:
Ersetzen Sie 4 durch die Anzahl der Kerne / HT-Threads, die Sie belasten möchten oder müssen.
Hinweis: Dadurch wird so viel Chipfläche wie möglich beansprucht und gleichzeitig eine maximale Verlustleistung programmiert. Ich musste diesen Beitrag ein zweites Mal schreiben, irgendwie hat es meinem Rechner nicht gefallen :-(
Sie können cpuburn auch in folgenden Sequenzen ausführen:
Und wenn du sie aufhalten willst:
Sie können auch multiplizieren
burnP6 &
, um die Anzahl der CPU-Kerne auf Ihrem System abzugleichen.quelle
Ich habe stress-ng entwickelt, ein aktualisiertes Stress-Tool, das eine Vielzahl von Aspekten eines Linux-Systems hervorheben kann. Weitere Informationen finden Sie unter http://kernel.ubuntu.com/~cking/stress-ng/.
Die Verwendung ist ähnlich wie bei Stress
Installieren Sie mit
quelle
Sie können diesen Befehl so oft ausführen, wie Sie möchten, und er nimmt jedes Mal einen anderen Kern ein:
quelle
killall cat
Sollte es tun.cat
Prozesse ausgeführt werden (normalerweise).https://github.com/GaetanoCarlucci/CPULoadGenerator
ziemlich einfache und wissenschaftliche Lösung.
Hier sehen Sie ein dynamisches Beispiel, in dem 50% Last auf CPU-Kern 0 erzeugt werden:
Sie können den Prozess gleichzeitig auf anderen Kernen ausführen.
quelle
Ich habe + jlliagre und + ecabuk kombiniert.
quelle
Sie können verwenden:
Wiederholen Sie dies
dd if=/dev/zero of=/dev/null
für Ihre CPU-Kerne.Drücken Sie eine beliebige Taste, um den Test zu beenden.
quelle
pxz
ist eine parallele Implementierung vonxz
.pxz -9e /dev/zero --stdout >/dev/null
sollte den Trick machen, da dies ziemlich CPU-intensiv ist.Wenn
/dev/zero
es nicht schnell genug ist (Sie bemerken, dass diepxz
E / A gedrosselt werden), können Sie dies tunpxz -9e /dev/zero --stdout | pxz -9e --stdout >/dev/null
Neuere Versionen von
xz
haben die--threads
Option, die ein Ersatz für istpxz
.quelle
Hier ist die Art, wie ich es benutze und es ist nicht nötig, etwas extra zu installieren.
Zum Beispiel mit 4 Prozessen zu beginnen,
Sie können die Anzahl der Prozesse mit der Option "-P" oben ändern.
quelle
Eine einfache Kommandozeile macht es auch:
quelle
while : ; do : ; done
for i in 1 2 3; do while : ; do : ; done & ; done
Ich wollte dies zu @ jlliagres Kommentar hinzufügen, aber ich habe nicht genug Ruf. Wenn Sie diesen Code auf mehreren Servern verwenden und die CPU-Anzahl variiert, können Sie den folgenden Befehl verwenden:
Dadurch werden alle Kerne auf Ihrem Server verwendet, unabhängig davon, wie viele Sie haben. Der Befehl
nproc
ist Teil von coreutils und sollte daher auf den meisten Linux-Installationen vorhanden sein.quelle