Cara menghasilkan beban CPU di server Linux


13

Saya ingin menguji beban palsu di server, saya mencari beberapa utilitas baris perintah burn-in atau benchmark yang akan menghasilkan beban CPU pada sistem.

Saya ingin hanya dapat burn-in CPU (tidak ada beban harddisk, jaringan dan co) dan bahwa saya akan dapat mengatur periode di mana beban akan berjalan. Berarti saya menginginkan sesuatu yang dapat dijalankan: CPU load selama 10 menit pada sistem.

Ada ide?

Jawaban:



6

Saya lebih suka operasi floating point:

for i in `seq 64`; do perl -e '$z=time()+(10*60); while (time()<$z) { $j++; $sqrt = sqrt($j) for (1..9999); }' & done

Waspadai nomor CPU Anda :-)


bagaimana saya bisa timeini?
SĂ©bastien

2

Ini adalah sesuatu yang sering ingin saya lakukan. Tetapi saya tidak memiliki cara yang baik untuk melakukannya. Saya hanya menulis skrip Perl kecil yang hanya akan mengulang sebanyak yang saya inginkan.

Misalnya (selama 10 menit):

perl -e '$z=time()+(10*60); while (time()<$z) { $j++; $j *= 1.1 for (1..9999); }'

Tentu saja jika Anda memiliki n prosesor, Anda mungkin ingin menambahkan bash loop untuk membuat banyak proses:

#!/bin/bash
# e.g. for 4 processors
for i in 1 2 3 4; do
    perl -e .... &
done
wait

4
Poin minor: Bukankah forloop itu menjalankannya secara seri, bukan paralel? Saya pikir (perl -e '...' &)untuk melepaskan mereka dari shell akan melakukan pekerjaan itu.
SmallClanger

Kamu benar. Saya akan memperbaiki posting saya. Terima kasih telah menunjukkannya.
PP.



1

Berikut adalah shell murni (setidaknya bash& ksh) cara yang sudah saya posting sebagai balasan untuk pertanyaan serupa di sini

# 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
  )
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.