NFS 성능 향상
To enable uncached I/O, follow this procedure:
Become root
Start your favorite editor on /etc/modules.conf
Add this line anywhere: “options nfs nfs_uncached_io=1”
Uncached I/O will take effect after you reboot your client. Only mount points that use the “noac” mount option will be effected by this change.
NFS클라이언트에서 nfs모듈을 올릴때 위와같이 옵션을 주고, fstab에서 마운트 할때 noac 옵션을 사용하면 된다는것 같군요… 그냥 noac만을 사용하면 write가 엄청…. 느려지더군요. 같이 사용하면 어떤지는 이번주에 테스트해야합니다…. ^^
Direct IO 패치가 되어있다는 글이 있길래 커널 2.6.7 소스를 찾아봤지만, nfs_uncached_io=1 옵션은 커널 2.4.x에 적용되는 예전 옵션 같더군요.
그냥 make menuconfig에서 NFS_DIRECTIO를 체크하면 되는 것으로 생각됩니다.
http://www.netapp.com/tech_library/3183.html
이 문서 마지막 부분을 잘 보면 O_DIRECT와 uncached IO를 구분지어 놓은 내용이 있는데, O_DIRECT는 파일 한개 한개에 대해 적용되는 것이고, uncached I/O는 nfs마운트된 파일 시스템 전체에 direct i/o를 하는 것인데,
RHEL AS 3.0에는 O_DIRECT가 있고, RHEL 2.1에는 uncached I/O가 되어있다고 써있습니다.
그런데, fs/nfs/direct.c 소스를 보면 위 문서를 제공하는 netapp회사에서(<cel@netapp.com>)만든 것임을 알 수 있고, direct.c의 설명 문구에는 uncached I/O에 관한 내용입니다. 즉, NFS_DIRECTIO를 체크하면 uncached I/O가 된다는 뜻이겠죠. (31 Mar 2004 날짜로 최신 업데이트) 그러나 nfs_uncached_io 옵션은 없습니다.
정리하면 최신 2.6.7 커널에는 nfs_uncached_io 옵션 대신에 그냥 커널 옵션 NFS_DIRECTIO를 선택하면 uncached I/O를 쓸 수 있게 된다는 것이고, MyCluster님의 위 설명대로 “noac”옵션을 줘서 nfs 마운트하면 비로소 uncached I/O가 활성화 되는 것 같습니다