[Ubuntu] Stress Tool 이용한 Autoscaling 확인

메린·2023년 3월 2일
0

Ubuntu

목록 보기
2/3

Ubuntu 20.04 Web Server Autoscaling 확인

stress Tool 설치

apt-get install stress

사용방법과 옵션

CPU 사용

stress -c <코어수>
stress -c 4

Memory 사용

stress --vm <프로세스 개수> --vm-bytes<사용할 크기>

메모리 로드를 위해 프로세스 수와, 사용할 메모리의 크기를 설정합니다.

HDD

stress--hdd-hdd-bytes <사용할 크기>

하드디스크 로드를 위한 프로세스 수와 테스트 파일의 크기를 지정합니다.

stress --hdd 2 --hdd-bytes 1024m

hard disk load를 위해서 2개의 process와 1024MB 용량의 파일을 사용합니다.

Test all

stress -c 4 --vm 3 --vm-bytes 2048m --hdd 2 -hdd-bytes 1024m --timeout 60s

Ubuntu mpstat, vmstat

mpstat과 vmstat을 사용하기 위해 sysstat을 설치합니다. (sar와 iostat포함)
*sar : System Activity Report의 약자로 시스템의 CPU, 메모리, 입출력 사용량 정볼르 수집하고 리포팅하는 명령어이다. 시스템의 리소스 사용이력을 모니터링하고 파일에 저장한 후 리포팅 할 때 많이 사용한다.

sar [옵션] [인터벌] [횟수]

CPU 사용률 조회

sar -u 2 5

실행시켜보았다.

  • %user : 사용자모드에서 CPU가 사용된 시간의 비율
  • %nice : nice로 스케줄링의 우선순위를 변경한 프로세스가 사용자 모드에서 CPU를 사용한 시간의 비율
  • %system : 시스템 모드에서 CPU가 사용된 시간의 비율
  • %iowait : CPU가 디스크 입출력 대기를 위해 기다린 시간 비율
  • %steal : OS 가상화를 이용하고 있을 경우, 다른 가상 CPU의 계산으로 대기된 시간 비율
  • %idle : CPU가 사용되지 않고 유휴상태로 소비한 시간 비율

Load Average 확인

sar -q 2 5

실행시켜보았다.

  • runq-sz : 실행큐에 쌓여있는 프로세스 수
  • plist-sz : 시스템상의 프로세스 사이즈
  • Idavg-* : 1분, 5분, 15분 사이의 Load Average 값
  • blocked : 현재 처리되고 있는 입출력 작업의 숫자

메모리 사용 정보 조회

sar -r 2 5

  • kbmemfree : 물리 메모리 중 남은 용량
  • kbmemused : 물리 메모리 중 사용한 용량
  • %memused : 물리 메모리 사용률
  • kbbuffers : 버퍼캐시로 사용되고 있는 물리 메모리의 용량
  • kbcached : 페이지 캐시로 사용되고 있는 물리 메모리의 용량
  • kbcommit : 현재 시스템에 할당된 메모리의 크기
  • %commit : kbcommit의 점유 백분율
  • kbactive : 사용중인 메모리에서 최근 사용된 메모리 정보
  • kbinact : 사용중인 메모리 중 최근에 사용되지 않은 영역의 크기
  • kbdirty : 디스크에 쓰여지기 위해 대기중인 메모리의 크기

스왑 발생 정보 조회

  • pswpin/s : 1초동안 스왑인(swap-in)되고 있는 페이지의 수
  • pswpout/s : 1초동안 스왓아웃(swap-out)되고 있는 페이지의 수

디스크 사용 정보 조회

sar -d 2 5

네트워크 사용 정보 조회

sar -n [키워드]
  • 키워드 : DEV , EDEV, NFS, NFSD, SOCK, IP, EIP, ICMP, EICMP, TCP, ETCP, UDP, SOCK6, IP6, EIP6, ICMP6, EICMP6&UDP6

지표를 파일로 저장

-o 옵션을 사용하면 수집된 정보를 -o 옵션으로 입력받은 파일에 바이너리 포맷으로 기록해둔다. 이후 -f 옵션으로 바이너리 파일 경로를 입력하면 정보를 해석해서 화면에 뿌려준다.

