참고:

Oracle Linux에서 시스템 리소스 모니터링

소개

이 사용지침서에서는 Oracle Linux vmstat, mpstattop를 사용하여 시스템 리소스 사용을 모니터링합니다. 시스템 재교육의 사용 모니터링은 시스템 성능에 부정적인 영향을 줄 수 있는 문제를 감지하는 데 유용합니다.

배경

Oracle Linux는 시스템 리소스 사용을 모니터링 및 분석하는 동시에 여러 프로세스 및 관련 스레드에서 성능 문제를 진단하는 추적 도구를 제공합니다.

목표

필요 사항

Oracle Linux 8 이상이 설치된 클라이언트 시스템입니다.

주: 무료 실습 환경을 사용할 때는 연결 및 기타 사용 지침은 Oracle Linux Lab Basics을 참조하십시오.

vmstat 명령 옵션 탐색 및 사용

vmstat는 가상 메모리의 양과 사용 가능한 양을 보여줍니다. 이 명령은 페이징 작업도 표시합니다. 시스템에서 페이지 인과 페이지 아웃을 관찰할 수 있습니다.

이미지에 표시된 것처럼 작업 표시줄에 있는 "단계 숨기기 및 "전체 화면" 컨트롤을 사용하여 보기 영역을 최대화하는 것이 좋습니다.

단계 숨기기 단계 숨기기

vmstat에 대한 개요는 아래 비디오를 참조하십시오.

  1. vmstat 명령을 옵션 없이 실행합니다.

    vmstat
    

    이 명령은 단일 보고서를 생성합니다. 출력은 procs, memory, swap, io, systemcpu의 여섯 섹션으로 구분됩니다.

    • 처음 두 열은 프로세스에 대한 정보를 제공합니다.

      • r은 대기 상태인 프로세스 수입니다. 이러한 프로세스는 Idle 상태이며 실행 대기 중인 프로세스입니다.

      • b는 휴지 모드에 있고 마지막 업데이트 이후 중단된 프로세스 수입니다.

    • 다음 네 개의 열은 메모리에 대한 정보를 제공합니다.

      • swpd는 사용된 가상 메모리 크기입니다.

      • free은 유휴 메모리 크기입니다.

      • buff은 버퍼로 사용되는 메모리 양입니다.

      • cache는 캐시로 사용되는 메모리의 양입니다.

    • 다음 두 열은 스왑에 대한 정보를 제공합니다.

      • si은 디스크에서 교체된 메모리 양(초당)입니다.

      • so은 디스크로 교체된 메모리 양입니다(초당).

        0이 아닌 siso 숫자는 물리적 메모리가 부족하여 커널에서 메모리를 디스크로 스왑하도록 합니다.

    • 다음 두 열은 입력/출력을 보고합니다.

      • bi는 블록 장치에서 수신된 초당 블록 수입니다.

      • bo는 블록 장치로 전송된 초당 블록 수입니다.

    • 다음 두 열은 다음 시스템 정보를 제공합니다.

      • in는 시계를 포함하여 초당 인터럽트 수입니다.

      • cs는 초당 컨텍스트 전환 수입니다.

    • 마지막 다섯 개 열은 총 CPU 시간의 백분율을 제공합니다.

      • us은 사용자 프로세스에 소비되는 CPU 주기의 백분율입니다.

      • sy은 시스템(커널) 프로세스에 소비한 CPU 주기의 백분율입니다.

      • id은 유휴 상태로 소비된 CPU 주기의 백분율입니다.

      • wa은 I/O를 기다리는 데 소비한 CPU 주기의 백분율입니다.

      • st는 가상 시스템에서 도난된 CPU 주기의 백분율입니다.

  2. vmstat 1 명령(소문자 l이 아닌 숫자 1)을 실행하여 초당 연속 보고서를 봅니다.

    vmstat 1
    
    • 종료하려면 Ctrl+C를 누릅니다.
  3. vmstat 7 4 명령을 실행하여 7초 간격으로 4개의 보고서를 실행합니다.

    vmstat 7 4
    

    count 옵션은 vmstat에 실행할 보고서 수(4)를 알려주고, 지연 옵션(7)은 각 보고서 간의 시간 간격입니다.

  4. vmstat -s 명령을 실행하여 다양한 이벤트 카운터 및 메모리 통계 테이블을 표시합니다.

    vmstat -s
    
  5. vmstat -a 명령을 실행하여 활성 및 비활성 메모리를 표시합니다.

    vmstat -a
    

    -a 옵션은 출력의 memory 섹션에 active 및 비활성(inact) 메모리 양을 표시합니다.

  6. vmstat -f 명령을 실행하여 마지막 부트 이후 포크 수를 표시합니다.

    vmstat -f
    
  7. vmstat -t 명령을 실행하여 출력에 시간 기록을 추가합니다.

    vmstat -t
    
  8. vmstat -d 명령을 실행하여 시스템의 디스크 사용량 통계를 표시합니다.

    vmstat -d
    
  9. vmstat -p sda1 명령을 실행하여 특정 디스크 분할 영역에 대한 보고서를 만듭니다.

    vmstat -p sda1
    

    출력에는 분할 영역에 대한 요약(번호 또는 읽기 및 쓰기)이 표시됩니다.

