RAM / 스왑 사용을 제어하는 ​​방법


18

응용 프로그램 수준에서 RAM / 스왑 사용 정책을 제어하는 ​​방법 (응용 프로그램)이 있습니까?

나는 항상 사용하는 일부 응용 프로그램이 있고 RAM에 항상 머무르기를 원하며 아주 드물게 사용하는 응용 프로그램도 있으며 필요할 때 교환하기 위해 던져 질 수 있습니다. 기본 구성된 창에서 최상의 성능을 제공해야하지만 더 많은 것을 얻을 수 있는지 확인하고 싶습니다. :).

나는 윈도우 7을 사용합니다.


2
+1. XP에서 작동하는 방법에 관심이 있습니다.
Xavierjazz

답변:


9

: 프로그램에 VirtualLock 함수를 호출하십시오 .

프로세스가 잠근 페이지는 프로세스가 잠금을 해제하거나 종료 될 때까지 실제 메모리에 남아 있습니다. 이러한 페이지는 잠겨있는 동안 페이지 파일에 기록되지 않아야합니다.

SetProcessWorkingSetSize 함수도 도움이 될 수 있다고 생각합니다 .


내가 생각하는 사람들에게는 이것이 유용 것이라고 제안 하는 이단자입니다 .

메모리에서 페이지를 잠그는 데는 유효한 이유가있을 수 있습니다. 유효한 이유는 사용자가 CD 버너를 실행 중이고 CD 버너가 지속적으로 페이징 아웃되어 버퍼 언더런이 발생하여 코스터를 생성하기 때문일 수 있습니다. 이 경우 메모리 버퍼를 잠그면 페이징되지 않도록 할 수 있습니다. 그래도 나머지 컴퓨터가 크롤링 속도를 늦추더라도 사용자에게 코스터를 제공하는 것보다 낫기 때문입니다. 다른 유효한 이유도있을 수 있습니다. 제 요점은 일반적으로 메모리에 페이지를 잠그는 것이 권장되지 않지만 유효한 상황이 여전히 존재하며 아이디어를 죽이는 것이 여기 OP에 도움이 될 것이라고 생각하지 않습니다.


업데이트 : Process HackerReduce Working Set메뉴 옵션을 살펴보십시오 .


이 기사에서이 비트를 인용하면 "페이지를 메모리에 잠그면 사용 가능한 RAM이 줄어들고 시스템이 다른 중요한 페이지 를 페이징 파일 로 스왑하도록하여 시스템 성능이 저하 될 수 있습니다 . 각 Windows 버전에는 프로세스가 잠글 수있는 최대 페이지 수에 대한 제한입니다.이 성능 제한은 심각한 성능 저하를 피하기 위해 의도적으로 작습니다. " (내 강조)

1
@ Randolph : 나는 그것을 추천 하지 않았다. 나는 다른 사람들이 생각하는 것과 달리 가능 하다고 언급했다 . 나는 개인적으로 OP에게 "당신의 아이디어를 죽이자"라고 말하는 것을 싫어합니다. 저는 OP가 이것을해서는 안된다는 사실을 이해했지만 OP가 여전히 원한다면 어떻게 해야할지 알 권리가 있다고 생각합니다. ( 이러한 기능을 만든 이유가 있으며 OP가 해당 기능을 사용해야하는지 여부를 판단하는 사람은 아닙니다.)
Mehrdad

Windows에는 이전 버전과의 호환성을 위해 남겨진 많은 코드가 있습니다. 그것을 가질 이유가 있다면, 그럴 것입니다. 어떤 상황에서도 사용해서는 안되지만 호환성을 위해 남겨둔 SQL Server의 축소 기능과 비교할 수 있습니다. Windows 7은 적절한 메모리 관리 기능을 갖춘 최신 OS이며 페이지 파일을 삭제하거나 프로그램이 "규칙"외부의 메모리에 남아 있지 않아야합니다. 연습이 매우 열악하고 시스템이 불안정하거나 사용할 수 없게 될 수 있습니다.

1
@Randolph : (비유를 버렸다고 생각합니다. :]) 다른 프로세스를 열고 작은 프로그램 (~ 10 줄을 넘지 않아야 함)을 만들고 호출하십시오 SetProcessWorkingSetSize. 한 가지 방법입니다. 물론 개발자가 아니기 때문에 그 의미를 모른다면 할 수있는 일은 많지 않습니다. 그러나 여전히 가능하고 불가능하다고 말하는 것은 여전히 ​​옳지 않습니다. OP보다 더 많은 지식이 필요합니다.
Mehrdad

1
@Randolph, 당신은 (각 프로세스에서 SetProcessWorkingSetSize를 호출하여) 실행중인 앱이 모두 페이지 파일로 이동하도록하는 다양한 프리웨어 앱을 다운로드 할 수 있습니다.
Chris O

5

