본문 바로가기

Engineering

SYSTEM PERFORMANCE

반응형

부하 발생 커맨드

stress-ng --cpu 4 --cpu-method matrixprod --vm 2 --vm-bytes 1G --timeout 60s

 

CPU 행렬 연산과 메모리 대역폭을 동시에 압박하는 시나리오

  • --cpu 4: 4개의 CPU 워커 실행
  • --cpu-method matrixprod: 행렬 곱셈 연산 방식으로 CPU 부하 생성
  • --vm 2: 2개의 가상 메모리 워커 실행
  • --vm-bytes 1G: 각 워커당 1GB의 메모리 할당 및 접근
  • --timeout 60s: 60초 후 자동으로 테스트 종료

stress-ng --hdd 2 --hdd-bytes 512M --fork 4 --timeout 60s

디스크 I/O와 과도한 프로세스 생성(Fork)을 유발하는 시나리오

  • --hdd 2: 2개의 디스크 I/O 워커 실행
  • --hdd-bytes 512M: 워커당 512MB 파일에 읽기/쓰기 수행
  • --fork 4: 4개의 프로세스 생성 및 종료 반복 워커 실행
  • --timeout 60s: 60초 후 자동으로 테스트 종료

stress-ng --sock 4 --cpu 2 --timeout 60s

TCP 소켓 폭증과 CPU 컨텍스트 스위칭 경합을 발생시키는 시나리오

  • --sock 4: 4개의 TCP 소켓 통신 워커 실행
  • --cpu 2: 2개의 CPU 워커 실행
  • --timeout 60s: 60초 후 자동으로 테스트 종료
sudo stress-ng --cpu 4 --vm 1 --vm-bytes 1.5G --hdd 1 --sock 2 --timeout 60s

CPU, 메모리, 디스크, 네트워크를 모두 극한으로 갈구는 종합 장애 시나리오

  • --cpu 4: 4개의 CPU 워커 실행
  • --vm 1: 1개의 가상 메모리 워커 실행
  • --vm-bytes 1.5G: 1.5GB의 메모리 할당 및 접근
  • --hdd 1: 1개의 디스크 I/O 워커 실행
  • --sock 2: 2개의 TCP 소켓 통신 워커 실행
  • --timeout 60s: 60초 후 자동으로 테스트 종료

성능 측정

vmstat

procs  ----memory--- ----swap----- -----io---- ---system----   ------cpu--------
 r b    swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

 

  • r: 실행 대기 중이거나 현재 CPU를 사용 중인 프로세스 수
  • b: I/O 작업 등으로 대기(Uninterruptible Sleep) 상태에 있는 프로세스 수
  • swpd: 사용 중인 가상 메모리(Swap) 양 (KB)
  • free: 완전히 비어 있는 여유 메모리 양 (KB)
  • buff: 파일 시스템 메타데이터를 저장하는 버퍼 메모리 양 (KB)
  • cache: 파일 내용을 캐싱하는 페이지 캐시 메모리 양 (KB)
  • si: 디스크에서 메모리로 가져오는 스왑 양 (Swap In, 초당 KB)
  • so: 메모리에서 디스크로 밀어내는 스왑 양 (Swap Out, 초당 KB)
  • bi: 디스크로부터 읽어 들인 블록 수 (Blocks In, 블록/초)
  • bo: 디스크로 내보낸 블록 수 (Blocks Out, 블록/초)
  • in: 초당 발생하는 인터럽트 수 (하드웨어/타이머 등)
  • cs: 초당 발생하는 컨텍스트 스위치(프로세스/스레드 전환) 횟수
  • us: 유저 스페이스(일반 프로그램)의 CPU 사용률 (%)
  • sy: 커널 스페이스(시스템 콜 등)의 CPU 사용률 (%)
  • id: CPU가 유휴 상태(아무것도 안 함)인 비율 (%)
  • wa: 디스크 I/O 대기 때문에 CPU가 멈춰 있던 비율 (%)
  • st: 가상 머신(VM) 환경에서 하이퍼바이저가 빼앗아 간 CPU 비율 (%)

 

iperf

iperf3 -c 192.168.1.100 -i 1 -t 10

 

  • -s (Server): 서버 모드로 실행 (클라이언트의 접속 대기)
  • -c <IP> (Client): 클라이언트 모드로 실행 및 접속할 서버 IP 지정
  • -t <초> (Time): 테스트를 진행할 총 시간 설정 (기본값: 10초)
  • -i <초> (Interval): 실시간 결과 출력 주기 설정 (예: -i 1은 1초마다 출력)
  • -p <포트> (Port): 사용할 포트 번호 지정 (기본값: 5201)

 

1분 성능 측정


1 uptime 시스템 부하 추세 확인 Load Average(1분, 5분, 15분)가 급증하는 추세인지 확인
2 dmesg | tail 커널 및 하드웨어 로그 확인 OOM(Out-Of-Memory) Killer 발동 여부, 드라이버 에러 탐색
3 vmstat 1 메모리, 프로세스, CPU 대기 상태 모니터링 r(실행 대기), wa(I/O 대기), si/so(스왑) 수치 확인
4 mpstat -P ALL 1 멀티코어별 CPU 사용률 분석 특정 코어만 100% 치솟는 부하 불균형(Skew) 여부 확인
5 pidstat 1 프로세스별 자원 사용량 추적 시스템 리소스를 범죄적으로 소모하는 특정 프로세스 식별
6 iostat -xz 1 디스크 I/O 성능 및 병목 진단 %util(디스크 사용률)과 await(응답 대기 시간) 확인
7 free -m 물리 메모리 및 스왑 잔여량 확인 가용 메모리 부족 여부 및 스왑 영역 점유 상태 파악
8 sar -n DEV 1 네트워크 인터페이스 대역폭 분석 초당 송수신 패킷량(Rx/Tx) 및 에러(drop/err) 발생 여부 확인
9 sar -n TCP,ETCP 1 TCP 네트워크 상태 및 에러 확인 초당 접속(Active/Passive) 및 재전송(Retransmit) 비율 확인
10 top 전체 시스템 종합 현황 재확인 리소스를 가장 많이 먹는 상위 프로세스들의 최종 크로스체크
 

 

반응형