Nie musisz instalować żadnego dodatkowego pakietu, twoja stara dobra powłoka jest w stanie zrobić to sama.
Ten jednowarstwowy załaduje cztery rdzenie 1 na 100%:
for i in 1 2 3 4; do while : ; do : ; done & done
Jak to działa, jest dość proste, uruchamia cztery nieskończone pętle. Każdy z nich powtarza instrukcję zerową ( :
). Każda pętla jest w stanie załadować rdzeń procesora na 100%.
Jeśli używasz bash
, ksh93
i inne pociski wspieranie zakresy, (czyli nie dash
lub starszy ksh
), można użyć tej składni non przenośnym:
for i in {1..4}; do ...
Zamień 4
na liczbę procesorów, które chcesz załadować, jeśli różnią się od 4
.
Zakładając, że nie uruchomiłeś już żadnego zadania w tle po uruchomieniu jednej z tych pętli, możesz zatrzymać generowanie obciążenia za pomocą tego polecenia:
for i in 1 2 3 4; do kill %$i; done
Odpowiadając na komentarz @ underscore_d, tutaj jest ulepszona wersja, która znacznie upraszcza zatrzymanie ładowania i która pozwala również określić limit czasu (domyślnie 60 sekund.) A Control- Czabije również wszystkie niekontrolowane pętle. Ta funkcja powłoki działa co najmniej pod bash
i ksh
.
# Usage: lc [number_of_cpus_to_load [number_of_seconds] ]
lc() {
(
pids=""
cpus=${1:-1}
seconds=${2:-60}
echo loading $cpus CPUs for $seconds seconds
trap 'for p in $pids; do kill $p; done' 0
for ((i=0;i<cpus;i++)); do while : ; do : ; done & pids="$pids $!"; done
sleep $seconds
)
}
1 Należy pamiętać, że w przypadku procesorów obsługujących więcej niż jeden wątek na rdzeń (Hyper-Threading), system operacyjny rozdzieli obciążenie na wszystkie wirtualne procesory. W takim przypadku zachowanie obciążenia zależy od implementacji (każdy wątek może być zgłaszany jako zajęty w 100% lub nie). .
cat
jednocześnie?