Nie musisz instalować żadnego dodatkowego pakietu, twój stary dobry shell jest w stanie zrobić to sam.
Ten jeden-liner załaduje twoje cztery rdzenie1 w 100%:
for i in 1 2 3 4; do while : ; do : ; done & done
Jak to działa jest dość proste, zaczyna cztery niekończące się pętle. Każda z nich powtarza instrukcję null (:
). Każda pętla jest w stanie załadować rdzeń procesora w 100%.
Jeśli używasz bash
, ksh93
i innych powłok obsługujących zakresy, (tj. nie dash
lub starsze ksh
), możesz użyć tej nie przenośnej składni:
for i in {1..4}; do ...
Zastąp 4
liczbą procesorów, które chciałbyś załadować, jeśli różnią się od 4
.
Zakładając, że nie miałeś już uruchomionego zadania w tle, gdy uruchamiałeś jedną z tych pętli, możesz zatrzymać generowanie ładunku za pomocą tej komendy:
for i in 1 2 3 4; do kill %$i; done
Answering @underscore_d’s comment, oto ulepszona wersja, która upraszcza dużo zatrzymywania ładunku i pozwala także na określenie limitu czasu (domyślnie 60 sekund). Ta funkcja powłoki działa przynajmniej 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
)
}
1Uwaga, że w przypadku procesorów obsługujących więcej niż jeden wątek na rdzeń (Hyper-threading), system operacyjny będzie wysyłał obciążenie do wszystkich wirtualnych procesorów. W tym przypadku zachowanie obciążenia jest zależne od implementacji (każdy wątek może być zgłoszony jako 100% zajęty lub nie).