mpstat 명령 옵션 탐색 및 사용

mpstat 명령은 시스템의 모든 논리적 CPU에 대한 성능 통계를 수집하고 표시하는 데 사용됩니다. 프로세스가 CPU를 사용하고 있는 경우 다른 요청을 처리할 수 없습니다. 이러한 다른 프로세스는 CPU가 확보될 때까지 기다려야 합니다.

mpstat에 대한 개요는 아래 비디오를 참조하십시오.

  1. mpstat 명령을 옵션 없이 실행합니다.

    mpstat
    

    첫번째 행에는 시스템의 Linux 커널 버전, 호스트 이름, 현재 날짜, 구조 및 CPU 수가 표시됩니다.

    다음 행의 첫번째 열은 시간 기록을 제공하며 나머지 열은 다음과 같이 정의됩니다.

    • CPU0 또는 all 키워드로 지정된 프로세서로, 통계가 모든 프로세서 사이에서 평균으로 계산됨을 나타냅니다.

    • %user은 사용자 레벨에서 응용 프로그램을 실행하는 동안 사용된 CPU의 백분율입니다.

    • %nice은 우선 순위가 높은 사용자 레벨에서 실행하는 동안 사용된 CPU의 백분율입니다.

    • %sys는 시스템(커널) 레벨에서 실행하는 동안 사용된 CPU의 백분율입니다.

      mpstat 명령에는 하드웨어 및 소프트웨어 인터럽트를 처리하는 데 소요되는 시간이 포함되지 않습니다.

    • %iowait은 시스템에 미해결 디스크 I/O 요청이 있는 동안 CPU가 유휴 상태였던 시간의 백분율입니다.

    • %irq은 하드웨어 인터럽트를 서비스하는 CPU에서 소비한 시간의 백분율입니다.

    • %soft은 CPU에서 소프트웨어 인터럽트를 제공하는 데 걸린 시간의 백분율입니다.

    • %steal는 하이퍼바이저가 다른 가상 프로세서를 서비스하는 동안 가상 CPU 또는 CPU의 비자발적 대기에 소비한 시간의 백분율입니다.

    • %guest은 CPU에서 가상 프로세서를 실행하는 데 소비한 시간의 백분율입니다.

    • %gnice는 CPU에서 가격이 책정된 게스트를 실행하는 데 소비한 시간의 백분율입니다.

    • %idle는 CPU가 유휴 상태였고 시스템에 미해결 디스크 I/O 요청이 없는 시간의 백분율입니다.

  2. mpstat 2 5 명령을 실행하여 2초마다 CPU 작업을 확인하고 모든 CPU에 대해 총 5개 보고서를 작성합니다.

    mpstat 2 5
    

    출력은 한 행의 정보를 총 5회 인쇄하고 평균도 인쇄합니다.

  3. mpstat -P ALL 명령을 실행하여 각 CPU에 대한 CPU 사용량을 보고합니다.

    mpstat -P ALL
    

    이 출력은 모든 CPU 및 각 CPU에 대한 단일 작업 행을 인쇄합니다. 주: mpstat는 지정된 기간에 대한 평균 CPU 활용률도 인쇄합니다.

  4. mpstat -P ALL 2 5 명령을 실행하여 CPU의 2초마다 CPU 작업을 확인합니다.

    mpstat -P ALL 2 5
    

    이 출력은 2초 간격으로 각 CPU에 대한 CPU 활용률 통계를 5회 출력합니다. 주: mpstat는 지정된 기간에 대한 평균 CPU 활용률도 인쇄합니다.

  5. mpstat -A 명령을 실행하여 동일한 명령 출력에서 CPU 사용률 및 인터럽트 통계를 함께 인쇄합니다.

    mpstat -A
    

