Thursday, March 27, 2008

madvice()

느린 디스크 접근을 보완하기 위해 커널은 여러 매커니즘을 사용한다. mmap된 영역을 어떻게 사용할 것인지에 대해 커널에 미리 알려주면 이러한 매커니즘을 통해 성능을 향상하는데 큰도움이 된다. 이 때 사용하는 함수로 madvice()가 있다.

#include <sys/mman.h>

int madvice (void *addr, size_t len, int advice);

len에 0을 주면 addr로 맵핑된 모든 영역에 대해 적용되며 사용가능한 advice로 flag에 설정하는 값은 아래와 같다. (cf. read ahead window)

  • MADV_NORMAL : no specific advice

  • MADV_RANDOM : will be read random (read ahead - turned off)

  • MADV_SEQUENTIAL : read ahead will be maximized

  • MADV_WILLNEED : the pages will be cached

  • MADV_DONTNEED : the pages will be freed


비슷하게 posix_fadvise도 있는데, 이건 따로...

No comments:

Post a Comment