커밋 요금이 100 % 찼지만 페이지 파일을 사용하지 않을 때 실제 메모리는 60 %


25

시스템에서 페이지 파일을 비활성화했습니다 (하드 디스크가 너무 느리거나 새 것을 즉시 구입할 수 없으며 페이지 파일을 다른 파티션으로 이동할 수 없음). 메모리가 많은 응용 프로그램을 사용하여 리소스 모니터를 볼 때 시스템은 커밋 요금이 거의 100 % 가득 찼음을 보여줍니다. 실제로 더 많은 메모리를 요구하면 커밋 요금이 효과적으로 100 %에 도달하면 프로그램이 충돌하기 시작합니다.

한편, 시스템은 물리적 메모리를 50-60 % 만 사용하고 있으며 약 1GB의 메모리를 사용할 수 있다고 말합니다 (무료 + 대기).

커밋 차지가 실제로 요청 된 총 메모리 인 경우 시스템에 메모리가 너무 많다고 말하는 이유는 무엇입니까? 실제 메모리가 Windows에서 사용되지 않습니까? 메모리 그래프가 잘못 되었습니까? 뭔가 빠졌습니까?

커밋 충전 그래프와 실제 메모리 그래프 작업 관리자


2
이 주제에 대한 또 다른 좋은 대답은 다음과 같습니다 . brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7 .
cnst

@cnst 아주 좋은 기사. 이 문제를 더 잘 이해하는 데 도움이되었습니다. 왜 답변으로 게시하지 않습니까?
Jason Oviedo

2
페이지 파일 사람들을 비활성화하지 마십시오. 이것은 멍청한 생각입니다
Milney

@Milney 동의 합니다. 일반적으로 페이지 파일을 비활성화 해서는 안됩니다 . 문제의 순간에 디스크가 너무 느리기 때문에 나에게 의미가있었습니다. 실제로이 질문을하는 것 외에도 시스템의 일반적인 응답 성이 여러 번 개선되었습니다.
Jason Oviedo

@JasonOviedo 그 경우가 뭔가를 나타냅니다 안 것은 아주 잘못된. 시스템에 더 많은 옵션 을 제공하면 속도가 느려지지 않아야 합니다. 시스템은 페이지 파일이 있기 때문에 페이지 파일을 사용할 필요가 없습니다. (어떤이는 아마 XY 질문을 의미 페이지 파일 시스템 느리게 만든 이유 올바른 질문은 정확하게이다..)
데이비드 슈워츠

답변:


26

여전히 사용 가능한 RAM이 많은 동안 커밋 제한이 부족한 것은 전혀 드문 일이 아닙니다. 커밋 제한이나 커밋 요금은 사용 가능한 RAM 또는 사용 가능한 RAM과 직접 관련이 없습니다.

커밋 제한 = 현재 페이지 파일 크기 + RAM 크기

페이지 파일이 없으므로 커밋 제한은 페이지 파일이있는 경우보다 커집니다. 사용 가능한 RAM의 양은 중요하지 않습니다 . 커밋 제한의 경우 설치된 RAM 크기 만 중요합니다. RAM의 90 %가 사용 가능하거나 사용 가능하더라도 커밋 제한이 부족할 수 있습니다.

커밋 요금은 실제 메모리가 아니라 가상 메모리의 수입니다. 내 프로그램이 2GB 커밋을 요청했지만 .5GB에만 액세스한다고 가정하십시오. 나머지 1.5GB는 오류가 발생하지 않으며 RAM에 할당되지 않으므로 RAM 사용량은 2GB를 반영하지 않으며 0.5GB 만 반영합니다.

그럼에도 불구하고 "시스템 커밋"은 2GB 증가합니다. 시스템이 실제로 2GB를 수용 할 장소가 있다는 것을 "커밋"했기 때문에 실제로는 모두 필요합니다. 주어진 프로그램 실행에서 반드시 그것을 사용하려고 시도하지는 않는다는 사실이 모두 도움이되지는 않습니다. 나는 2GB를 요청했고 그 호출로부터 성공적으로 돌아 왔을 때 OS가 "확정 된"즉, 약속 한대로 그 가상 주소 공간을 많이 사용할 수 있다는 것을 알게되었다. OS는 모든 것을 유지할 곳이 없으면 약속을 할 수 없습니다.

따라서 페이지 파일을 다시 넣거나 RAM을 추가하거나 한 번에 적은 양을 실행하십시오. 또는 세 가지의 조합. "메모리 부족"및 "메모리 부족"오류를 방지하기위한 유일한 옵션입니다.

여기 (더 길게) 그리고 여기 (훨씬 더 길게) 내 답변을 참조하십시오 .


3
특히, Windows가 메모리를 할당하기 전에 이러한 할당이 사용될 때이를 충족시킬 수 있도록 보장하려고합니다. 할당이 완전히 사용되지 않더라도 Windows는 보장 할 수없는 경우 더 많은 할당을 거부합니다. 사용 여부에 관계없이 페이지 파일은 추가 백업 스토리지를 제공합니다.
Bob

4

http://brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7/ 의 기사에서 메모리 할당 테스트에서 알 수 있듯이 Windows는 큰 메모리 할당에 실패하는 시스템 유형입니다 이러한 할당이 모든 이전 할당 (Microsoft 호출 "커밋"이라고 함)과 함께 총 "커밋"을 실제 메모리의 합과 모든 페이지 파일의 합 (스왑)보다 더 많이 가져옵니다.

