top은 시스템 활동과 실행 중인 프로세스를 반복해서 갱신하는 뷰를 제공합니다. 성능 가설을 세우는 데 유용하지만 바쁜 표본 하나만으로 문제 원인이 증명되지는 않습니다. 여러 갱신 결과를 비교하고 로그 및 작업 부하별 지표와 연결하십시오.
프로세스 활용 · 레슨 1
프로세스 추적: top
top을 사용해 시스템 부하, CPU, 메모리 및 프로세스별 활동을 해석하는 방법을 알아봅니다.
시스템 요약 읽기
일반적인 화면은 요약 줄로 시작하고 그 뒤에 프로세스 표가 이어집니다.
top - 18:06:26 up 6 days, 4:07, 2 users, load average: 0.92, 0.62, 0.59
Tasks: 389 total, 1 running, 387 sleeping, 0 stopped, 1 zombie
%Cpu(s): 1.8 us, 0.4 sy, 0.0 ni, 97.6 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 32099.0 total, 5276.3 free, 7031.2 used, 19791.5 buff/cache
MiB Swap: 32700.0 total, 32661.0 free, 39.0 used
첫 줄에는 현재 시간, 가동 시간, 로그인한 사용자 수 및 1분, 5분, 15분 부하 평균이 있습니다. 작업 줄은 프로세스 상태를 셉니다. 부하 평균은 직접적인 CPU 백분율이 아닙니다. 리눅스에서는 실행 가능한 작업과 인터럽트할 수 없는 대기 상태의 작업을 반영하므로 CPU 수, 입출력 활동 및 지연과 함께 해석하십시오.
top의 세 부하 평균 값은 무엇을 나타냅니까?
CPU 시간 해석하기
일반적인 CPU 필드는 다음과 같습니다.
us: 사용자 공간 실행 시간sy: 커널 실행 시간ni: nice 값이 적용된 작업의 사용자 공간 시간id: 유휴 시간wa: 처리되지 않은 입출력 요청이 있는 동안의 유휴 시간hi및si: 하드웨어 및 소프트웨어 인터럽트 처리st: 하이퍼바이저가 다른 게스트에 사용한 가상 CPU 시간
wa 값이 높으면 입출력 대기 가설을 뒷받침할 수 있지만 어느 장치인지 식별하거나 저장 장치가 유일한 병목임을 증명하지는 않습니다. 결론을 내리기 전에 장치 지연과 애플리케이션 동작을 검사하십시오.
wa CPU 필드가 보고하는 것은 무엇입니까?
프로세스 표 읽기
중요한 열에는 일반적으로 다음 항목이 있습니다.
PID,USER및COMMAND: 식별 정보와 소유권S: 실행 중(R), 대기(S), 인터럽트 불가 대기(D), 중지(T), 좀비(Z) 같은 상태%CPU및%MEM: 표본 CPU 활동과 물리 메모리 점유율TIME+: 누적 CPU 시간VIRT: 작업과 연결된 전체 가상 주소 공간RES: 현재 작업에 귀속된 상주 비스왑 물리 메모리SHR: 다른 프로세스와 공유될 수 있는 상주 메모리
VIRT는 소비한 물리 RAM의 양이 아닙니다. 매핑된 파일, 공유 라이브러리, 예약된 주소 공간 및 스왑된 페이지를 포함할 수 있습니다. RES도 공유 페이지 때문에 귀속 방식이 복잡하므로 신중하게 해석해야 합니다.
프로세스의 현재 상주 물리 메모리에 더 가까운 필드는 무엇입니까?
집중 및 정렬
알려진 PID를 직접 모니터링합니다.
$ top -p 1234,5678
일반적인 procps-ng 구현에서 top 안의 P는 CPU 순 정렬, M은 메모리 순 정렬, 1은 CPU별 줄 전환, q는 종료입니다. 구현마다 키와 필드가 다를 수 있으므로 h를 눌러 로컬 대화형 도움말을 확인하십시오.
작업하기 전에 PID, 명령, 타임스탬프 및 여러 표본을 기록하십시오. 잠깐 목록 위로 올라온 프로세스는 정상일 수 있으며 종료하면 데이터 손실이나 서비스 중단이 생길 수 있습니다.
화면을 PID 1234로 제한하는 명령은 무엇입니까?
레슨 완료
프로세스 추적: top 완료
이제 top을 사용해 시스템 성능 가설을 세우고 검증할 수 있습니다.
부하 평균을 CPU 백분율이 아니라 시간 구간별 부하로 읽습니다.
여러 표본에서 CPU 범주를 비교합니다.
가상 주소 공간과 상주 메모리를 구분합니다.
알려진 PID에 집중하고 작업 전에 증거를 검증합니다.