CentOS 5.10(32-bit)サーバーをVMWareで実行しています。 4 GBのRAMが割り当てられています。
dmidecode -t 17 | grep Size | grep MB
そうですか:
Size: 4096 MB
しかし、free
を実行すると、次のようになります。
total used free shared buffers cached
Mem: 3107140 1239244 1867896 0 332 400464
-/+ buffers/cache: 838448 2268692
Swap: 2096472 0 2096472
メモリfree
レポートの合計量とdmidecode
出力の間に不一致があるのはなぜですか?
私が実行しているカーネルは次のとおりです。
2.6.18-371.4.1.el5 #1 SMP Thu Jan 30 06:09:24 EST 2014 i686 i686 i386 GNU/Linux
確かに、カーネルはPAE
を実行していませんが、これはメモリが4GBを超える場合にのみ必要だと思いました。
簡単なものが欠けていることはわかっています。詳しく説明してもらえますか?
私のカーネルが他のもののためにたくさんのメモリを予約しているようです。 /var/log/dmesg
:
Linux version 2.6.18-371.4.1.el5 ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)) #1 SMP Thu Jan 30 06:09:24 EST 2014
BIOS-provided physical RAM map:
BIOS-e820: 0000000000010000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000ca000 - 00000000000cc000 (reserved)
BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000bfef0000 (usable)
BIOS-e820: 00000000bfef0000 - 00000000bfeff000 (ACPI data)
BIOS-e820: 00000000bfeff000 - 00000000bff00000 (ACPI NVS)
BIOS-e820: 00000000bff00000 - 00000000c0000000 (usable)
BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
BIOS-e820: 00000000fffe0000 - 0000000100000000 (reserved)
BIOS-e820: 0000000100000000 - 0000000140000000 (usable)
Warning only 4GB will be used.
Use a PAE enabled kernel.
3200MB HIGHMEM available.
896MB LOWMEM available.
found SMP MP-table at 000f6bf0
Memory for crash kernel (0x0 to 0x0) notwithin permissible range
32ビットカーネルでは、4 GBのアドレススペースしか使用できません。このアドレス空間の一部は、ビデオカード、NICなど、システム内の(仮想または物理)ハードウェアが独自の目的で使用する必要があります。この使用量は通常、特定のハードウェアが必要とするアドレススペースの量に応じて、256MB〜1GBです。
そのアドレス空間はハードウェアによって使用されるため、対応するRAM=は、通常32ビットシステムにはアクセスできません。
次の2つのオプションがあります。
free
コマンドの出力では、予約済みのカーネルメモリやその他のいくつかの小さなビットはカウントされません。 64ビットカーネルでも、<2GB RAMでも、この不一致が見られます。
あなたの物理的なRAM=マップからの重要な行はこれです:
BIOS-e820: 0000000100000000 - 0000000140000000 (usable)
この行は、システムの物理的な1 GB(0x40000000バイト、16進数)RAMがBIOSによって4GBの制限を超えてマッピングされているため、PAEのない32ビットシステムからアクセスできないことを示しています。