Linux 서버에서 높은 CPU 로드를 생성하려면 어떻게 해야 합니까?

Linux 서버에서 높은 CPU 로드를 생성하려면 어떻게 해야 합니까?

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

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

여기에 이미지 설명을 입력하세요

로드 중인 시스템 리소스를 테스트/최대화하는 더 나은 방법이 있습니까?

관련된:Windows에서 높은 CPU 로드를 생성하려면 어떻게 해야 합니까?

답변1

노력하다stress 이는 Windows와 거의 동일합니다 consume.exe.

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

답변2

추가 패키지를 설치할 필요가 없습니다. 오래된 쉘만으로도 이 작업을 수행할 수 있습니다.

이 한 줄짜리 코드는 4개의 코어 1을 100%로 로드합니다.

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

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

bash, ksh93및 범위를 지원하는 다른 쉘(예: not 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초)을 지정할 수 있는 향상된 버전이 있습니다. A Control- C모든 런어웨이 루프도 종료됩니다. 이 쉘 기능은 최소한 bash및 아래에서 작동합니다 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% 사용 중인지 여부로 보고될 수 있음). .

답변3

한 가지 대체 방법은 다음과 같습니다.

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

또는 (nproc이 있는 경우)

openssl speed -multi $(nproc --all)

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

답변4

2개를 시작하세요

sha1sum /dev/zero &

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

그만하다

killall sha1sum

또는

kill sha1sum

관련 정보