커밋 요금이 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.