할당받은 메모리가 즉시 실제 공간이 할당되도록 하거나 할당된 공간이 swapd에 의해 디스크로 page out 되는 것을 막는 방법이 있다.
http://www.gnu.org/software/libc/manual/html_node/Locking-Pages.html#Locking-Pages
이것을 사용해서 얻을 수 있는 가장 큰 이점은 속도이다. Page out 자체도 상당한 부하가 있고, 또 page out된 메모리에 접근해서 다시 disk I/O가 생긴다면 이것 역시 부하가 상당하다. 따라서 page out을 금지함으로서 이런 속도 저하를 막을 수 있다.
이 방법은 POSIX 표준에 정의되어 있다. API는 지정된 메모리 영역만 locking 하는 방법과 프로세스의 전체 메모리 영역을 locking 하는 방법이 있다.
그리고 RLIMIT_MEMLOCK 값에 의해 locking 할 수 있는 최대 메모리의 양이 제한되기 때문에 사전에 적절하게 늘려주는게 필요하다. 또한 시스템에 미치는 파급 효과가 크기 때문에 superuser만 이 기능을 사용할 수 있다.
사용시 주의할 점은 프로세스가 많은 메모리를 locking 하고 있으면 그만큼 가용 메모리가 줄어든다. 특히 page out이 금지되어 있기 때문에 실제 가용 메모리가 부족한 경우 다른 프로세스는 메모리 할당에 실패할 수 있고, 전체적으로 시스템이 많이 느려질 수 있다.

comments
comments rss (+댓글 쓰러가기)