웹사이트 검색

'Stress-ng' 도구를 사용하여 Linux에서 높은 CPU 로드 및 스트레스 테스트를 수행하는 방법


시스템 관리자로서 귀하는 Linux 시스템이 과부하 상태에 있을 때 상태를 검사하고 모니터링할 수 있습니다. 이는 시스템 관리자와 프로그래머가 다음을 수행할 수 있는 좋은 방법이 될 수 있습니다.

  1. 시스템의 활동을 미세 조정합니다.
  2. 운영 체제 커널 인터페이스를 모니터링합니다.
  3. CPU, 메모리, 디스크 장치 등과 같은 Linux 하드웨어 구성 요소를 테스트하여 스트레스 상황에서 성능을 관찰하십시오.
  4. 시스템에서 다양한 전력 소비 부하를 측정합니다.

이 가이드에서는 Linux 시스템에서 스트레스 테스트를 위한 두 가지 중요한 도구인 stressstress-ng를 살펴보겠습니다.

1. 스트레스 – 구성 가능한 CPU, 메모리, I/O 및 디스크 스트레스 측정값을 시스템에 적용하도록 설계된 작업 부하 생성기 도구입니다.

2. stress-ng – 시스템에서 다음 기능을 테스트하는 스트레스 워크로드 생성기 도구의 업데이트된 버전입니다.

  1. CPU 컴퓨팅
  2. 스트레스를 유발하다
  3. I/O 동기화
  4. 파이프 I/O
  5. 캐시 스래싱
  6. VM 스트레스
  7. 소켓 스트레스
  8. 프로세스 생성 및 종료
  9. 컨텍스트 전환 속성

이러한 도구는 시스템을 검사하는 데 유용하지만 시스템 사용자만 사용해서는 안 됩니다.

중요: 이러한 도구는 루트 사용자 권한으로 사용하는 것이 좋습니다. 왜냐하면 이러한 도구는 Linux 시스템에 너무 빨리 부담을 주고 잘못 설계된 하드웨어에서 특정 시스템 오류를 방지할 수 있기 때문입니다. .

Linux에 '스트레스' 도구를 설치하는 방법

DebianUbuntuMint와 같은 파생 제품에 스트레스 도구를 설치하려면 다음 명령을 실행하세요.

sudo apt-get install stress

RHEL/CentOSFedora Linux에 스트레스를 설치하려면 EPEL 저장소를 활성화한 후 다음 yum 명령을 입력하여 설치해야 합니다. 같은:

yum install stress

스트레스를 사용하는 일반적인 구문은 다음과 같습니다.

sudo stress option argument

스트레스와 함께 사용할 수 있는 몇 가지 옵션입니다.

  1. sqrt() 함수에서 회전하는 N 워커를 생성하려면 다음과 같이 –cpu N 옵션을 사용하세요.
  2. sync() 함수에서 회전하는 N 워커를 생성하려면 다음과 같이 –io N 옵션을 사용하세요.
  3. malloc()/free() 함수에서 회전하는 N 작업자를 생성하려면 –vm N 옵션을 사용하세요.
  4. VM 작업자당 메모리를 할당하려면 –vm-bytes N 옵션을 사용하세요.
  5. 메모리 리소스를 해제하고 재할당하는 대신 –vm-keep 옵션을 사용하여 메모리를 다시 지정할 수 있습니다.
  6. –vm-hang N 옵션을 사용하여 메모리를 비우기 전 절전 모드를 N초로 설정하세요.
  7. write()/unlink() 함수에서 회전하는 N개의 작업자를 생성하려면 –hdd N 옵션을 사용하세요.
  8. –timeout N 옵션을 사용하여 N초 이후의 시간 초과를 설정할 수 있습니다.
  9. 다음과 같이 –backoff N 옵션을 사용하여 작업이 시작되기 전 N 마이크로초의 대기 요소를 설정합니다.
  10. 스트레스 실행 시 더 자세한 정보를 표시하려면 -v 옵션을 사용하세요.
  11. 스트레스 사용에 대한 도움말을 보거나 맨페이지를 보려면 –help를 사용하세요.

