Ich möchte eine nahezu 100% ige Last auf einem Linux-Computer erstellen. Es ist ein Quad-Core-System und ich möchte, dass alle Kerne auf Hochtouren laufen. Im Idealfall würde die CPU-Auslastung eine bestimmte Zeit dauern und dann anhalten. Ich hoffe, es gibt einen Trick in Bash. Ich denke an eine Endlosschleife.
281
Antworten:
Sie können auch tun
Versuchen Sie, mehr davon auszuführen, um mehr Kerne zu belasten:
Wiederholen Sie den Befehl in den geschweiften Klammern so oft wie die Anzahl der Threads, die Sie erzeugen möchten (hier 4 Threads). Ein einfacher Enter-Treffer stoppt ihn (stellen Sie nur sicher, dass auf diesem Benutzer kein anderer DD ausgeführt wird, oder Sie töten ihn auch).
quelle
/dev/zero
und Schreiben/dev/null
ist kein sehr guter Lastgenerator - Sie müssen viele davon ausführen, um eine signifikante Last zu erzeugen. Besser so etwas zu tundd if=/dev/urandom | bzip2 -9 >> /dev/null
./dev/urandom
erfordert erheblich mehr Aufwand, um eine Ausgabe zu generieren, und erfordertbzip2
viel Aufwand beim Versuch, sie zu komprimieren. Daher ist die CPU-Gesamtauslastung viel höher als "Füllen Sie einen Block mit Nullen und werfen Sie ihn dann weg".jobs -p | xargs kill
Sie diese Option, um nur die von Ihnen erstellten Prozesse abzubrechen.Ich benutze Stress für diese Art von Dingen. Sie können sagen, wie viele Kerne maximal genutzt werden sollen. Dadurch können auch Speicher und Festplatte belastet werden .
Beispiel für die Belastung von 2 Kernen für 60 Sekunden
stress --cpu 2 --timeout 60
quelle
sudo yum install stress
EPEL
für CentOSwget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
brew
install stress
unter OS X. Auch aus irgendeinem Grund musste ich 8 Kerne auf einem Quad-Core-MBPr angebensudo apt-get install stress
der Vollständigkeit halber auf Debian-basierten Systemen. Damit wurde ein Kühlmod auf dem Intel i7 NUC Kit getestet .Ich denke, dieser ist einfacher. Öffnen Sie das Terminal, geben Sie Folgendes ein und drücken Sie die Eingabetaste.
Um moderne CPUs voll auszunutzen, reicht eine Zeile nicht aus. Möglicherweise müssen Sie den Befehl wiederholen, um die gesamte CPU-Leistung zu verbrauchen.
Um all dies zu beenden, einfach ausgedrückt
Die Idee wurde ursprünglich hier gefunden , obwohl sie für Mac-Benutzer gedacht war, aber dies sollte auch für * nix funktionieren.
quelle
yes
Befehl (vorausgesetzt, das System war ansonsten inaktiv).Obwohl ich zu spät zur Party komme, gehört dieser Beitrag zu den Top-Ergebnissen in der Google-Suche "Load in Linux generieren".
Das als Lösung gekennzeichnete Ergebnis könnte verwendet werden, um eine Systemlast zu erzeugen. Ich bevorzuge
sha1sum /dev/zero
es, eine Last auf einen CPU-Kern aufzubringen.Die Idee ist, eine Hash-Summe aus einem unendlichen Datenstrom (z. B. / dev / zero, / dev / urandom, ...) zu berechnen. Dieser Prozess versucht, einen CPU-Kern zu maximieren, bis der Prozess abgebrochen wird. Um eine Last für mehr Kerne zu erzeugen, können mehrere Befehle miteinander verbunden werden.
z.B. eine 2-Kern-Last erzeugen:
sha1sum /dev/zero | sha1sum /dev/zero
quelle
Ein Kern (ruft keinen externen Prozess auf):
Zwei Kerne:
Letzteres bringt meine beiden nur auf ~ 50% ...
Dieser wird beide zu 100% gehen lassen:
quelle
renice 19 -p $$
. B. in bash : . Die CPUs werden weiterhin maximal beansprucht, andere Prozesse werden jedoch nicht beeinträchtigt.So laden Sie 3 Kerne für 5 Sekunden:
Dies führt zu einer hohen Kernel (sys) -Last durch die vielen write () - Systemaufrufe.
Wenn Sie hauptsächlich Userland-CPU-Last bevorzugen:
Wenn Sie nur möchten, dass der Ladevorgang fortgesetzt wird, bis Sie Strg-C drücken:
quelle
Hier ist ein Programm , das Sie herunterladen hier
Einfach auf Ihrem Linux-System installieren
und starten Sie es in einer einfachen Befehlszeile
sqrt
Um alle Ihre CPUs (wie auch immer Sie haben) mit 40 Threads zu belasten, die jeweils eine komplexe Berechnung auf einer weit verbreiteten Zahl ausführen.Sie können sogar das Timeout des Programms definieren
Im Gegensatz zu der vorgeschlagenen Lösung mit dem
dd
Befehl, der sich im Wesentlichen mitIO
Ihrem System befasst und es daher nicht wirklich überlastet, weil er mit Daten arbeitet.Das Stressprogramm überlastet das System wirklich, weil es sich mit Berechnungen befasst.
quelle
stress
Befehl. Wie diese Antwort sagt, können Sie es einfach über yum / apt / etc. Installieren.Diese Gabelbombe wird die CPU zerstören und wahrscheinlich Ihren Computer zum Absturz bringen.
quelle
Eine Endlosschleife ist die Idee, die ich auch hatte. Ein freaky aussehender ist:
(
:
ist das gleiche wietrue
, tut nichts und geht mit Null)Sie können das in einer Subshell aufrufen und im Hintergrund ausführen. Diese
$num_cores
Zeiten zu tun sollte ausreichen. Nach der gewünschten Zeit schlafen Sie sie alle töten, um die PIDs mit erhaltenjobs -p
(Tipp:xargs
)quelle
Ich würde das Ding in 2 Skripte aufteilen:
infinite_loop.bash:
cpu_spike.bash:
quelle
quelle
quelle
Ich habe
bc
( binärer Taschenrechner ) verwendet und sie nach PI mit vielen Dezimalstellen gefragt.mit NUMCPU (unter Linux):
Diese Methode ist stark, scheint aber systemfreundlich zu sein , da ich noch nie ein System mit dieser Methode zum Absturz gebracht habe.
quelle
quelle
:-)
Ich ging durch das Internet, um so etwas zu finden und fand dieses sehr praktische CPU-Hammer-Skript.
quelle
NUM_PROC=${1:-10}
.Anhand der hier genannten Beispiele, aber auch der Hilfe des IRC, habe ich mein eigenes CPU-Stresstestskript entwickelt. Es verwendet eine Unterschale pro Thread und die Endlosschleifentechnik. Sie können auch die Anzahl der Threads und die Zeitdauer interaktiv angeben.
quelle
Wenn Sie hier Ideen verwenden und Code erstellen, der nach einer festgelegten Dauer automatisch beendet wird, müssen Sie keine Prozesse beenden.
quelle
Das macht einen Trick für mich:
und es verwendet nichts außer Bash.
quelle
Um die Antwort von dimba zu verbessern und etwas steckbareres bereitzustellen (weil ich etwas Ähnliches brauchte). Ich habe Folgendes mit dem dd-Ladekonzept geschrieben: D.
Es überprüft die aktuellen Kerne und erstellt so viele dd-Threads. Start und Ende der Kernlast mit Enter
quelle
Ich habe einige der Antworten kombiniert und eine Möglichkeit hinzugefügt, den Stress auf alle verfügbaren CPUs zu skalieren:
quelle
Dimba's
dd if=/dev/zero of=/dev/null
ist definitiv richtig, aber es ist auch erwähnenswert, zu überprüfen, ob die CPU auf 100% ausgelastet ist. Sie können dies mit tunDies fordert die ps-Ausgabe eines 1-Minuten-Durchschnitts der CPU-Auslastung durch jeden Prozess an und summiert sie dann mit awk. Während es sich um einen 1-Minuten-Durchschnitt handelt, ist ps klug genug, um zu wissen, ob ein Prozess nur einige Sekunden gedauert hat, und passt das Zeitfenster entsprechend an. Mit diesem Befehl können Sie das Ergebnis sofort anzeigen.
quelle
um die Last zu erhöhen oder die CPU zu 100% zu verbrauchen
Dann können Sie die CPU-Auslastung durch Eingabe des Befehls anzeigen
um die Last freizugeben
quelle
Fügen Sie diesen bösen Jungen einfach in die SSH oder Konsole eines Servers ein, auf dem Linux ausgeführt wird.
Sie können die Prozesse manuell beenden, aber ich schalte den Server einfach schneller aus, wenn ich fertig bin.Bearbeiten: Ich habe dieses Skript so aktualisiert, dass es jetzt über eine Timer-Funktion verfügt, sodass die Prozesse nicht abgebrochen werden müssen.
quelle