Linux에서 프로세스가 작성한 추가 메타데이터의 크기를 확인하는 방법은 무엇입니까?

Linux에서 프로세스가 작성한 추가 메타데이터의 크기를 확인하는 방법은 무엇입니까?

저는 현재 fsync에서 디스크에 얼마나 많은 데이터가 기록되는지 확인하기 위해 Linux에서 fsync와 fdatasync를 비교하고 있습니다.

나는 iotops를 사용하고 /proc//io 파일을 검사하여 쓰기가 실행된 것보다 더 많은 데이터가 기록되었음을 표시하는지 확인했습니다.

8KB 청크를 쓰고 fsync를 사용하여 플러시하고 1000번 반복했습니다. 따라서 프로세스에서 쓴 총 데이터는 8192,000바이트 + 파일의 메타데이터가 되어야 하며 새로 고침(fsync) 중에 업데이트되어야 합니다.

그러나 위의 두 가지 방법(iotops 및 /proc/pid/io)을 사용하면 작성된 데이터의 출력으로 8192000을 얻습니다. 이는 파일에 작성된 메타데이터의 양을 고려하지 않습니다.

이 프로세스로 작성된 메타데이터의 양을 측정하는 방법을 알려주실 수 있는 분 계신가요?

답변1

/sys/block/{장치 이름}/stat 파일에는 작성된 바이트에 대한 통계가 포함되어 있습니다. 당신은 그것을 읽고 싶을 것입니다.

파일 형식은 매우 간단합니다. 에 기록되어 있어요https://www.kernel.org/doc/Documentation/block/stat.txt.

또한 결과가 정확할 수도 있습니다! 아무것도 없다멈추다fdatasync는 가능한 경우 성능 저하 없이 메타데이터를 동기화할 수도 있으며 작은 파일의 데이터 inode는 특정 파일 및 파일 시스템에 적합할 수 있으므로 어쨌든 차이는 없습니다.

또한 CoW 파일 시스템에서는 메타데이터를 수정하지 않고는 데이터를 쓸 수 없다는 점에 유의하세요. 이것이 이미 fdatasync의 일부인지는 확실하지 않습니다.

관련 정보