단일 프로세스의 iowait 통계(파일)는 어디서 찾을 수 있나요?

단일 프로세스의 iowait 통계(파일)는 어디서 찾을 수 있나요?

단일 프로세스/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의 설명을 참고하세요.

  1. CPU는 I/O가 완료될 때까지 기다리지 않습니다. iowait는 작업이 I/O가 완료될 때까지 기다리는 시간입니다. 완료되지 않은 작업 I/O로 인해 CPU가 유휴 상태가 되면 해당 CPU에 다른 작업이 예약됩니다.
  2. 멀티 코어 CPU에서는 I/O가 완료되기를 기다리는 작업이 어떤 CPU에서도 실행되지 않으므로 CPU당 iowait를 계산하기 어렵습니다.
  3. 경우에 따라 이 필드의 값이 줄어들 수 있습니다.

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

cpus 열 옆의 다섯 번째 열은 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

관련 정보