Thursday, March 27, 2008

posix_fadvise(), readahead() - Advice for File I/O

File I/O 에 대해서는 posix_fadvise()를 통해 r/w 매커니즘을 효율적으로 사용하도록 커널에 hint를 줄 수 있다.

#include <fcntl.h>

int posix_fadvice (int fd, off_t offset, off_t len, int advice);

대부분 madvise()의 flag과 비슷하나 몇가지가 살짝 다른데,

  • POSIX_FADV_NORMAL

  • POSIX_FADV_RANDOM

  • POSIX_FADV_SEQUENTIAL : from low to high address

  • POSIX_FADV_WILLNEED

  • POSIX_FADV_NOREUSE : 한번만 쓰인다는 얘긴데, 지금은 WILLNEED와 동일하게 동작한다.

  • POSIX_FADV_DONTNEED


이 함수는 커널 2.6이후에 도입되었고 사실 리눅스에서는 그전에 readahead()로 같은 기능을 제공하고 있었다(이 함수는 POSIX_FADV_WILLNEED와 같은 기능을 한다).

#include <fcntl.h>

size_t readahead(int fd, off64_t offset, ssize_t count);

stream video 같은 경우에는 한번 display한 데이터는 캐시가 안되도 되기 때문에 POSIX_FADV_DONTNEED를 주면 좋다.

No comments:

Post a Comment