4.0GiB를 사용하는 경우 왜 시스템에 3.2GiB의 RAM 만 표시됩니까?


12

2x2 GiB 스틱의 RAM이 설치되어 있습니다. grub 부트 메뉴에서
실행 memtest86하면이를 확인할 수 있습니다. memtest86은 오류를보고하지 않습니다.

그러나 실행중인 Ubuntu 10.04 시스템에서 사용 가능한 메모리를 확인하는 모든 방법은 약 3.2GiB 만보고합니다.

  • cat /proc/meminfo == 3320132 kB
  • System Monitor == 3.2 GiB
  • htop == 3242MB
  • free -m == 3242MB

누가 누락 된 RAM을 가지고 있습니까?

업데이트 된 정보 : 방금 동일한 하드웨어에서 다른 버전의 Ubuntu 10.04로 이중 부팅했습니다 (긴급 상황에서 몇 달 전에 설치 한 것을 잊어 버렸습니다) :) .... ... 3.9 GiB를 통해보고합니다 System Monitor...

최신 /var/log/messages정보를 http://pastebin.ubuntu.com/629246/에 게시 했습니다 .


어떤 종류의 커널을 사용하고 있습니까? 'bigmem'또는 'x86-64'를 사용하지 않으면 시스템에 모든 RAM이 표시되지 않을 수 있습니다. 또한 일부 BIOS 옵션은 전체 RAM의 가시성에 영향을줍니다. / var / log / messages 로그 (처음에)를 사용하여 메모리 영역이 어떻게 매핑되었는지 확인하십시오.
mbaitoff 2016 년

어떻게 해석해야할지 모르겠지만 /var/log/messages가장 최근 정보를 여기에 게시했습니다 : pastebin.ubuntu.com/629246 .. 아마도 누군가가 그것의 머리 나 꼬리를 만들 수 있습니다 :)
Peter.O

3.2Gb보고 시스템 또는 3.9Gb보고 시스템의 로그입니까?
mbaitoff 2016 년

로그의 61,62 행에 사용 가능한 3.2Gb가 표시됩니다.
mbaitoff 2016 년

4Gb 시스템에 x86-64 (64bit)가 설치된 Ubuntu 10.04가 있습니다. 3964 Mb ( 'free -m')를보고하므로 두 번째 설정에서 RAM 크기를 올바르게 감지합니다. 두 번째 시스템에 어떤 종류의 커널이 설치되어 있는지 확인하십시오.
mbaitoff 2016 년

답변:


19

32 비트 주소 공간은 4GB의 주소를위한 공간이 있음을 의미합니다. 이상적으로 커널은 모든 물리적 메모리, 현재 작업의 모든 메모리 및 모든 자체 메모리를 매핑 할 수 있기를 원합니다. 실제 메모리만으로 사용 가능한 4GB를 모두 차지하면 작동하지 않습니다. 따라서 실제 메모리는 항상 매핑되는 낮은 메모리와 사용 중일 때 매핑해야하는 높은 메모리로 나뉩니다. 패치 된 커널을 실행하지 않는 한 ix86 아키텍처에서 128MB의 주소 공간은 커널 코드 및 데이터 구조에 사용되며 896MB는 실제 메모리 매핑에 사용됩니다 (총 1GB).

주소 공간이 전체 메모리보다 편안하게 크지 않은 경우 메모리 관리의 복잡성에 대한 배경 지식 :

커널 로그에서 발췌 :

BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000cdce0000 (usable)
BIOS-e820: 00000000cdce0000 - 00000000cdce3000 (ACPI NVS)
BIOS-e820: 00000000cdce3000 - 00000000cdcf0000 (ACPI data)
BIOS-e820: 00000000cdcf0000 - 00000000cdd00000 (reserved)
BIOS-e820: 00000000d0000000 - 00000000e0000000 (reserved)
BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
BIOS-e820: 0000000100000000 - 0000000130000000 (usable)
2404MB HIGHMEM available.
887MB LOWMEM available.
Zone PFN ranges:
DMA      0x00000000 -> 0x00001000
Normal   0x00001000 -> 0x000377fe
HighMem  0x000377fe -> 0x000cdce0

