OS OS내에 있는 stress-ng 도구를 사용하여 CPU, 메모리, HDD에 동시에 스트레스를 주는 방법을 안내해 드리겠습니다…
페이지 정보
작성자 OSworker 아이디로 검색 전체게시물 댓글 0건 조회 702회 좋아요 1회 작성일 24-05-19 22:08본문
안녕하세요
여러분들은 OS에 CPU, MEM, HDD등에 부하를 주실때 무엇을 사용하시나요? 보통 3rd party 제품을 많이 사용하시죠~
오늘은 RHEL 내에 있는 stress-ng를 소개시켜 드리려 합니다.
제가 얼마전에 서버 장애 재현을 하기위해 부하 어플리케이션을 찾다가 이것을 써보니 괜찮다고 생각되어 이렇게
안내 하게 되었습니다.
1. 설명
stress-ng 도구는 시스템이 불리한 조건에서 효율성을 유지하는 능력을 측정합니다. stress-ng 도구는 모든 커널 인터페이스에 부하를 걸고 스트레스를 주기 위한 스트레스 작업 생성기입니다. 이 도구는 스트레스 요인으로 알려진 다양한 스트레스 메커니즘을 포함합니다. 스트레스 테스트는 머신이 열 과부하나 시스템이 과도하게 작동될 때 발생하는 운영 체제 버그와 같은 하드웨어 문제를 유발하도록 열심히 작동하게 만듭니다.
270개 이상의 다양한 테스트가 있습니다. 여기에는 부동 소수점, 정수, 비트 조작, 제어 흐름, 가상 메모리 테스트를 수행하는 CPU 특정 테스트가 포함됩니다.
> 설치
-아래와 같이 dependencies 가 2가지 있습니다.
Judy-1.0.5-18.module+el8+2765+cfa4f87b.x86_64 <<<<<<<<<<<<<<
libatomic-8.5.0-20.el8.x86_64 <<<<<<<<<<<<<
stress-ng-0.15.00-1.el8.x86_64
# yum install stress-ng
Dependencies resolved.
=====================================================================================================================================================================================================
Package Architecture Version Repository Size
=====================================================================================================================================================================================================
Installing:
stress-ng x86_64 0.15.00-1.el8 rhel-8-for-x86_64-appstream-rpms 2.1 M
Installing dependencies:
Judy x86_64 1.0.5-18.module+el8+2765+cfa4f87b rhel-8-for-x86_64-appstream-rpms 131 k
libatomic x86_64 8.5.0-20.el8 rhel-8-for-x86_64-baseos-rpms 25 k
Enabling module streams:
mariadb 10.3
Transaction Summary
=====================================================================================================================================================================================================
Install 3 Packages
..........
........
.....
Installed:
Judy-1.0.5-18.module+el8+2765+cfa4f87b.x86_64 libatomic-8.5.0-20.el8.x86_64 stress-ng-0.15.00-1.el8.x86_64
Complete!
-----------------------------------------------
사전 요구 사항
시스템에 대한 root 권한이 있어야 합니다.
-----------------------------------------------
> 사용 법 및 예제 테스트
- 한 CPU에서 60초 동안 부동 소수점을 테스트하려면 --matrix 옵션을 사용합니다.
# stress-ng --matrix 1 -t 1m
. 아래 그래프를 보면 CPU가 치는것을 확인할 수 있습니다.
- 다음과 같이 CPU 강조 표시기 인스턴스를 여러 개 실행합니다.
# stress-ng --cpu 2 --matrix 1 --mq 3 -t 5m
- 모든 stress 테스트를 병렬로 실행하려면 -all 옵션을 사용합니다.
# stress-ng --all 2
이 예에서 stress-ng 는 모든 과부하 테스트의 두 인스턴스를 병렬로 실행합니다.
=>> 저는 이테스트를 하니 VM이 죽는 현상이 있었습니다. 서버에 부하가 많이 간것이죠....
- MEM test
가상 메모리를 테스트하도록 하려면 --page-in 옵션을 사용합니다.
# stress-ng --vm 2 --vm-bytes 2G --mmap 2 --mmap-bytes 2G --page-in
stress-ng: info: [5430] defaulting to a 86400 second (1 day, 0.00 secs) run per stressor
stress-ng: info: [5430] dispatching hogs: 2 vm, 2 mmap
이 예에서는 할당된 버퍼 크기, 2 x 2GB의 vm stressor 및 --page -in 이 활성화된 2 x 2GB의 mmap 강조 기보다 작은 메모리가 4GB인 시스템에서 메모리 부족을 테스트합니다.
- 인터럽트 로드를 생성하려면 --timer 옵션을 사용합니다.
# stress-ng --timer 32 --timer-freq 1000000
이 예에서는 stress-ng 테스트 32개의 인스턴스 1ECDHE를 테스트합니다.
- 파일 시스템 스트레스 테스트 (fallocate): 파일을 할당하여 파일 시스템에 부하를 줄 수 있습니다.
# stress-ng --fallocate 1 --timeout 60s
stress-ng: info: [6078] setting to a 60 second run per stressor
stress-ng: info: [6078] dispatching hogs: 1 fallocate
stress-ng: warn: [6079] fallocate: WARNING: finished prematurely after just 12.98s
stress-ng: info: [6078] successful run completed in 12.48s
> 모니터링 같이 해봤습니다.
avg-cpu: %user %nice %system %iowait %steal %idle
5.76 0.00 0.75 0.00 0.00 93.48
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.00 0.00 0.00 0 0
scd0 0.00 0.00 0.00 0 0
dm-0 0.00 0.00 0.00 0 0
dm-1 0.00 0.00 0.00 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
3.02 0.00 1.76 0.38 0.00 94.85
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 4123.00 24736.00 4193.50 24736 4193 <<<<<<<<<<<<<< 증가
scd0 0.00 0.00 0.00 0 0
dm-0 3014.00 18344.00 4197.50 18344 4197
dm-1 1598.00 6392.00 0.00 6392 0
avg-cpu: %user %nice %system %iowait %steal %idle
1.50 0.00 1.50 0.00 0.12 96.88
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 5035.00 16.00 7273.00 16 7273 <<<<<<<<<<<<<< 증가
scd0 0.00 0.00 0.00 0 0
dm-0 5035.00 0.00 7269.00 0 7269
dm-1 4.00 16.00 0.00 16 0
avg-cpu: %user %nice %system %iowait %steal %idle
1.38 0.00 1.75 0.00 0.00 96.87
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 4955.00 8.00 7004.00 8 7004
scd0 0.00 0.00 0.00 0 0
dm-0 4953.00 0.00 7004.00 0 7004
dm-1 2.00 8.00 0.00 8 0
avg-cpu: %user %nice %system %iowait %steal %idle
1.88 0.00 1.75 0.38 0.00 95.99
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 6137.00 26120.00 6919.00 26120 6919 <<<<<<<<<<<<<< 증가
scd0 0.00 0.00 0.00 0 0
dm-0 4962.00 17152.00 6919.00 17152 6919
dm-1 2242.00 8968.00 0.00 8968 0
avg-cpu: %user %nice %system %iowait %steal %idle
2.89 0.00 2.14 1.01 0.00 93.96
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 7982.00 109460.00 7490.00 109460 7490 <<<<<<<<<<<<<< 증가
scd0 0.00 0.00 0.00 0 0
dm-0 5371.00 73992.00 7494.00 73992 7494
dm-1 8867.00 35468.00 0.00 35468 0
그외 HDD 부하 테스트 방법
# stress-ng --disk 1 --disk-bytes 1G --timeout 60s
. 이 명령은 1GB의 데이터를 디스크에 쓰는 작업을 1분 동안 수행합니다.
# stress-ng --iomix 1 --timeout 60s
랜덤 I/O 스트레스 테스트 (iomix): 랜덤 읽기/쓰기를 통해 디스크에 부하를 줄 수 있습니다.
# stress-ng --disk 4 --disk-bytes 500M --timeout 60s
동시 다중 디스크 스트레스 테스트:
- stress-ng 도구를 사용하여 CPU, 메모리, HDD에 동시에 스트레스를 주는 방법을 안내해 드리겠습니다.
stress-ng는 여러 유형의 스트레스를 동시에 주는 기능을 제공합니다.
# stress-ng --cpu 4 --vm 2 --vm-bytes 1G --disk 2 --timeout 60s
이 명령어의 구성 요소를 설명하면 다음과 같습니다:
--cpu 4: 4개의 CPU 스트레스 작업을 실행합니다.
--vm 2: 2개의 가상 메모리 스트레스 작업을 실행합니다.
--vm-bytes 1G: 각 가상 메모리 스트레스 작업이 1GB의 메모리를 할당하도록 설정합니다.
--disk 2: 2개의 디스크 스트레스 작업을 실행합니다.
--timeout 60s: 모든 스트레스 작업을 60초 동안 실행합니다.
이 명령어는 CPU, 메모리, 디스크에 동시에 부하를 주어 시스템의 전체적인 성능과 안정성을 테스트할 수 있습니다. 시스템의 성능과 하드웨어 상태에 따라 이 값을 조절할 수 있습니다.
주의: 실제 시스템에서 이 명령어를 실행할 때는 주의가 필요합니다. 과도한 부하는 시스템 성능 저하 및 하드웨어 손상을 초래할 수 있으므로 테스트 환경에서 충분히 검토한 후 실제 환경에서 사용하시기 바랍니다.
OS내에 부하 가능한 패키지가 있어서 따로 준비안해도 되는것이 좋은 것 같습니다.
감사합니다.
댓글목록
등록된 댓글이 없습니다.