Linux 시스템에서 스트레스를 어떻게 사용합니까?

1. 명령을 실행할 때마다 명령의 효과를 확인하려면 먼저 uptime 명령을 실행하고 로드 평균을 기록해 두십시오.

다음으로 stress 명령을 실행하여 20초의 시간 초과로 sqrt()에서 회전하는 8개의 작업자를 생성합니다. 스트레스를 실행한 후 다시 uptime 명령을 실행하고 로드 평균을 비교합니다.


tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu  8 --timeout 20
tecmint@tecmint ~ $ uptime
샘플 출력
tecmint@tecmint ~ $ uptime    
 17:20:00 up  7:51,  2 users,  load average: 1.91, 2.16, 1.93     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --cpu 8 --timeout 20
stress: info: [17246] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
stress: info: [17246] successful run completed in 21s
tecmint@tecmint ~ $ uptime
 17:20:24 up  7:51,  2 users,  load average: 5.14, 2.88, 2.17     [<-- Watch Load Average]

2. 30초의 시간 초과로 sqrt()에서 회전하는 8개의 작업자를 생성하고 작업에 대한 자세한 정보를 표시하려면 다음 명령을 실행합니다.

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu 8 -v --timeout 30s
tecmint@tecmint ~ $ uptime
샘플 출력
tecmint@tecmint ~ $ uptime
 17:27:25 up  7:58,  2 users,  load average: 1.40, 1.90, 1.98     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --cpu 8 -v --timeout 30s
stress: info: [17353] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
stress: dbug: [17353] using backoff sleep of 24000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 8 [17354] forked
stress: dbug: [17353] using backoff sleep of 21000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 7 [17355] forked
stress: dbug: [17353] using backoff sleep of 18000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 6 [17356] forked
stress: dbug: [17353] using backoff sleep of 15000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 5 [17357] forked
stress: dbug: [17353] using backoff sleep of 12000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 4 [17358] forked
stress: dbug: [17353] using backoff sleep of 9000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 3 [17359] forked
stress: dbug: [17353] using backoff sleep of 6000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 2 [17360] forked
stress: dbug: [17353] using backoff sleep of 3000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 1 [17361] forked
stress: dbug: [17353] tecmint@tecmint ~ $ uptime
 17:27:59 up  7:59,  2 users,  load average: 5.41, 2.82, 2.28     [<-- Watch Load Average]

3. 60초의 시간 초과로 malloc()free() 함수의 작업자 하나를 생성하려면, 다음 명령을 실행하십시오.

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --vm 1 --timeout 60s 
tecmint@tecmint ~ $ uptime
샘플 출력
tecmint@tecmint ~ $ uptime
 17:34:07 up  8:05,  2 users,  load average: 1.54, 2.04, 2.11     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --vm 1 --timeout 60s 
stress: info: [17420] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: info: [17420] successful run completed in 60s
tecmint@tecmint ~ $ uptime
 17:35:20 up  8:06,  2 users,  load average: 2.45, 2.24, 2.17     [<-- Watch Load Average]

4. sqrt()에서 회전하는 작업자 4개, sync()에서 작업자 2개, malloc()/free()에서 작업자 2개를 생성하고 시간 제한은 20초이며 메모리를 할당합니다. vm 작업자당 256MB, 아래 명령을 실행하세요.

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s 
tecmint@tecmint ~ $ uptime
샘플 출력
tecmint@tecmint ~ $ uptime
 17:40:33 up  8:12,  2 users,  load average: 1.68, 1.84, 2.02     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s
stress: info: [17501] dispatching hogs: 4 cpu, 3 io, 2 vm, 0 hdd
stress: info: [17501] successful run completed in 20s
tecmint@tecmint ~ $ uptime
 17:40:58 up  8:12,  2 users,  load average: 4.63, 2.54, 2.24     [<-- Watch Load Average]