Cách tạo tải CPU trên máy chủ Linux


13

Tôi muốn kiểm tra tải giả trên máy chủ, tôi đang tìm kiếm một số tiện ích dòng lệnh burn-in hoặc điểm chuẩn sẽ tạo ra tải CPU trên hệ thống.

Tôi muốn chỉ có thể ghi vào CPU (không tải ổ cứng, mạng và đồng) và tôi có thể đặt khoảng thời gian tải sẽ chạy. Có nghĩa là tôi muốn một cái gì đó có thể chạy: CPU tải trong 10 phút trên hệ thống.

Có ý kiến ​​gì không?

Câu trả lời:



6

Tôi đặt trước điểm nổi ops:

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

Hãy nhận biết số CPU của bạn :-)


Làm thế nào tôi có thể timenày?
Sébastien

2

Đây là điều tôi thường xuyên muốn làm. Nhưng tôi không có cách làm tốt. Tôi chỉ viết một kịch bản Perl nhỏ sẽ lặp lại trong bao nhiêu giây tôi muốn.

Ví dụ: (trong 10 phút):

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

Tất nhiên, nếu bạn có n bộ xử lý, bạn có thể muốn thêm một vòng lặp bash để tạo ra nhiều quy trình đó:

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

4
Điểm nhỏ: Không phải forvòng lặp đó chạy chúng theo chuỗi, thay vì song song? Tôi nghĩ rằng (perl -e '...' &)để tách chúng ra khỏi vỏ sẽ làm công việc, mặc dù.
SmallClanger

Bạn đúng. Tôi sẽ sửa bài viết của mình. Cảm ơn đã chỉ ra rằng.
PP.



1

Đây là một cách thuần túy (ít nhất là bash& ksh) mà tôi đã đăng dưới dạng trả lời cho một câu hỏi tương tự ở đây

# 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
  )
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.