hdparm 또는 POSIX_FADV_RANDOM을 사용하여 미리 읽기 비활성화

hdparm 또는 POSIX_FADV_RANDOM을 사용하여 미리 읽기 비활성화

Linux 커널 문서에서 POSIX_FADV_RANDOM 조언은 미리 읽기를 비활성화하는 것 같습니다. 그러나 (sudo hdparm -A 0 /dev/sdb)를 사용하여 읽기 헤드를 비활성화하면 성능이 크게 저하됩니다. 또한 read(2)가 512k마다 분할되어 별도의 호출로 작동하는 것으로 나타났습니다(이유는 확실하지 않으며 요청당 최대 섹터일 수 있음).

그렇다면 미리 읽기를 실제로 비활성화하는 옵션은 무엇입니까? POSIX_FADV_RANDOM도 OS 캐싱을 비활성화합니까, 아니면 POSIX_FADV_DONTNEED를 추가해야 합니까?

답변1

POSIX_FADV_RANDOM커널의 파일 시스템 드라이버가 수행하는 미리 읽기를 비활성화합니다. 요청된 것보다 더 많이 읽지 않도록 파일 시스템 계층에 조언합니다. 미리 읽기는 파일 수준에서 수행됩니다. 파일 시스템 계층은 동일한 파일에서 추가 데이터를 가져올 수 있지만 POSIX_FADV_RANDOM.

hdparm -A 0디스크 자체에서 수행되는 미리 읽기가 비활성화되었습니다. 섹터를 읽을 때 내부 캐시에 다음 몇 개의 섹터를 저장해서는 안 된다는 점을 디스크에 조언합니다.

둘 다 미리 읽기를 비활성화하지만 시스템의 다른 계층에 있습니다.

POSIX_FADV_RANDOM프리페칭만 비활성화합니다. POSIX_FADV_DONTNEED캐시하지 않으려면(또는 캐시에서 제거하려면) 지역을 설정하세요 .

관련 정보