top 명령 탐색

top 명령은 프로세서 작업을 실시간으로 지속적으로 살펴봅니다. top는 시스템에서 가장 CPU를 많이 사용하는 프로세스 또는 작업 목록을 표시하고 프로세스 조작을 위한 제한된 대화식 인터페이스를 제공합니다.

top에 대한 개요는 아래 비디오를 참조하십시오.

  1. CPU 작업의 특정 시점 뷰에 대한 옵션 없이 top 명령을 실행합니다.

    top
    

    출력은 기본적으로 3초마다 새로 고쳐지고 두 개의 기본 섹션으로 구분됩니다.

    위쪽 섹션에는 최근 1, 5, 15분 동안 로드 평균, 실행 및 일시 정지 작업 수, 전체 CPU 및 메모리 사용량과 같은 일반 정보가 표시됩니다.

    • 다음 명령을 사용하여 상단 섹션에 표시된 출력을 켜거나 끕니다.

      • 로드 평균 및 가동 시간을 해제 및 해제하려면 소문자 l(숫자 1 아님)을 입력합니다.

      • m를 입력하여 메모리 및 스왑 사용을 해제하고 끕니다.

      • t를 입력하여 메모리 및 스왑 사용을 해제하고 끕니다.

    아래쪽 섹션에는 프로세스 ID 번호(PID) 및 프로세스를 소유한 사용자와 함께 CPU 사용량을 기준으로 정렬된 프로세스 목록이 표시됩니다. 또한 출력에 프로세스에서 사용하는 실행 시간과 메모리가 표시됩니다.

    다음은 하단 섹션에 있는 열에 대한 설명입니다.

    • PID는 작업의 고유 프로세스 ID입니다.

    • USER는 작업 소유자의 유효 사용자 이름입니다.

    • PR은 작업의 실제 우선순위입니다.

    • NI는 사용자 공간에서 작업의 nice 값입니다.

      값이 음수이면 우선 순위가 높고, 값이 양수이면 우선 순위가 낮음을 의미합니다. 값이 0이면 작업 우선순위가 실행될 때 영향을 주지 않습니다.

    • VIRT은 작업에 사용되는 총 가상 메모리 양입니다.

      이 값에는 모든 코드, 데이터 및 공유 라이브러리와 교체된 페이지가 포함됩니다.

    • RES는 작업이 사용 중인 비스왑 물리적 메모리 또는 상주 크기입니다.

    • SHR은 작업이 사용 중인 공유 메모리의 양입니다.

      이 메모리는 다른 프로세스와 공유될 수 있습니다.

    • S은 태스크 상태입니다. 다음 다섯 가지 상태가 있습니다.

      • D 무정전 슬립

      • R 실행 중

      • S 일시 정지

      • T 추적 또는 중지

      • Z Zombie

    • %CPU는 마지막 화면 업데이트 이후 경과된 CPU 시간 또는 CPU 사용량의 작업 공유로, 총 CPU 시간의 백분율로 표시됩니다.

    • %MEM은 작업의 현재 사용 가능한 물리적 메모리 또는 메모리 사용량 공유입니다.

    • TIME+은 작업이 시작된 이후 사용된 총 CPU 시간입니다.

    • COMMAND는 작업을 시작하는 데 사용되는 명령줄 또는 프로그램 이름입니다.

  2. Crtl+C를 입력하여 top를 종료합니다.

vmstat, mpstattop의 명령 출력 비교

이 연습에서는 다양한 stress 테스트를 실행하여 실습 시스템에서 다양한 로드를 에뮬레이트한 다음 vmstat, mpstattop 명령을 사용하여 다양한 유형의 로드에 대해 보고한 내용을 확인합니다.

테스트를 백그라운드 프로세스로 실행하지만 비교를 위해 추가 터미널 창을 여는 것이 좋습니다.

