컴퓨터에서 8GB RAM 중 4 개 이상을 사용하지 않습니다… (64 비트 컴퓨터) 메모리 양을 확인하는

최근에 컴퓨터를 미래에 대비하기 위해 원래 4GB 메모리 위에 추가했습니다. 총 메모리를 8GB로 가져 왔으며, 필요할 때도 눈에 띄는 속도 변화가 없었습니다. 작업 관리자를 조사한 결과 크롬과 파이어 폭스가 각각 20 개의 탭으로 열려 있어도 컴퓨터가 4GB의 메모리를 사용하지 않는 것을 알 수있었습니다.

조사 후 모든 사람들이 제안한 모든 것은 사용 가능한 메모리 양을 확인하는 것이 었습니다. 이상하게도 8GB의 메모리가 있으며 7.74GB를 사용할 수 있다고 말합니다.

내 HP Pavilion g7-1075dx의 사양은 여기에서 찾을 수 있습니다.
AMD Phenom II가 장착 된 Windows 7 Home Premium 64 비트 노트북 PC입니다.

내 주요 질문은 내 64 비트 컴퓨터의 경우 7 개 이상을 사용할 수 있는데도 왜 컴퓨터에서 4GB 이상의 메모리를 사용하지 않습니까?

편집 : 도움이되면 Resource Monitor는 다른 모든 RAM을 “Standby”로 설명합니다.



답변

도움이되는 경우 리소스 모니터는 다른 모든 RAM을 “대기”

“대기”RAM 사용 중입니다. 페이지 캐시로 사용되고 있으며 (최근에 모든 프로세스 작업 세트에서 손실 된 페이지를 보유합니다. 즉, 디스크로 이동하지 않고도 페이지 결함을 해결할 수 있음) SuperFetch의 사전 파일 캐시에 사용됩니다.

대기 페이지를 다른 용도로 할당하기 전에 디스크에 쓸 필요가 없기 때문에 “사용 가능”한 것으로 간주됩니다. 프로세스가 페이지 오류 칠 때와 같은 않는 디스크에서 읽을 필요는 새로운 물리적 페이지 (들) 해당 프로세스에 할당해야하며, 필요한 경우 이러한 대기 목록에서 취할 수 있습니다. (이것은이 목적을위한 페이지를 찾기위한 첫 번째 선택이 아니며, 무료이고 그다음 제로 페이지 목록입니다.)

즉, 시스템이 정상적으로 작동하고 있습니다.

Windows 내부testlimit 실험에서 사용되는 도구 중 하나 인 명령 줄 도구를 사용하여 시스템에서 더 많은 RAM을 “사용 중”상태로 만들 수 있습니다 . 일반적인 sysinternals 도구의 일부는 아니지만 관련 도구입니다. 찾을 여기 시스 인 터널 사이트에서. 다운로드는 testlimit.exe 및 testlimit64.exe의 두 가지 버전이 포함 된 zip 파일입니다. 둘 다 큰 주소를 인식하므로 32 비트 버전은 / 3GB로 부팅 된 32 비트 시스템에서 최대 3GiB, 64 비트 시스템에서 최대 4GiB를 할당 할 수 있습니다.

c:\> testlimit -? 도움을줍니다.

c:\> testlimit -d 4 -c 512는 각각 4MiB의 512 개 할당으로 2GiB의 프로세스 전용 가상 주소 공간을 할당하려고 시도합니다. 64 비트 컴퓨터에서 제대로 작동합니다. / 3GB로 부팅 되지 않은 32 비트 시스템 (대부분은 아님)에서 약간의 초기 b / c 오류가 발생할 수 있습니다 (프로그램 자체, 모든 DLL 등). 프로그램이 할당 할 수있는 전체 2GiB가 없습니다.

두 경우 모두 “사용 가능한”RAM이 줄어들고 “사용 중”RAM이 증가 하지만 OS가 프로세스 개인 작업 세트에 2 GiB를 모두 남겨 둘 것이라는 보장이 없기 때문에 반드시 2 GiB 가치 는 아닙니다. 단기적으로는 그렇게해도 OS가 “음, 실제로는 아무 것도하지 않고 다른 프로세스는 더 많은 것을 필요로한다”고 결정할 때 프로세스 작업 세트가 나중에 줄어드는 것을 볼 수 있습니다.

할당 “청크”의 크기를 너무 크게하여 청크 수를 줄이십시오. 따라서 각 할당이 사실상 연속적이어야하므로 더 빨리 실패 할 수 있습니다. 예를 들어 4GiB 주소 공간에서 7 개의 512MiB 청크를 찾으려고하면 실패 할 수 있습니다.

