현재 Cacti 설치 를 디버깅하는 중이며 CPU 사용률 그래프를 디버깅하기 위해 CPU로드를 생성하려고합니다.
나는 간단하게 실행하려고 시도했지만 cat /dev/zero > /dev/null
훌륭하게 작동하지만 1 코어 만 사용합니다.
로드 상태에서 시스템 리소스를 테스트 / 최대화하는 더 좋은 방법이 있습니까?
답변
시도 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초)를 지정 할 수 향상된 버전입니다 Control– C너무 모든 가출 루프를 죽일 것이다. 이 쉘 함수는 적어도 bash
and 아래에서 작동합니다 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 소비량이 출력됩니다.
답변
한 가지 대안은
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