각 추가 window를 실행하려면 ssh에서 oracle@<IP_ADDRESS_OF_COMPUTE_INSTANCE>으로 lab instance에 로그인해야 합니다. 여기서 <IP_ADDRESS_OF_COMPUTE_INSTANCE>은 Oracle Cloud 콘솔에서 복사된 IP 주소입니다.

  1. stress 도구를 설치합니다.

    1. dnf repolist 명령을 사용하여 ol8_developer_EPEL 저장소의 상태를 확인합니다.

      dnf repolist ol8_developer_EPEL
      
      • 상태가 enabled인 경우 stress 도구 패키지 설치를 진행합니다. 그렇지 않으면 계속해서 저장소를 "사용으로 설정"합니다.

      • dnf conifg-manager 명령을 사용하여 상태가 disabled인 경우 저장소를 사용으로 설정합니다.

        dnf config-manager --enable ol8_developer_EPEL
        
  2. dnf install 명령을 실행하여 stress 도구 패키지를 설치합니다.

    dnf install stress -y
    
  3. stress --dry-run 명령을 실행하여 명령 구문의 예를 확인합니다. 예제의 옵션과 나열된 다른 명령 옵션을 잠시 검토합니다.

    stress --dry-run
    
  4. vmstat 4 4mpstat 4 4 명령을 실행하여 시스템 작업의 Baseline을 확인합니다. 특히 사용자 및 시스템(커널) 프로세스에 할당된 CPU 백분율을 확인합니다. 이 열은 0에 가까워야 합니다. 또한 사용 가능한 메모리 양을 기록합니다.

    vmstat 4 4
    mpstat 4 4
    
  5. stress --cpu 명령을 실행하여 계산 바인딩 프로그램을 에뮬레이트하고 백그라운드에서 명령을 실행합니다. 이 명령은 8개의 컴퓨팅 기반 프로세스를 생성합니다.

    stress --cpu 8 &
    
    • 프롬프트로 돌아가려면 return을 누릅니다.

    • ps -ef 명령을 실행하여 실행 중인 stress 프로세스를 확인합니다. 출력을 grep stress에 연결합니다.

      ps -ef | grep stress
      
  6. vmstat 4 10 명령을 실행하고 CPU 사용률과 연관된 열에 보고된 값을 기록해 둡니다.

    vmstat 4 10
    

    잠시 후 us 열 아래에 stress에 의해 생성된 로드가 반영된 백분율이 표시되어야 합니다.

  7. mpstat 4 10 명령을 실행하여 모든 CPU의 사용률을 평가합니다.

    mpstat 4 10
    
  8. mpstat -P ALL 4 10 명령을 실행하여 각 CPU의 사용률을 평가합니다.

    mpstat -P ALL 4 10
    
  9. top 명령을 실행하여 stress 프로세스를 통해 CPU 사용률을 검사합니다.

    top
    

    몇 분 후 stress 프로세스가 가장 높은 우선 순위로 실행되고 있음을 알 수 있습니다. Ctrl+C를 입력하여 top를 종료합니다.

  10. pkill 명령을 실행하여 stress 프로세스를 종료합니다.

    pkill stress
    
  11. vmstat 4 4mpstat 4 4 명령을 재실행하여 시스템 작업의 Baseline을 확인합니다.

  12. stress 명령을 실행하고 --vm--vm-bytes 옵션을 추가하여 시스템에서 메모리 작업을 생성합니다.

    stress --cpu 8 --vm 8 --vm-bytes 512M &
    
  13. vmstat 4 10, mpstat -P ALL 4 10top를 실행하여 CPU 및 메모리 작업을 평가합니다.

    vmstat 4 10
    mpstat -P ALL 4 10
    top
    
    • Crtl+C를 입력하여 top를 종료합니다.
  14. pkill 명령을 사용하여 stress 프로세스를 종료합니다.

    pkill stress 
    
  15. vmstat 4 4mpstat 4 4 명령을 재실행하여 시스템 작업의 Baseline을 확인합니다.

  16. stress 명령을 실행하고 시스템에서 입력/출력 작업을 생성하는 --io 옵션을 추가합니다.

    stress --cpu 8 --vm 8 --vm-bytes 512M --io 8 &
    
  17. vmstat 4 10, mpstat -P ALL 4 10top를 실행하여 CPU, 메모리, 입력/출력 작업을 평가합니다.

    vmstat 4 10
    mpstat -P ALL 4 10
    top
    
    • Crtl+C를 입력하여 top를 종료합니다.

    • pkill를 사용하여 stress를 종료합니다.

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 찾아보거나 Oracle Learning YouTube channel에서 무료 학습 콘텐츠에 액세스할 수 있습니다. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer로 변경하십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.