IT/Linux_리눅스

[Linux / 명령어] 리눅스 CPU, memory 부하테스트를 위한 stress 명령어 사용, stress 테스트 진행하기

무브영/movewoo0 2024. 8. 2. 09:20
728x90
반응형

 

 

 

728x90

1. 부하테스트와 stress 명령어

stress 명령어는 Linux 시스템을 구성하는 CPU, Memory 등과 같은 HW 자원에 인위적으로 부하를 가해서 

해당 시스템의 성능을 테스트하거나 한계치를 확인, 각 HW 파트들의 장애유무를 판단할 수 있는 명령어/유틸리티 입니다. 

기본적으로 CPU, Memory, I/O 등을 대상으로 부하를 주면서 테스트가 가능합니다.

 

그렇지만 I/O나 디스크와 같은 경우엔 별도의 테스트툴이 더 좋은 것들이 많기 때문에

보통은 stress 명령어는 CPU 나 Memory의 부하테스트 용도 한정으로 많이 사용되고 있습니다. 

 

stress 명령어를 사용하기 위한 패키지는 쉽게 설치할 수 있습니다. 

아래와 같이 리눅스 배포판마다의 설치 명령어의 차이만 있을뿐 설치를 위한 패키지명은 동일합니다. 

 

#Ubuntu/Debian
sudo apt-get install stress

#Fedora
sudo dnf install stress

#CentOS/RHEL
sudo yum install epel-release
sudo yum install stress

 

 

2. stress 명령어 사용법

사용 형식과 옵션은 아래와 같습니다. 

stress [option]

 

옵션에 따라서 CPU / Memory / IO / Disk 에 대한 테스트를 결정할 수 있습니다. 

 

  • -c N : N개의 CPU 워커를 실행합니다. 각 워커는 sqrt() 연산을 반복하여 CPU를 사용합니다.
  • -i N : N개의 I/O 워커를 실행합니다. 각 워커는 동기식 쓰기 작업을 반복합니다.
  • -m N : N개의 메모리 워커를 실행합니다. 각 워커는 malloc()과 free()를 반복합니다.
  • -d N : N개의 디스크 워커를 실행합니다. 각 워커는 파일을 생성하고 삭제합니다.
  • --timeout N : N초 후에 자동으로 종료됩니다.

 

예를 들어서 CPU에 부하테스트를 하고 싶다면 아래의 코드로 실행 할 수 있습니다. 

stress -c 8

 

 

위의 코드는 CPU 워커 8개를 생성하여 8개의 CPU에 부하를 줍니다. 

그렇다면 만약 시스템의 CPU가 N개 일 때, 이 전체 CPU에 대한 테스트를 하고싶다면

stress -c N

 

을 실행하게 되면 모든 CPU에 부하를 걸면서 테스트를 할 수 있습니다. 

 

아래와 같이 실제 사용하고 있는 서버에서 테스트를 진행해봤습니다. 

 

현재 서버의 CPU 갯수는 32개로 이 CPU 전체에 모두 부하를 거는 테스트를 실행해 보겠습니다. 

 

 

부하를 걸기 전에 현재 CPU의 load average는 모두 0 입니다. CPU 사용률이 0 라는 뜻입니다. 

load average에 관해 궁금한 점이 있다면 아래의 링크에서 확인가능합니다. 

2021.01.02 - [IT/Linux_리눅스] - [Linux] Load Average란? , 리눅스의 uptime, vmstat 명령어로 Load Average 확인하기

 

[Linux] Load Average란? , 리눅스의 uptime, vmstat 명령어로 Load Average 확인하기

안녕하세요 이번 포스팅에서는 Load Average가 무엇인지, 그리고 이를 확인할 때 쓰이는 vmstat 명령어에 대해서 글을 써보겠습니다. 0. Load Average 란? Load Average는 현재얼마나 많은 수의 프로세스가 실

youngswooyoung.tistory.com

 

이제 CPU에 부하를 걸어서 테스트를 진행하겠습니다. 

stress -c 32

 

 

32개의 CPU에 모두 부하를 거는 테스트를 실행한 후

 

top 명령어를 사용해서 load average를 확인하면 점점 그 수치가 올라가는 것을 확인할 수 있습니다. 

 

 

시간이 한참 흐른 후에는 load average가 CPU의 갯수인 32까지 도달하는 모습을 보여주는데, 이는 CPU 32개가 모두 한계치까지 작업을 하고 있다는 것으로 해석할 수 있습니다. 

 

 

3. stress 테스트 중의 모니터링

해당 stress 테스트 중에도별도로 모니터링을 진행할 수 있는데 아래와 같이 모니터링 예제를 볼 수 있습니다. 

 

  • 모니터링: stress 실행 중에 top, htop, vmstat 등의 명령어를 사용하여 시스템 상태를 모니터링할 수 있습니다.
  • 주의: 실 운영 환경에서 사용 시 주의가 필요합니다. 과도한 부하는 시스템 성능에 영향을 미칠 수 있습니다.

 

 


 



 

본 포스팅의 내용 및 이미지를 무단 전재, 재배포 또는 복사를 금지합니다.

인용 시 출처와 같이 공개해주세요!

도움이 되셨다면 댓글 또는 공감 부탁드립니다!

 

728x90
반응형