베어 블록 장치에 대한 OS 수준 캐시가 있습니까? 그렇다면 어떻게 우회할 수 있나요?

베어 블록 장치에 대한 OS 수준 캐시가 있습니까? 그렇다면 어떻게 우회할 수 있나요?

블록 장치(예: /dev/sda1)에 직접 읽고 쓰는 경우 Linux에 OS 수준 캐싱이 포함됩니까? 그렇다면 어떻게 우회할 수 있나요? O_DIRECT충분히 열려 있나요?

저는 제가 가지고 있는 SMR(Shingled Magnetic Recording) 드라이브의 동작을 특성화하기 위해 간단한 벤치마크 스크립트를 작성하고 있습니다. 따라서 드라이브 수준 캐싱이나 재정렬, 즉 OS가 수행하는 작업을 우회하고 싶지 않습니다.

관련 용어를 검색하면 이 특정 문제를 해결하지 못하는 많은 결과가 나왔습니다. 하지만 Solaris와 FreeBSD 모두 디스크 블록 장치와 문자 장치가 있고 블록 장치가 버퍼링된다는 사실을 알게 되었습니다. 내 Linux에서는 디스크의 블록 장치만 표시됩니다.

답변1

블록 장치(예: /dev/sda1)를 직접 읽고 쓰는 경우 Linux에 OS 수준 캐싱이 포함됩니까?

Linux의 경우 그렇습니다. 물론 그렇습니다.

그렇다면 어떻게 우회합니까? O_DIRECT로 충분히 열 수 있습니까?

이것은 확실히 Linux의 경우입니다.

나는 다른 UNIX에 대해 아무것도 모르지만 대부분이 여기에도 적용될 것이라고 생각합니다.

관련 정보