2010-07-12 4 views
1

프로세스가 사용할 수있는 가상 메모리의 양을 제한하지 않고 사용할 수있는 실제 메모리의 양을 제한하고 싶습니다. 나는 메모리 압력 하에서 다양한 알고리즘의 동작을 측정하기 위해이 작업을 수행하고 있으며, 사용 가능한 많은 양의 실제 메모리를 사용하여 성능을 테스트해야한다. 그래서 나는 많은 모호한 크기의 메모리를 필요로한다. 또는 어떤 방식 으로든 프로세스의 상주 메모리를 지원하는 운영 체제가 필요합니다.상주 메모리 사용 제한

불행히도 Linux는 setrlimit(RLIMIT_RSS, ...)을 존중하지 않으며 OSX도 준수하지 않습니다. [1] 이 작업을 수행 할 수있는 운영 체제를 추천 해 주시겠습니까? OSX가 아닌 모든 BSD? Solaris에서이 작업을 수행 할 수있는 메커니즘이 있습니까? 어떤 종류의 Windows에서이 작업을 수행 할 수 있습니까?


[1] Linux는 요청을 완전히 무시하고 OSX는이를 사용하여 실제 메모리가 모두 소모되었을 때 먼저 교체 할 대상을 결정합니다. 둘 다 메모리의 X Megs 만 사용할 수있는 경우 알고리즘의 동작을 분석하는 데 도움이되지 않습니다. Linux는 커널에서이 작업을 수행 할 수있는 메커니즘이 없으므로 다른 사람이 커널 포크를 사용하도록 설정하지 않으면 완전히 완전히 종료됩니다. 솔라리스에는 setrlimit()에 대한 옵션조차 없지만, 내가 알지 못하는 또 다른 방법이있을 수 있습니다.

+0

아마도 가상화가 여기에 대한 답변입니까? –

답변

0

알아 냈어. 그래서, 내가 알 수있는 유닉스로는 이것을 거의 할 수 없다.

따라서 할 일은 원하는만큼의 메모리가있는 가상화 된 OS를 실행하는 것입니다. 그런 다음 가상 OS가 스왑으로 구동되지만 주 OS는 정상적으로 윙윙 거릴 것입니다. 심지어 벽 시계 시간을 측정하기보다는 페이지 폴트를 계산하기를 원한다면 가상 머신의 스왑 디스크에 가상화되지 않은 디스크의 램 디스크를 만들 수 있습니다. 따라서 페이지 폴트를 해결할 시간이 거의 없습니다. 가상 머신!