Linux 서버에서 높은 CPU로드를 생성하려면 어떻게해야합니까? cat /dev/zero > /dev/null훌륭하게 작동하지만

현재 Cacti 설치디버깅하는 중이며 CPU 사용률 그래프를 디버깅하기 위해 CPU로드를 생성하려고합니다.

나는 간단하게 실행하려고 시도했지만 cat /dev/zero > /dev/null훌륭하게 작동하지만 1 코어 만 사용합니다.

여기에 이미지 설명을 입력하십시오

로드 상태에서 시스템 리소스를 테스트 / 최대화하는 더 좋은 방법이 있습니까?

관련 : Windows에서 어떻게 높은 CPU로드를 생성 할 수 있습니까?



답변

시도 stress
그것은 거의 윈도우의 등가이다 consume.exe:

oliver$ ./stress --cpu 3
stress: info: [18472] dispatching hogs: 3 cpu, 0 io, 0 vm, 0 hdd


답변

추가 패키지를 설치할 필요가 없으며, 오래된 쉘에서 단독으로 수행 할 수 있습니다.

이 원 라이너는 4 개의 코어 1 을 100 %로 로드합니다 .

for i in 1 2 3 4; do while : ; do : ; done & done

작동 방식은 매우 간단하며 4 개의 무한 루프를 시작합니다. 그들 각각은 널 명령 ( :)을 반복합니다 . 각 루프는 CPU 코어를 100 %로로드 할 수 있습니다.

당신이 사용하는 경우 bash, ksh93다른 쉘 범위를 지원하는 (즉,하지 dash또는 그 이상 ksh)이 아닌 휴대용 구문을 사용할 수 있습니다 :

for i in {1..4}; do ...

4와 다른 경우로드하려는 CPU 수로 교체하십시오 4.

이러한 루프 중 하나를 시작할 때 백그라운드 작업이 이미 실행 중이 아니라고 가정하면 해당 명령으로로드 생성을 중지 할 수 있습니다.

for i in 1 2 3 4; do kill %$i; done

@의 underscore_d의 의견을 응답, 여기에 많은 부하를 중지 간단하고도 타임 아웃 (. 기본 60초)를 지정 할 수 향상된 버전입니다 ControlC너무 모든 가출 루프를 죽일 것이다. 이 쉘 함수는 적어도 bashand 아래에서 작동합니다 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 코어 당 둘 이상의 스레드를 지원하는 CPU (하이퍼 스레딩)를 사용하면 OS가 모든 가상 CPU에로드를 전달합니다. 이 경우로드 동작은 구현에 따라 다릅니다 (각 스레드는 100 % 사용 중이라고보고 될 수 있음). .


답변

동일한 파이썬 스크립트를 만들었습니다. 로드하려는 CPU 코어 수를 제어 할 수 있습니다. 이것에 대한 좋은 점은 CPU 이외의 다른 리소스를 소비하지 않는다는 것입니다. (Mark Johnson의 아이디어는 여기에서 바람직하지 않은 많은 I / O 리소스를 소비 할 것이라고 생각합니다.)

from multiprocessing import Pool

def f(x):
    # Put any cpu (only) consuming operation here. I have given 1 below -
    while True:
        x * x

# decide how many cpus you need to load with.
no_of_cpu_to_be_consumed = 3

p = Pool(processes=no_of_cpu_to_be_consumed)
p.map(f, range(no_of_cpu_to_be_consumed))

터미널에서이 스크립트를 실행하십시오 $ python temp1.py. 완료되면 스크립트를 종료해야합니다.

여기, 코어 3 개를로드 할 때 CPU 소비량이 출력됩니다.

스크립트 temp1.py는 3 개의 프로세스 (PID-9377, 9378, 9379)를 만들어 내 코어 중 3 개를로드합니다.


답변

한 가지 대안은

openssl speed -multi $(grep -ci processor /proc/cpuinfo)

또는 (nproc이있는 경우)

openssl speed -multi $(nproc --all)

OpenSSL은 요즘 배포판에 거의 항상 존재하므로 추가 패키지가 필요하지 않습니다.


답변

두 시작

sha1sum /dev/zero &

시스템의 모든 코어에 대한 명령.

그만하다

killall sha1sum

또는

kill sha1sum


답변

나는 일반적으로 cpuburn 제품군을 사용합니다.

sudo apt-get install cpuburn
for i in {1..4}; do burnK7 & done

4를 스트레스가 있거나 스트레스를 받고자하는 코어 / HT 스레드 수로 교체하십시오.

참고 : 이것은 가능한 한 많은 칩 면적을 강조하며 최대 전력 소비를 생성하도록 프로그래밍되었습니다. 나는이 게시물을 두 번째로 써야했다. 어쨌든 내 기계는 그것을 좋아하지 않았다 🙁

cpuburn을 순서대로 수행 할 수도 있습니다.

burnP6 & burnP6 & burnP6 & burnP6 &
[1] 28520
[2] 28521
[3] 28522
[4] 28523

그리고 당신이 그들을 막고 싶을 때 :

killall burnP6

burnP6 &시스템의 CPU 코어 수에 맞게 곱할 수도 있습니다 .


답변

Linux 시스템의 다양한 측면을 강조 할 수있는 업데이트 된 스트레스 도구 인 stress-ng를 개발하고 있습니다. 자세한 내용은 http://kernel.ubuntu.com/~cking/stress-ng/를 참조하십시오.

사용법은 스트레스 와 비슷합니다

$ stress-ng --cpu 4 --vm 2 --fork 8 --switch 4 --timeout 1m
stress-ng: info:  [32254] dispatching hogs: 4 cpu, 8 fork, 4 switch, 2 vm
stress-ng: info:  [32254] cache allocate: default cache size: 8192K

함께 설치

sudo apt-get install stress-ng