htop은 루트 없이 현재 사용자 프로세스의 IO 읽기/쓰기 데이터를 어디에서 수집합니까?

htop은 루트 없이 현재 사용자 프로세스의 IO 읽기/쓰기 데이터를 어디에서 수집합니까?

htopIO_RATE IO_READ_RATE IO_WRITE_RATE와 관련된 단일 프로세스의 출력을 캡처하는 방법을 찾을 수 없습니다 .

프로세스가 제대로 실행되지 않고 있는지 확인하여 자동으로 다시 시작하려면 이 정보(전체 누적 IO가 아닌 IO의 마지막 몇 초(또는 단 1초))가 필요합니다.

루트가 필요하기 때문에 사용할 수 없습니다 iotop. 이는 분명히 불필요하기 때문에 작업 흐름을 복잡하게 만듭니다.

나는 가능한 모든 것을 시도했지만 /proc/$PID/...바이트 IO에 적합한 것을 찾지 못했습니다. 존재하지 않는 것이 아니라 단지 찾을 수 없을 뿐입니다.

htop따라서 파이프를 통해 출력을 얻는 것도 해결 방법으로 충분할 수 있지만 그것은 내가 요구하는 것이 아닙니다.

이미 %CPU에 대한 출력을 얻을 수 있지만 top충분하지 않으며 top.

아래의 다른 모든 답변은 iotop(아니요) 또는 htop(출력을 캡처할 수 없음) 또는 도움이 되지 않는 기타 응용 프로그램에 관한 것이므로 다음 질문을 하기로 결정했습니다.
실행 중인 사용자의 실행 파일이 읽거나 쓴 IO를 모니터링합니다.
https://stackoverflow.com/questions/469159/an-htop-like-tool-to-display-disk-activity-in-linux( atop그게 가능하다면, 아직도 어떻게 되는지 이해가 안 되네요...)

답변1

에 따르면 man proc귀하가 찾고 있는 정보는 다음 위치에 있어야 합니다 /proc/(pid)/io.

/proc/[pid]/io (커널 2.6.20부터) 이 파일에는 프로세스의 I/O 통계가 포함되어 있습니다. 예: /proc/[pid]/io (커널 2.6.20부터)...

물론 이 더미 파일은 구성 옵션을 기반으로 커널이 생성한 추가 통계에 의존하기 때문에 찾지 못할 가능성이 높습니다.

CONFIG_TASK_IO_ACCOUNTING(작업별 스토리지 I/O 통계 활성화)

따라서 이 옵션이 설정되었는지 확인한 후 커널을 다시 빌드해야 합니다. 위의 링크를 읽으면 다른 것을 선택해야 할 가능성이 높습니다. 기타 구성 옵션. CONFIG_TASK_XACCT(taskstats를 통해 확장 계정 활성화) 특히 기본값은 no이고 CONFIG_TASK_IO_ACCOUNTING이 이에 의존하기 때문입니다.


그런데 루트와 pid 소유자를 제외한 모든 사람이 더미 파일을 읽을 수 있다고 보장할 수 없습니다. 얼마 전에 이 문제에 대해 많은 논의가 있었으며 이는 커널 버전에 따라 다를 가능성이 높습니다.


참고: 이러한 옵션의 필요성은 /usr/src/linux/kernel/tsacct.c 코드를 읽으면 추론할 수 있습니다.

#ifdef CONFIG_TASK_XACCT
...
#ifdef CONFIG_TASK_IO_ACCOUNTING
    stats->read_bytes   = p->ioac.read_bytes & KB_MASK;
    stats->write_bytes  = p->ioac.write_bytes & KB_MASK;
    stats->cancelled_write_bytes = p->ioac.cancelled_write_bytes & KB_MASK;
...

관련 정보