내가 찾은 유일한 방법은 페이지 파일을 비활성화하는 것입니다. 그러나 완벽한 해결책은 아닙니다. RAM 한도에 가까워지면 오류 메시지가 표시되고 충돌 덤프가 제대로 저장되지 않을 수 있으므로 문제 해결이 필요한 경우 다시 켜십시오. 그 외에, 나는 페이지 파일없이 Win7을 장애없이 몇 달 동안 사용 해 왔습니다.

내 경험 : 나는 피아노 소프트웨어 (1GB RAM 사용)에 대해이 문제가 있었는데 잠시 동안 사용하지 않으면 스왑에 던져 질 것입니다. 몇 시간 후에 피아노 건반을 연주하면 스왑이 사운드를 재생할 수있을만큼 빨리 다시로드되지 않기 때문에 결함이 생길 수 있습니다. (그런 다음 다시 키를 넣기 위해 모든 팔에 팔을 대고있었습니다!)

RAM이 문제가되는 경우 추가 구매를 권장합니다 (예 : Windows 7 x64의 경우 8-12GB). RAM을 의식적으로, RAM을 많이 갖는 것은 신의 선물입니다.

그러나 이전에는 SSD 드라이브를 가져와 스왑을 고려해야합니다. 스왑 복구를 크게 가속화하고 다른 많은 시스템 이점을 제공합니다. RAM은 사용하지 않을 때 이점을 제공하지 않습니다.


3
하다. 아니. 지우다. 그만큼. 페이지. 파일. 이제까지.

7
나는 가지고있다. 되었습니다. 사용 중입니다. Win7. 와. 번호 페이지 파일 에 대한. 달. 없이. A. 히치.
mtone

1
또한 페이지 파일없이 Win7을 항상 사용하지만 현재 작업에 충분하지 않은 것 같습니다. (
Darqer

3
@Randolph : MS는 고객이 항상 컴퓨터 전문가가 아니라는 것을 알고 있기 때문에 자신이 말하는 것을 알고 있습니다. 그러나 실제로 페이지 파일의 기능과 동작을 정확히 알고있는 사람들에게는 필요없는 실습으로 강제 할 이유가 없습니다.
Mehrdad

2
@Randolph : 안전 벨트없이 제한 속도를 초과하여 운전하면 다른 사람의 보험료 인상은 말할 것도없이 사망하고 다른 사람을 죽일 수 있습니다. 컴퓨터의 메모리가 페이지 밖으로 나갈 때 발생할 수있는 최악의 상황은 상황에 따라 약간의 시간을 잃는다는 것입니다. 여기 비유에 약간의 문제 (읽기 : 많은)가 잘못 보입니까? 또한 Linux / Unix를 사용해 보셨습니까? Windows와 달리 그들이 당신에게 매달릴 수있는 충분한 밧줄을주는 것을 보신 적이 있습니까? 사람들은 여전히 ​​그것들을 사용합니다. 영향을받는 것과 같은 것입니까?
Mehrdad

2

페이지 파일 사용은 많은 요소에 따라 다릅니다. 많은 프로그램을 사용하고 동시에 모든 프로그램에 충분한 RAM이없는 경우 일부 또는 전부가 페이지 파일로 교체 될 수 있습니다.

4GB의 RAM이 있고 4GB의 일부를 차단하는 비디오 카드 및 기타 리소스 사용자로 인해 약 3GB의 RAM을 사용할 수 있다고 가정하면 메모리를 많이 차지하지 않는 몇 가지 프로그램 만 사용합니다. 스왑 파일이 필요하지 않습니다. 그러나 Windows Vista와 7은 프로그램을 디스크로 바꾸는 데 악명이 높습니다.

예전에는 Windows 7의 스왑 성을 감소시키는 설정을 사용 했었습니다 (스왑은 Linux 용어이지만 Windows에도 적용됨). Windows 스와핑 공격성을 길들이기위한 레지스트리 설정이 있기 때문에 마이크로 소프트가 잘 알고 있지만 숨겨진 방식),하지만 더 이상 찾을 수없는 것 같습니다. 그것을 찾는 것은 내가 여기서 끝내는 방법입니다. 내가 찾은이 설정의 가장 좋은 대안은 고정 크기 스왑 파일을 사용하는 것입니다 (32 비트 OS에서 4096-4096, 64 비트 시스템에서 6GB의 시스템 RAM이 있으므로 12GB 사용) 전용 파티션에서. 여분의 7200rpm 200GB 드라이브가 있으면이 드라이브에 모든 스왑 파티션 (Windows XP, 7, 7 64 비트 및 다양한 Linux)을 배치합니다. 그것은 나를 위해 일하는 것 같지만 YMMV.


1

언급 할 가치가 있습니다 : Windows가 특정 응용 프로그램을 자주 사용하는 것을 감지하면 슈퍼 페치 (superfetch)가 해당 응용 프로그램을 메모리에 저장하여 더 빨리로드합니다. 나는 여기에서 그것을하기 위해 신뢰 창을 생각한다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.