2012-11-01 2 views
3

(Linux에서) 고성능 서버 응용 프로그램을 작성 중이며 빠른 핵심 경로를 얻으려고합니다. 나는 메모리 페이징과 내 작업 중에 디스크로 스왑 된 메모리 (밀리 초 단위의 대기 시간)가 걱정된다.많은 RAM이 남아 있다면 메모리 페이징이 발생합니까?

제 질문은 서버에 메모리가 많고 (예 : 16GB) 메모리 사용률이 약 6-10GB로 유지되고 동일한 상자에 다른 프로세스가 없다는 것입니다. 응용 프로그램을 시작한 후 따뜻하게 페이지가 누락되지 않도록 보장 할 수 있습니까?

+1

Linux에 대해 잘 모르지만 Windows가 디스크 캐시에 RAM을 사용하고 프로그램 메모리를 페이지 아웃 할 가능성이 있음을 알고 있습니다. –

+0

이 stackoverflow 게시를 살펴보십시오. http://stackoverflow.com/questions/578137/can-i-tell-linux-not-to-swap-out-a-particular-processes-memory 프로세스를 메모리에 잠그는 방법을 설명합니다. –

+1

아이디어로. 이 메모리 크기를 할당하고이 메모리를 규칙적으로 "사용"(사용)하는 간단한 테스트 프로그램을 작성할 수 있습니다. 이 테스트 프로그램을 오랫동안 실행 한 다음'vmstat'을 실행하고'po' 열을 모니터링하십시오 (페이징 공간으로 페이징 된 페이지). 그래서 당신은 얼마나 많은 "페이지 아웃 (page-out)"이 당신의 상자에서 발생 하는지를 알 수 있습니다. –

답변

1

이것은 보장되지 않습니다. Linux의 기본 동작은 RAM을 사용하여 파일을 캐시하는 경우가 있으며 일부 워크 플로의 성능을 향상시킬 수 있습니다. 즉, 메모리가 모두 사용되지 않더라도 메모리 페이지가 스왑 아웃되는 경우가 있습니다.

mlock/mlockall을 사용하면 프로세스 페이지를 메모리에 잠글 수 있습니다. 자세한 내용은 man 2 mlock을 참조하십시오.

+0

아,하지만 RAM이 남아 있더라도 원래의 질문은 리눅스가 여전히 바꿔 버릴 것입니까? –

+0

내 편집에 응답 –

관련 문제