sar -o out 2 5 > /dev/null w>&1
sar -f out

mpstat

mpstat

이 명령어는 CPU 사용률과 시간 백분율을 CPU 개별로 모니터링 할 수 있습니다. 이 명령어를 사용하면 각 CPU 별로 균형 및 불균형 상태를 확인할 수 있습니다.

  • 예를들어, CPU 코어나 쓰레드스레드 중에서 특정 CPU만 job을 진행하고 있다던지 idle(유휴)상태의 코어나 스레드들을 확인할 수 있다.

    위와 같이 mpstat만 입력했을 경우, 명령어 입력시간 기준으로 정보만 출력되고 종료가 됩니다.
    추가적으로 그다음 명령어 mpstat뒤에 숫자 1을 붙이게 되면 종료시키기 전까지 1초마다 정보를 업데이트해서 화면에 출력해 줍니다. 실시간으로 CPU를 모니터링 할 수 있습니다.
mpstat -P ALL

위의 mpstat과 다르게 all아래 0과 1이 생겼습니다. 4코어면 0번부터 3번까지가 한번에 표시가 도리 것입니다.

  • %usr : 사용자 레벨(애플리케이션)에서 사용
  • %nice : nice 우선순위 사용자 레벨에서 사용
  • %sys : 시스템 레벨(커널)에서 사용
  • %iowait : I/O 처리를 위해 기다린 CPU 시간 백분율
  • %irq : H/W 인터럽트 서비스 사용
  • %soft : S/W 인터럽트 서비스 사용
  • %steal : 하이퍼바이저가 다른 가상 프로세서 서비스를 기다린 CPU 시간 백분율
  • %guest : 가상 프로세서 실행 사용
  • %idle : 유휴 한 CPU 시간 백분율

vmstat

vmstat은 프로세스, 메모리, 페이징, I/O, CPU의 활동정보를 살펴볼 수 있습니다.
vmstat에서 중요한 것은 procs 영역의 b 필드입니다. b 필드의 수치가 높은 경우 I/O 작업을 위해 CPU가 계속해서 대기 상태로 있는 경우입니다.
이 경우에는 disk I/O 문제를 의심해 볼 필요가 있습니다. 추가로 swap out(so)이 지속적으로 발생한다면, 메모리 부족을 의심할 수 있습니다. 하지만 일정한 간격으로 스왑 아웃이 발생하는 것은 정상적이면, 스왑 아운(so) 필드는 항상 0에 가까워야 합니다.

vmstat

vmstat 1

procs

  • r : cpu 접근 대기 중인 실행 가능한 프로세스의 수
  • b : I/O 자원을 할당 받지 못해서 블락된 프로세스의 수

swap

  • si : swap-in 된 메모리의 양 (kb)
  • so : swap-out 된 메모리의 양 (kb)
  • swat-out이 지속적으로 발생하면 메모리 부족을 의심해 볼 수 있습니다.

I/O

  • bi : 블록 디바이스로부터 입력 블록수
  • bo : 블록 디바이스로부터 출력 블록수

system

  • in : 초당 발생한 interrupts의 수
  • cs : 초당 발생한 context switches(문맥 교환) 수

CPU

  • us : CPU가 사용자 레벨 코드를 실행한 시간 백분율(단위%)
  • sy : CPU가 시스템 레벨 코드를 실행한 시간 백분율(단위%)
  • id : idle time 시간 백분율(단위%)
  • wa : IO wait time 시간 백분율(단위%)
  • st : steal time 시간 백분율(%)
    *steal time : 하이퍼바이저가 다른 가상 프로세서를 서비스하는 동안에 가상 CPU가 실제 CPU를 기다리는 시간을 백분율로 표시한 값
    가상 환경에서 동작하는 VM(Virtual Machine)은 단일 호스트에 있는 다른 인스턴스와 리소스를 공유합니다. CPU Steal time을 통해 VM에서 동작하는 CPU가 물리 머신으로부터 자원을 할당받기 위해 얼마나 대기하고 있는지 알 수 있습니다.
profile
I can do it ! 苦盡甘來

0개의 댓글