d (irty) 대신 l (eak) 옵션을 사용하면 프로그램은 가상 공간을 할당하지만 참조하지는 않습니다. 이 것 없다 “가능”RAM의 모든 상당한 감소를 초래한다.

(d (irty) 옵션은 x86 / x64 페이지 테이블 항목의 “더티 페이지 비트”에서 이름을 가져옵니다. 이는 해당 가상 페이지에 “수정”스타일 피연산자로 액세스 할 때 설정되며 이는 페이지의 내용이 이것은 프로세스 작업 세트에서 페이지를 제거해야하는 경우 페이지를 다른 곳에 사용할 수 있기 전에 해당 컨텐츠를 어딘가에 저장해야한다는 Windows의 표시입니다. “더티 (dirty)”비트가 설정된 페이지는 제거 직후 “수정 된 페이지 목록”(Windows는 해당 백업을 해당 백업 저장소에 씁니다.)

위에서 설명한대로 (이 옵션이 상당한 양의 RAM을 사용하지 않더라도 l (eak) 옵션에 대해서도) 이러한 테스트가 작동하려면 충분한 “커밋”이 필요합니다. 특히, 테스트를 시작하기 전에 “커밋 한도”는 “커밋 요금”보다 2GiB 이상 (또는 할당하는 금액)보다 높아야합니다. 이는 d (irty)뿐만 아니라 l (eak) 옵션을 사용하는 경우에도 적용됩니다. 이 한계에 도달하면 “시스템 메모리 부족”팝업 또는 이와 유사한 팝업이 표시됩니다. 물론 치료법은 더 많은 RAM을 추가하거나 페이지 파일 설정을 높이는 것입니다.


답변

실제로 RAM 사용을 제한하도록 Windows를 구성 할 수 있습니다. 랩톱에서이 설정을 어떻게 또는 누가 구성했는지는 모르지만 확인해야합니다.

기사 에는 자세한 내용이 있지만 위의 대화 상자로 이동하는 것은 쉽습니다.

  1. 시작 아이콘을 클릭하고 msconfig.exe검색 창에 입력하십시오

  2. msconfig.exe를 시작하고 Boot탭을 클릭 한 다음 Advanced Options...버튼 을 클릭하면

  3. 적당한 값 (예 : 8GB RAM의 경우 8192)을 입력 하거나Maximum memory Windows가 모든 RAM을 사용하도록 하는 확인란의 선택을 취소하십시오 . 나는 두 가지 옵션을 모두 시도 할 것입니다.


답변

SysInternals RAMMap 을 사용 하여 PC가 실제 RAM으로 수행하는 작업을 정확하게 볼 수 있습니다 . 작업 관리자 또는 프로세스 탐색기와 같은 다른 도구는 주로 가상 메모리에 중점을 두며이 상황에 가장 적합한 도구는 아닙니다.

“카운트 사용”탭에서 많은 응용 프로그램을 열지 않은 동안 많은 부분이 사용되지 않는 것을 볼 수 있습니다.

그렇다고 PC가이 상태를 유지하지는 않습니다. 몇 개의 프로그램을 열면 메모리가 사용됩니다.


답변

주제에 관한 아주 좋은 기사 에서 인용 :

더 많은 메모리가 실제로 [컴퓨터의] 처리 속도를 증가 시키지는 않습니다. 더 빠른 CPU만이 그렇게 할 수 있습니다.

그리고 내 경험상 그것은 일반적으로 사실입니다. 동시에 많은 프로그램을 실행 하고 있고 해당 프로그램에 상당한 RAM 요구 사항이없는 한 4GB 이상의 RAM을 사용하면 실제로 얻을 수있는 이점이 거의 없습니다.

사람들은 4GB가 많은 RAM의 지옥이라는 것을 깨닫지 못하는 것 같습니다. Windows가 그 이상을 사용하게하려면 노력이 필요합니다. 많은 다른 앱 을 열어야 하고, 그 앱에서 큰 파일을 열어야합니다. 몇 개의 YouTube 동영상 탭을 던져서> 4GB 이상의 사용률이 표시 될 수 있습니다.


답변

Windows는 페이징 메모리와 같은 영리한 작업을 수행합니다. 그것은 당신이하고있는 대부분의 작업을 불필요하게보고 페이지 파일에 많은 양의 물건을 덤프하기로 결정하여 모든 RAM을 사용하지 않는 것처럼 보이게 할 수 있습니다. 페이징을 비활성화하여이 이론을 테스트 할 수 있지만 영구적으로 구성해야하는 것은 아닙니다. 인터넷에는이를위한 많은 튜토리얼이 있습니다. 24GB 및 64GB 컴퓨터에서도 수행되는 작업 중 하나는 페이징 규칙이 약 50 %, 80 % 및 90 % 소비에 도달 할 때 훨씬 엄격하게 만드는 것입니다 (이 수치는 근사치 임). 각 단계에서 많은 양의 페이지 파일에 덤프되는 것을 알았습니다.

재미있는 일은 다음과 같습니다.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define PAGE_SZ (1<<12)

int main() {
    int i;
    int gb = 2; // memory to consume in GB

    for (i = 0; i < ((unsigned long)gb<<30)/PAGE_SZ ; ++i) {
        void *m = malloc(PAGE_SZ);
        if (!m)
            break;
        memset(m, 0, 1);
    }
    printf("allocated %lu MB\n", ((unsigned long)i*PAGE_SZ)>>20);
    getchar();
    return 0;
}

그것은 C 코드입니다. GCC 또는 일부 컴파일러를 가져 와서 exe로 만들고 메모리 소비량을 늘리십시오. 2GB 이상의 메모리를 사용하려면 64 비트 프로세스로 컴파일하고 실행해야합니다. 당신이 그런 종류의 일에 빠져 있다면 흥미로운 실험이 될 수 있습니다.

편집 : 프로그램이 이것으로 죽지 않을 것이라는 점을 알고 싶었습니다. 다른 코드가 작동했는지 확실하지 않기 때문에 이전 코드에서 메모리를 편집했습니다 (메모리가 페이징되어 메모리가 소비되지 않음, lol). 새 코드에는 한 줄이 포함되어 있습니다. int gb = 2; // memory to consume in GB2를 변경하면 프로그램이 사용해야하는 메모리 양이 조정되므로 원하는만큼 사용하도록 설정할 수 있습니다. 시스템에서 설정 한 것보다 높은 값으로 설정하면 시스템이 중단 될 수 있습니다 (테스트되지 않았으므로주의해서 사용하십시오)


답변

32 비트 프로그램을 사용하여 컴퓨터의 실행 속도를 테스트하고 있습니까? 그렇다면 더 많은 RAM이 있어도 32 비트 주소는 4GB의 RAM 만 가리킬 수 있습니다. 유용한 결과를 얻으려면 64 비트 프로그램을 사용하여 테스트를 반복하고 4GB의 RAM이있는 속도와 8GB의 RAM이있는 속도로 속도를 확인해야합니다. 또한 4GB 이상의 메모리를 사용하여 더 빠르게 실행할 수있는 64 비트 프로그램이어야합니다. 프로그램이 32 비트인지 확인하려면 프로그램을 시작하고 그대로두고 Windows 작업 관리자를 시작하고 프로세스를 클릭 한 다음 관심있는 프로그램을 찾을 때까지 아래로 스크롤하십시오. 이미지 이름 열의 프로그램 이름 뒤에 공백이 있고 * 32이면 32 비트 프로그램입니다.


답변

가져 오기 프로세스 탐색기 시스 인 터널에서 (procexp을) . 리소스 그래프를 가지고 있으며, 프로세스 별 메모리 사용량을 보여줄 수 있습니다.

당신은 당신이 단순히 모든 걸 포기하고 사용하지 않을 있는지 확인하기 위해, 가상 spqce 사용에 대 실제 RAM의 사용을 볼 수 있습니다 또는 당신이 더 필요한 것 같다하지만, 실제 사용을 제한하고 있습니다.

대부분의 일상적인 프로그램 은 수요를 낮게 유지 하는 다른 작업 세트 크기를 사용합니다 . 프로그램이 많은 메모리를 할당하면 실제로 모든 메모리를 동시에 사용 하지는 않습니다 …

Windows는 프로그램에서 사용 가능한 페이지로 페이지를 공격적으로 이동 하지만 페이지 오류가 발생하면 스왑 파일에서로드하지 않고 목록에서 페이지를 가져옵니다. 대기는 다음을 포함 할 수 있습니다. 도구마다 다른 방식으로 레이블이 다릅니다.

최소한이 테스트에서는 스왑 파일을 해제 해 볼 수 있습니다. 그러면 데이터 메모리가 실제로 사용됩니다. procexp가 그것을 명확하게 알기에 충분할지라도.