2014-12-14 2 views
0

가능한 한 정확하게 디스크에 쓰기 시간을 정하는 방법을 결정하려고합니다.c - 디스크에 직접 쓰기, 페이지 캐시 무시?

write() 함수를 호출하면 파일을 페이지 캐시에 먼저 기록한 다음 나중에 시스템이 자동으로 디스크를 디스크로 플러시합니다 (필자의 이해가 정확하다면).

페이지 캐시를 우회하는 방법이 있습니까? 또는 프로세스가 페이지 캐시에 쓰고 페이지 캐시를 비울 수도 있습니다 (단, 작성된 특정 데이터를 플러시하는 시간은 얼마나 걸릴까요?)

답변

1

Linux의 경우 디스크 장치를 다음과 같이 열 수 있습니다. 페이지 캐시를 우회하는 O_DIRECT 플래그.

+0

NB :'O_DIRECT'는 수행 할 수있는 쓰기 작업에 대해 여러 가지 정렬 제한을 설정합니다. 버퍼, 파일 핸들 오프셋 또는 카운트가 제대로 정렬되지 않으면 쓰기 작업에서'EINVAL' 오류가 발생합니다. – duskwuff

+0

@ duskwuff이 맞습니다. posix_memalign 호출을 사용하여이 목적을 위해 정렬 된 버퍼를 얻을 수 있습니다. – stark

관련 문제