리눅스 프로세스 스왑 아웃 방지


3

누구든지 포크 프로세스의 모든 메모리가 디스크로 스왑 아웃되는 것을 막는 리눅스 유틸리티를 알고 있습니까? 나는 'mlockall'콜을 보았지만 앱을 해킹하는 것은 과잉처럼 들립니다.

이것을 필요로하는 이유는 Linux netbook의 VirtualBox에서 Windows XP를 실행하고 있기 때문에 기본적으로 두 가지 수준의 스와핑이 진행되고 있다는 것입니다.

답변:


0

단일 프로세스 mlock와 그 친척이 유일한 방법이라고 생각합니다.

시스템 전체에서 "스왑"을 통해 더 나은 성능을 얻을 수 있습니다. 시도 sysctl vm.swappiness값을 읽어와 sysctl -w vm.swappiness=N로 설정하는 N곳은 현재보다 약간 작은 수입니다. (극한을 원하면 커널에게 스와핑보다 캐시 된 페이지를 항상 제거해야한다고 알리려면 0을 시도하십시오.)


이것은 우수합니다-내가 원하는 정확한 효과를 가진 것으로 보입니다. 많은 감사합니다. VM이 메모리의 40 % 이상을 제공한다는 것은 머신이 시작될 때마다 전 세계적으로 스와핑이 시작된다는 것을 의미합니다.

2

실제로 "스왑"하는 경우 (즉, 디스크에서 실제로 사용량이 많은 경우) 시스템에 더 많은 메모리가 필요합니다.

RAM이 충분하면 더 많은 물리적 램을 확보하기 위해 일부 '휴식'프로세스를 페이징하는 것 외에는 OS가 스왑되지 않습니다.

직접 질문에 대답하지는 않지만 zram / 캐시 가능 커널을 설치하면 약간의 이점을 얻을 수 있습니다.

이 방법으로 시스템은 여전히 ​​페이지 아웃 ( "스왑")되지만 램을 만드는 데 대부분의 작업을 수행하며 압축 덕분에 실제 램 (활성 메모리 또는 zcache)에 보관 된 메모리 페이지의 양이 일반적인 비 압축 램에서 얻는 것.


단일 수준의 스와핑에 만족합니다. 즉, WinXP는 디스크 또는 Linux 스왑으로 스왑합니다. 내가 원하지 않는 것은 리눅스가 XP가 메모리에 있다고 생각하는 부분을 스왑 아웃하고 XP가 동일한 메모리를 스왑 아웃하는 것입니다 (= 디스크 스 래싱). 어쩌면 나는이 일에 대해 편집증 일지 모르지만 스왑 중 하나만 활성화하면 디스크가 덜 시끄럽게 들립니다 ... 기본적으로 XP는 스왑을 처리하고 Linux는 모든 것을 처리하게되어 기쁩니다.

1
XP가 디스크로 스왑하면 리눅스는 더 이상 메모리에 있지 않기 때문에 동일한 페이지를 "더블 스왑"할 수 없습니다 (VM조차도 아닙니다). 리눅스가 너무 많이 스왑하면 메모리가 부족하고 VM과 스왑하려는 다른 것을 스왑합니다. VM에 할당 된 RAM의 양을 줄이면 Linux가 스왑을 줄이고 VM 워크로드에 대한 모든 스와핑이 VM OS 자체에서 관리됩니다.
Luke404

@ Luke404 : Linux는 디스크 페이지를 RAM에 캐시합니다 (실제로 적극적으로). 따라서 VM이 "디스크"로 "스왑"할 때 "같은 페이지가 더 이상 메모리에 없다"는 것은 사실이 아닙니다.
Nemo

@Nemo : 문장을 명확히하려고 노력하겠습니다. XP os가 페이지를 교체하면 해당 페이지는 더 이상 XP의 실제 메모리에 없습니다. XP의 실제 메모리는 실제로 Linux 호스트의 VirtualBox 프로세스 메모리이므로 XP에서 이미 스왑 된 페이지는 Linux 호스트에 관한 한 "메모리"가 아닙니다.
Luke404

1
@ Luke404 : Linux가 페이지를 먼저 스왑 아웃 할 때 이중 스와핑이 발생합니다. 다음을 고려하십시오. Linux는 게스트가 사용하는 페이지를 교환합니다. 손님은 이제 페이지도 교체하기로 결정합니다. 게스트가 디스크에 페이지를 쓸 수 있도록 Linux가 디스크에서 페이지를 먼저 읽어야합니다.
davidg

0

시스템이 스왑 메모리를 사용하기 시작하는 지점을 제어 할 수도 있습니다. 컴퓨터의 현재 값이 무엇인지 알려줍니다.

고양이 / proc / sys / vm / swappiness

대략 기본적으로 리눅스는 60이었습니다. 대략적으로 말하면, RAM의 40 % 만 사용하면 컴퓨터가 스왑 파티션을 사용하기 시작합니다. 이것은 오래된 컴퓨터의 안전한 기본값이었습니다. 그러나 RAM이 충분하면 스왑을 줄일 수 있습니다.

즉석에서:

sudo sysctl vm.swappiness = 10

sudo swapoff -a

sudo swapon -a

또는 vm.swappiness = 10을 /etc/sysctl.conf(Debian 용)에 추가하여 영구적으로.


Fedora 15의 표준 설치는에서 교환 할 수 60있습니다. 이것은 램이 3.5GB 인 새로운 머신입니다.
wallyk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.