위에서 언급 한 할당을 위해 프로세스의 가상 주소 공간 내에서 읽기 또는 쓰기가 수행되기 전에 할당 자체가 실제 메모리 (실제 또는 스왑 이 아님)를 사용하지 않는다는 것을 고려하십시오 . 예를 들어 , 2GB 할당 자체는 "커밋"숫자에만 영향을 미치며 (Windows 7 토크에서) "물리적 메모리"만 남겨 둡니다 (해당 할당 내에서 읽기 / 쓰기가 발생할 때까지).

OS 디자인이 진행되는 한 다른 방법은 사용 가능한 메모리가 이미 완전히 소진되지 않은 한 항상 모든 크기의 할당을 허용 한 다음 대신 응용 프로그램이 읽기 / 쓰기에 실패하도록하는 것입니다. 자세한 내용은 /cs/42877/when-theres-no-memory-should-malloc-or-read-write-fail 을 참조하십시오.


2
예. Windows의 접근 방식에 대한 논쟁 : 프로그래머가 malloc (또는 Win32, VirtualAlloc)의 상태를 확인하는 것이 합리적입니다. 호출이 성공하면 프로그램은 할당 된 VAS를 사용할 수 있으며 해당 Free 또는 VirtualFree가 될 때까지 그대로 유지됩니다. 다른 방법으로, 일반 메모리 읽기 및 쓰기 (포인터 역 참조)는 메모리 액세스 예외를 일으킬 수 있습니다. 그러나 모든 포인터 역 참조 후에는 프로그래머가 상태를 확인하지 않아도됩니다. 어쨌든 상태를 반환하지 않으므로 예외 처리기를 사용하여 수행해야합니다. 추한.
Jamie Hanrahan 2016 년

2

사용 가능한 메모리는 생각했던 것과 다릅니다. 실제로 최근에 종료 된 프로세스의 파일 캐시 나 다른 프로세스에 일부 메모리를 강제로 포기한 트림 된 프로세스의 파일 캐시는 사용되지 않습니다. 그들은 원래 목적으로 다시 부를 수 있습니다. 자세한 내용은 참조하십시오.

http://support.microsoft.com/kb/312628

페이지 파일이 없기 때문에 이것은 매우 나쁩니다. Windows가 없으면 Windows 성능이 저하됩니다. 실행 파일도 페이지 파일이 없을 때 스왑 파일로 사용됩니다. 드라이브 속도가 느리더라도 최대 8 ~ 16GB의 메모리를 확보 할 때까지 페이지 파일을 사용하는 것이 좋습니다. 어떤 사람들은 윈도우 7조차도 하나도없이 실행될 수 있다고 생각합니다.

나는 몇 가지 일을함으로써 정기적으로 오래된 기계를 향상시킵니다. 하드 드라이브를 최대한 정리하십시오. 드라이브에서 일시적으로 제거 할 수있는 모든 것을 백업으로 복사하십시오. 필요없는 응용 프로그램을 제거하십시오. 앱을 제거하면 다시 설치할 수 있습니다.

모든 작업이 완료되면 하드 디스크 조각 모음을 수행하십시오. 이때 페이지 파일을 다시 작성하십시오. 가능한 한 드라이브의 전면에 가장 가깝습니다. 고정 된 크기의 메모리를 약 1.5 배 만듭니다. 그 규칙은 일반적으로 1 ~ 3 시간의 메모리 크기를 보았습니다. 이렇게하면 일반적인 위치에 비해 속도가 약간 향상됩니다.

무료로 제공되는 auslogic defrager를 사용합니다 (더 많은 도구가 필요합니다). 이 작업을 수행하는 다른 것도 있습니다. portableapps.com에서 조각 모음을 확인하십시오. 빠른 액세스를 위해 최근에 액세스 한 파일을 드라이브 전면 근처에 배치하여 디스크를 최적화합니다. 페이지 파일이있는 위치를 표시하여 드라이브의 상위 25 %로 이동했는지 확인할 수 있습니다.

그런 다음 앱을 다시 설치하고 데이터를 다시 복사하십시오.

나는 당신이 10 또는 20 % 향상을 얻는다고 말할 것입니다. 그러나 주된 가치는 더 부드러운 경험을 위해 많은 망설임이 사라진다는 것입니다.


3
일부 테스트를 사용하면 디스크가 너무 느릴 때 페이지 파일이 없으면 실제로 시스템 속도가 빨라집니다. 앱 전환과 같은 간단한 작업에서 몇 초의 차이를 알 수 있습니다.
Jason Oviedo

@ 마크 착각했습니다. 대다수의 Windows 시스템은 페이지 파일을 사용하여 실행되며 (이는 Windows가 기본적으로 실행되는 방식으로 충분하고 충분한 이유 때문에) 거의 모든 속도가 비슷한 속도의 디스크를 사용합니다. 그리고 그들 중 누구도 그러한 문제를 보이지 않습니다. 문제는 "페이지 파일"이 아니며 RAM이 충분하지 않기 때문입니다. 페이지 파일을 제거한다고해서 디스크로의 페이징이 제거되는 것이 아니라 페이징에 일반적으로 관련된 수백 개의 파일 중 하나만 제거 됩니다.
Jamie Hanrahan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.