여기에는 887MB의 낮은 메모리가 있습니다. 이론상 최대 896MB에서 몇 MB의 DMA 버퍼 (하드웨어 장치와 통신하는 데 사용되는 메모리 영역)를 뺀 값입니다.

실제 메모리 중 3328MB는 4GB 미만의 주소에 매핑되고 768MB는 4GB 이상의 주소 (0x100000000–0x130000000 범위)에 매핑됩니다. 이 768MB에 액세스 할 수 없습니다. 3242MB 만 사용할 수있는 이유를 설명합니다 (4096MB의 RAM에서 768MB, 액세스 할 수없는-9MB의 DMA 버퍼에서 75MB를 빼고 코드 및 데이터에 커널 자체에서 사용). 왜 BIOS가 4GB를 초과하는 RAM을 매핑하는지 모르겠지만 데이터 포인트로 RAM이 0x100000000–0x130000000에 매핑 된 4GB RAM을 가진 PC에서 이것을 게시하고 있습니다.

물리적 메모리를 4GB 이상으로 매핑하려면 PAE를 사용해야합니다 . PAE는 작은 성능 오버 헤드 (특히 메모리 관리자에서 더 큰 데이터 구조가 필요함)가 발생하므로 시스템 적으로 활성화되지 않습니다. 기본 우분투 커널은 PAE 지원없이 컴파일됩니다. 가져 오기 -generic-pae커널이 linux-image-generic-pae 설치 RAM의 최대 64GB에 액세스 할 수 있도록.

TL, DR : Linux가 예상대로 작동합니다. 펌웨어는 그다지 도움이되지 않습니다. PAE 가능 커널을 가져옵니다.


글쎄, 그건 쉬웠다 ... 고마워 질 :) ... 로그를 이해하는 것은 확실히 어렵습니다! ... 나는 설치 linux-image-2.6.32-32-generic-pae하고 htop지금보고3990 MiB
피터. 오

1
컴퓨터는 4GB 마크 위에 램을 매핑하여 비디오 램과 같은 하드웨어 메모리를 4GB 마크 아래에 놓아서 페이가 활성화되지 않은 32 비트 커널에서 사용할 수 있도록합니다.
psusi

모든 GB가 GiB 여야한다고 생각하십니까?
weynhamz

@TechliveZheng 이것은 물리 사이트가 아닌 컴퓨터 기술 사이트입니다. 내 모든 MB, GB 등은 실제로 MiB, GiB 등입니다.
Gilles 'SO-stop

1

우분투의 아키텍처가 i386 (32 비트 버전)이기 때문일 수 있습니다. 당신이 실행할 때 결과는 무엇입니까 uname -a?


uname -a... Linux DT9400 2.6.32-32-generic # 62-Ubuntu SMP Wed Apr 20 21:54:21 UTC 2011 i686 GNU / Linux ... 그러나, 나의 질문에있는 "업데이트 된 정보 :"에서 언급했듯이, 또 다른 10.04 32 비트 이중 부팅 설치는 3.9 Gib를 나타냅니다. 두 이중 부팅 시스템 모두 동일한 CD에서 설치되었지만 현재 다른 커널을 실행하고 있으며 다른 프로그램이 설치되어 있습니다 ... BTW, 이것은 최근에 일어나지 않은 일입니다. 몇 달 동안
3.2GiB를 보여주었습니다

분명히 32 비트 커널 ( 'i686')을 실행하고 있습니다. 그런데 3.9Gb는 이미 4Gb를 의미합니다. 일부 주소 공간은 하드웨어에 의해 예약되어 있기 때문입니다.
mbaitoff 2016 년

그렇습니다. mbaitoff 덕분에 약간의 메모리가 필요하다고 생각하지만 0.8GiB가 너무 많다고 생각하므로 여기서 무슨 일이 일어나고 있는지 알고 싶습니다.
Peter.O

AFAIK 우분투는도 86에 RAM의 큰 금액을 사용할 수 있습니다 PAE 커널을 설치할 수 있습니다
안톤 Barkovsky

3
pae 커널 (linux-generic-pae 및 linux-headers-generic-pae)을 설치하고 원하는 경우 일반 커널을 제거해야한다고 생각합니다.
Anton Barkovsky 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.