리눅스

부하 테스트 - CPU 부하 테스트하기 (stress)

엔지니어-여리 2023. 9. 6. 22:00
반응형

부하 테스트를 하기 전에, 환경을 먼저 구축해보겠습니다.

 

임시 가상환경을 만들기 위해 proxmox에서 다음과 같은 리소스를 할당하여 부하 테스트 환경을 구축합니다.

 

`stress` 라는 도구를 사용해보겠습니다.
먼저 패키지를 설치해보겠습니다.

root@stress-test:/home/ubuntu# apt install stress -y -q
Reading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
  stress
0 upgraded, 1 newly installed, 0 to remove and 89 not upgraded.
Need to get 18.4 kB of archives.
After this operation, 55.3 kB of additional disk space will be used.
Get:1 http://kr.archive.ubuntu.com/ubuntu focal/universe amd64 stress amd64 1.0.4-6 [18.4 kB]
Fetched 18.4 kB in 1s (15.1 kB/s)
Selecting previously unselected package stress.
(Reading database ... 71993 files and directories currently installed.)
Preparing to unpack .../stress_1.0.4-6_amd64.deb ...
Unpacking stress (1.0.4-6) ...
Setting up stress (1.0.4-6) ...
Processing triggers for install-info (6.7.0.dfsg.2-5) ...
Processing triggers for man-db (2.9.1-1) ...

그리고 스트레스가 잘 가해지고 있는지 확인할 모니터링 도구도 설치해줍니다.

root@stress-test:/home/ubuntu# apt install htop -y -q
Reading package lists...
Building dependency tree...
Reading state information...
htop is already the newest version (2.2.0-2build1).
htop set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 89 not upgraded.

 

stress가 어떠한 프로그램인지 살펴봅시다.

root@stress-test:/home/ubuntu# stress --help
`stress' imposes certain types of compute stress on your system

Usage: stress [OPTION [ARG]] ...
 -?, --help         show this help statement
     --version      show version statement
 -v, --verbose      be verbose
 -q, --quiet        be quiet
 -n, --dry-run      show what would have been done
 -t, --timeout N    timeout after N seconds
     --backoff N    wait factor of N microseconds before work starts
 -c, --cpu N        spawn N workers spinning on sqrt()
 -i, --io N         spawn N workers spinning on sync()
 -m, --vm N         spawn N workers spinning on malloc()/free()
     --vm-bytes B   malloc B bytes per vm worker (default is 256MB)
     --vm-stride B  touch a byte every B bytes (default is 4096)
     --vm-hang N    sleep N secs before free (default none, 0 is inf)
     --vm-keep      redirty memory instead of freeing and reallocating
 -d, --hdd N        spawn N workers spinning on write()/unlink()
     --hdd-bytes B  write B bytes per hdd worker (default is 1GB)

Example: stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s

Note: Numbers may be suffixed with s,m,h,d,y (time) or B,K,M,G (size).
root@stress-test:/home/ubuntu#

프로그램의 설명을 보니 시스템에 특정 유형의 스트레스를 가하는 프로그램이라고 나와있네요.

크게 4가지 기능을 테스트 해볼 수 있다. 

cpu 부하 (-c 옵션)

stress -c N # N개의 코어를 부하테스트에 사용

stress -c 3 # 3개 코어를 사용하여 부하 테스트

작업 i/o 부하 (-i 옵션)

stress -i N # N개의 i/o 작업 테스트 수행

가상 메모리 부하 (-m 옵션)

stress -m N # N개의 메모리 부하 작업 실행

stress -m 1 # 1개의 메모리 부하 작업 실행 

stress -m 1 --vm-bytes 10MB # 1개의 메모리 부하 작업 실행, 부하작업당 10 MB 할당

디스크 i/o 부하(-d 옵션)

stress -d N # 디스크당 N개의 작업 부하

 

위 기능은 복합적으로 사용할 수 있고, 장시간 사용시 하드웨어에 부담을 줄 수 있으므로, 시간 제한을 활용해 수행해볼 수 있습니다.

-t 옵션을 활용하여 timeout을 반드시 걸어주는 게 좋습니다.

 

다음과 같이 예제를 활용해볼 수 있습니다.

 

예제 1) 1개의 cpu 부하 작업, 10초간 수행

stress -c 1 -t 10

 

예제 2) 1개의 cpu 부하 작업, 1개의  메모리 부하 작업, 10초간 수행

stress -c 1 -m 1 -t 10

 

예제 3) 1개의 cpu 부하 작업, 1개의  메모리 부하 작업, 1개의 i/o 부하 작업, 10초간 수행

stress -c 1 -m 1 -i 2 -t 10

 

예제 4) 2개의 cpu 부하 작업, 2개의  메모리 부하 작업, 1개의 i/o 부하 작업, 1개의 disk i/o 작업, 10초간 수행

stress -c 2 -i 1 -m 2 -d 1 -t 10

 

다음에는 메모리 부하를 세부적으로 테스트 진행해볼 수 있는 글을 작성해보겠습니다.

읽어주셔서 감사합니다.

반응형