단일 프로세스/pid/서비스에 대한 iowait 통계를 저장하는 파일을 찾는 데 필요한 스크립트를 작성 중입니다. 그런 문서가 있나요?데비안 기반배포?
통계 /proc/<pid>/stat
가 없습니다/proc/<pid>/io
기다리다, 매뉴얼 페이지에 따르면. 다른 도구의 출력을 구문 분석할 수 있다는 것을 알고 있습니다.오토프,남자 이름그러나 외부 명령의 stdout을 구문 분석하는 것은 피해야 할 성능 문제입니다.
노트/proc/stat
: 내용과 의미를 이해합니다 . 나는해야한다기다리다하나를 세어보세요단일 프로세스, 전체 CPU 또는 특정 코어에는 적용되지 않습니다.
답변1
iowait
이론적으로는 각 프로세스를 /proc/[pid]/stat
다음에서 가져올 수 있습니다 .공정(5)우리는 읽고:
(42) delayacct_blkio_ticks %llu (since Linux 2.6.18)
Aggregated block I/O delays, measured in clock ticks (centiseconds).
delayacct_blkio_ticks
이것이 실제로 무엇을 의미하는지 모르겠습니다 . 어쨌든, man proc
당신에게 맞는 유일한 것입니다 .
관련 질문이 있는 경우 다음을 확인하세요.proc FS를 사용하여 블록 I/O 대기 시간 측정
또한 /proc/stat
각 CPU 블록 iowait
의 설명을 참고하세요.
- CPU는 I/O가 완료될 때까지 기다리지 않습니다. iowait는 작업이 I/O가 완료될 때까지 기다리는 시간입니다. 완료되지 않은 작업 I/O로 인해 CPU가 유휴 상태가 되면 해당 CPU에 다른 작업이 예약됩니다.
- 멀티 코어 CPU에서는 I/O가 완료되기를 기다리는 작업이 어떤 CPU에서도 실행되지 않으므로 CPU당 iowait를 계산하기 어렵습니다.
- 경우에 따라 이 필드의 값이 줄어들 수 있습니다.
iowait
에서 CPU별 데이터를 얻을 수 있습니다 /proc/stat
. 내 Ubuntu 18.04에는 /proc/stat
다음 섹션이 있습니다.
cpu 2752162 16054 941158 49212025 789607 0 217089 0 0 0
cpu0 1397207 7767 500620 24623046 407078 0 70574 0 0 0
cpu1 1354955 8286 440538 24588978 382529 0 146515 0 0 0
cpu
s 열 옆의 다섯 번째 열은 iowait
값 입니다.내 특별한 경우에는. 사용되는 코어에 따라 열의 개수와 의미가 달라질 수 있습니다.
각 열의 정확한 의미를 얻으려면 설명서를 확인해야 합니다. linux-doc
먼저 Ubuntu에 패키지를 설치합니다.
sudo apt install linux-doc
보세요 man proc
:
man proc
/proc/stat
각 열에는 자세한 설명이 있습니다.
또한 읽어보세요Linux /proc/stat 파일을 읽는 방법값을 계산하는 방법을 알아보세요.
CentOS에서는 kernel-doc
패키지를 설치해야 합니다.
yum install kernel-doc
그런 다음 파일을 읽으십시오.
/usr/share/doc/kernel-doc/Documentation/filesystems/proc.txt