특정 디렉터리의 I/O 스트림(지정된 기간 동안 읽고 쓴 바이트 수)을 모니터링하는 데 문제가 있습니다.
iostat
, inotifywait
및 을 사용하려고 시도했지만 inotifywatch
불행히도 디렉터리의 활동(열기, 닫기, 수정 등)만 측정하고 읽고 쓴 바이트에 대한 정보는 제공하지 않습니다.
답변1
한 가지 옵션은 시스템을 사용하는 것입니다 audit
. 그것은 다음과 같습니다:
sudo auditctl -a exit,always -F dir=/the/directory -p rw
그런 다음 audit.log
I/O 시스템 호출을 분석합니다.
답변2
내가 아는 한, 이를 수행할 수 있는 표준 도구는 없습니다. 그러나 나는 이를 달성하는 여러 가지 방법을 생각할 수 있으며 각각에는 단점이 있습니다.
어떤 프로세스가 파일/디렉토리에 액세스할 것인지 알고 프로세스가 다른 I/O를 거의 또는 전혀 수행하지 않는 것으로 판단되면 /(모든 I/O)를 확인하여 /proc/PID/io
읽거나 쓴 바이트 수를 구문 분석하고 확인할 수 있습니다. 또는 / (디스크 I/O) 또는 심지어 / (read()/write()와 같은 시스템 호출 수).rchar
wchar
read_bytes
write_bytes
syscr
syscw
어떤 프로세스가 파일/디렉토리에 액세스할지 모르지만(그러나 이러한 프로세스가 다른 I/O를 거의 또는 전혀 수행하지 않는 것으로 확신하는 경우) 이 inotify
기능을 사용하여 위치를 모니터링하고 PID를 확인한 다음 다음을 수행해야 합니다. 이전 단락 중간에 설명된 메커니즘.
과정이 괜찮다면하다다른 I/O는 약간 더 복잡해집니다. strace
파일/디렉터리를 가리키는 모든 파일 설명자에 대한 모든 읽기/쓰기 호출에 대한 오프셋을 계산 해야 합니다 .
이러한 모든 솔루션은 단일 바이트까지 정확하지는 않지만 좋은 추정치를 제공할 수 있습니다.