64ビットLinuxが3〜32 GBのRAMを認識しない


8

私の問題の原因は、メモリモジュールの障害と、カーネルバイナリの破損です。


今、基本的に新しいハードウェアでPCを起動しました。私は以前にDebian 6.0 AMD64を実行していましたが、変更はありません(文字通り、古いマザーボードからハードディスクを取り外し、新しいマザーボードに再接続しただけです)が、奇妙なことが見つかりました。

  • 物理的に4 x 8 GBのRAMをインストールしました
  • UEFI / BIOSセットアップが16383 MBのRAMを報告する
  • Linux free -mは2985 MBのRAMを報告します

2985 MBは、魔法の3 GBマークに近すぎて、まったくの偶然ではありませんが、uname -r出力され2.6.32-5-amd64ます。明らかに64ビットカーネルです。これは、私が使用しているシステムドライブにこれまでインストールされたものです。新しいマザーボードはAsus M5A97 Proで、4 GBのDDR3スロットがあり、8 GBモジュールをサポートすると思われます。メモリモジュール自体は同一で、4個のCorsair XMS3 PC12800 8 GBを一緒に購入しました。

私はUEFIセットアップを詳細に検討していませんが、それを参照しましたが、大量のRAMを有効にするために変更する必要があると思われるものは何もありませんでした。

編集:私が本当に64ビットを実行していることのさらなる確認:

# file `which free`
/usr/bin/free: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
#

これはどうしたのですか、どうすればよいですか?

編集2:要求に応じて、dmesg、dmidecode、およびmeminfo。私は現在、システムに物理的にアクセスできません。そのため、今夜までいくつかのモジュールを引き出して、それが何をするかを確認する必要があります。(dmidecodeは3 x 8GBと1つの空のDIMMスロットを報告することに注意してください。また、カーネルからのMTRR不一致メッセージに注意してください。これにより、少なくともマザーボード自体が報告しているものと合わせて13 GBが失われます。)

# dmidecode --type memory
# dmidecode 2.9
SMBIOS 2.7 present.

Handle 0x0026, DMI type 16, 23 bytes
Physical Memory Array
        Location: System Board Or Motherboard
        Use: System Memory
        Error Correction Type: Multi-bit ECC
        Maximum Capacity: 32 GB
        Error Information Handle: Not Provided
        Number Of Devices: 4

Handle 0x0028, DMI type 17, 34 bytes
Memory Device
        Array Handle: 0x0026
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 8192 MB
        Form Factor: DIMM
        Set: None
        Locator: DIMM0
        Bank Locator: BANK0
        Type: <OUT OF SPEC>
        Type Detail: Synchronous
        Speed: 1333 MHz (0.8 ns)
        Manufacturer: Manufacturer0
        Serial Number: SerNum0
        Asset Tag: AssetTagNum0
        Part Number: Array1_PartNumber0

Handle 0x002A, DMI type 17, 34 bytes
Memory Device
        Array Handle: 0x0026
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 8192 MB
        Form Factor: DIMM
        Set: None
        Locator: DIMM1
        Bank Locator: BANK1
        Type: <OUT OF SPEC>
        Type Detail: Synchronous
        Speed: 1333 MHz (0.8 ns)
        Manufacturer: Manufacturer1
        Serial Number: SerNum1
        Asset Tag: AssetTagNum1
        Part Number: Array1_PartNumber1

Handle 0x002C, DMI type 17, 34 bytes
Memory Device
        Array Handle: 0x0026
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 8192 MB
        Form Factor: DIMM
        Set: None
        Locator: DIMM2
        Bank Locator: BANK2
        Type: <OUT OF SPEC>
        Type Detail: Synchronous
        Speed: 1333 MHz (0.8 ns)
        Manufacturer: Manufacturer2
        Serial Number: SerNum2
        Asset Tag: AssetTagNum2
        Part Number: Array1_PartNumber2

Handle 0x002E, DMI type 17, 34 bytes
Memory Device
        Array Handle: 0x0026
        Error Information Handle: Not Provided
        Total Width: Unknown
        Data Width: 64 bits
        Size: No Module Installed
        Form Factor: DIMM
        Set: None
        Locator: DIMM3
        Bank Locator: BANK3
        Type: Unknown
        Type Detail: Synchronous
        Speed: Unknown
        Manufacturer: Manufacturer3
        Serial Number: SerNum3
        Asset Tag: AssetTagNum3
        Part Number: Array1_PartNumber3
#
======================================================================
# cat /proc/meminfo
MemTotal:        3056820 kB
MemFree:         1470820 kB
Buffers:          390204 kB
Cached:           194660 kB
SwapCached:            0 kB
Active:           488024 kB
Inactive:         419096 kB
Active(anon):     231112 kB
Inactive(anon):    96660 kB
Active(file):     256912 kB
Inactive(file):   322436 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 8 kB
Writeback:             0 kB
AnonPages:        322320 kB
Mapped:            33012 kB
Shmem:              5472 kB
Slab:             613952 kB
SReclaimable:     597404 kB
SUnreclaim:        16548 kB
KernelStack:        2384 kB
PageTables:        19472 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     1528408 kB
Committed_AS:     621464 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      294484 kB
VmallocChunk:   34359429080 kB
HardwareCorrupted:     0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:        9216 kB
DirectMap2M:     2054144 kB
DirectMap1G:     1048576 kB
#
======================================================================
# dmesg | grep -i memory
[    0.000000] WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing 13295MB of RAM.
[    0.000000] WARNING: at /tmp/buildd/linux-2.6-2.6.32/debian/build/source_amd64_none/arch/x86/kernel/cpu/mtrr/cleanup.c:1092 mtrr_trim_uncached_memory+0x2e6/0x311()
[    0.000000]  [<ffffffff814f7f1e>] ? mtrr_trim_uncached_memory+0x2e6/0x311
[    0.000000]  [<ffffffff814f7f1e>] ? mtrr_trim_uncached_memory+0x2e6/0x311
[    0.000000]  [<ffffffff814f7f1e>] ? mtrr_trim_uncached_memory+0x2e6/0x311
[    0.000000] initial memory mapped : 0 - 20000000
[    0.000000] init_memory_mapping: 0000000000000000-00000000bdf00000
[    0.000000] PM: Registered nosave memory: 000000000009d000 - 000000000009e000
[    0.000000] PM: Registered nosave memory: 000000000009e000 - 00000000000a0000
[    0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000
[    0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000
[    0.000000] PM: Registered nosave memory: 00000000bd94d000 - 00000000bd99c000
[    0.000000] PM: Registered nosave memory: 00000000bd99c000 - 00000000bd9a6000
[    0.000000] PM: Registered nosave memory: 00000000bd9a6000 - 00000000bdade000
[    0.000000] PM: Registered nosave memory: 00000000bdade000 - 00000000bdaef000
[    0.000000] PM: Registered nosave memory: 00000000bdaef000 - 00000000bdb02000
[    0.000000] PM: Registered nosave memory: 00000000bdb02000 - 00000000bdb04000
[    0.000000] PM: Registered nosave memory: 00000000bdb04000 - 00000000bdb0d000
[    0.000000] PM: Registered nosave memory: 00000000bdb0d000 - 00000000bdb13000
[    0.000000] PM: Registered nosave memory: 00000000bdb13000 - 00000000bdb75000
[    0.000000] PM: Registered nosave memory: 00000000bdb75000 - 00000000bdd78000
[    0.000000] Memory: 3046732k/3111936k available (3075k kernel code, 4728k absent, 60476k reserved, 1879k data, 584k init)
[    1.636730] Freeing initrd memory: 9501k freed
[    1.647370] Freeing unused kernel memory: 584k freed
[    4.876602] [TTM] Zone  kernel: Available graphics memory: 1528410 kiB.
[    4.876615] [drm] radeon: 256M of VRAM memory ready
[    4.876617] [drm] radeon: 512M of GTT memory ready.
[   25.571018] VBoxDrv: dbg - g_abExecMemory=ffffffffa051d6c0
#

e820のGreppingは、一連の範囲を示しますe820 update range: 00000000bdf00000 - 000000043f000000 (usable) ==> (reserved)。43f000000は16 GiB、bdf00000は3039 MiBです。それが偶然であるとは思いませ

# dmesg | grep -i e820
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009d800 (usable)
[    0.000000]  BIOS-e820: 000000000009d800 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 00000000bd94d000 (usable)
[    0.000000]  BIOS-e820: 00000000bd94d000 - 00000000bd99c000 (ACPI NVS)
[    0.000000]  BIOS-e820: 00000000bd99c000 - 00000000bd9a6000 (ACPI data)
[    0.000000]  BIOS-e820: 00000000bd9a6000 - 00000000bdade000 (reserved)
[    0.000000]  BIOS-e820: 00000000bdade000 - 00000000bdaef000 (ACPI NVS)
[    0.000000]  BIOS-e820: 00000000bdaef000 - 00000000bdb02000 (reserved)
[    0.000000]  BIOS-e820: 00000000bdb02000 - 00000000bdb04000 (ACPI NVS)
[    0.000000]  BIOS-e820: 00000000bdb04000 - 00000000bdb0d000 (reserved)
[    0.000000]  BIOS-e820: 00000000bdb0d000 - 00000000bdb13000 (ACPI NVS)
[    0.000000]  BIOS-e820: 00000000bdb13000 - 00000000bdb75000 (reserved)
[    0.000000]  BIOS-e820: 00000000bdb75000 - 00000000bdd78000 (ACPI NVS)
[    0.000000]  BIOS-e820: 00000000bdd78000 - 00000000bdf00000 (usable)
[    0.000000]  BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
[    0.000000]  BIOS-e820: 00000000fec10000 - 00000000fec11000 (reserved)
[    0.000000]  BIOS-e820: 00000000fec20000 - 00000000fec21000 (reserved)
[    0.000000]  BIOS-e820: 00000000fed00000 - 00000000fed01000 (reserved)
[    0.000000]  BIOS-e820: 00000000fed61000 - 00000000fed71000 (reserved)
[    0.000000]  BIOS-e820: 00000000fed80000 - 00000000fed90000 (reserved)
[    0.000000]  BIOS-e820: 00000000fef00000 - 0000000100000000 (reserved)
[    0.000000]  BIOS-e820: 0000000100001000 - 000000043f000000 (usable)
[    0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)
[    0.000000] e820 update range: 00000000bdf00000 - 000000043f000000 (usable) ==> (reserved)
[    0.000000] update e820 for mtrr
# 

編集3/4-部分的な成功:

  • UEFI BIOSをバージョンからにアップグレードし0705 x64 08/23/2011ても効果1007 02/10/2012がありませんでした。まったく同じ問題が残りました。
  • 1つのDIMMモジュールを取り外すと(CPUから最も遠いスロットは#4だったと思います)、BIOSは残りの24 GBを検出して使用できましたが、3枚のDIMM構成は「推奨」されていません。ユーザーズマニュアルの図。特に、スロット#4に残りのDIMMの1つを装着しても、スロットを使用できるため、スロットは問題ありません。「元の」DIMMをそのスロットに取り付け直すと、最初のポイントに戻りました。
  • Debian 6.0.3 AMD64インストールCDからレスキュー環境にブートし、そのdmesg出力を確認しても、同様のMTRRエラーは表示されません。また、その環境では、3 x 8 GBがインストールされていると、24 GB(プラスまたはマイナスのイプシロンとpiまたはその前後。正確な計算は行いませんでした)は、に従って使用可能と表示されfreeます。
  • カーネルのアップグレード/再インストール(マイナーアップグレードが利用可能でした)によって、MTRRの問題も修正されたようです。dmesg現在、合計26198016 KBが報告され、MTRRエラーはありません。これは、3 x 8GBがインストールされている場合の予想と一致しています。free -m現在、合計24114 MBのRAMが報告されていますが、これは率直に言って私には十分に近い値です。

これは、barfed DIMMのようなにおいがし、さらに、何らかの理由で損傷したカーネルを嗅ぎます。後者停電中に発生した可能性があります(ただし、カーネルが壊れるのは奇妙な方法です!)。機能していないDIMMは、私が彼らと話すとすぐに(できれば明日)リセラーに戻ります。

(うまくいけば)最終編集

2ペアのDIMMの1つをRMAしたところ、販売店は損傷していると認め、新しいペアを送ってくれましたが、問題なく動作しているようです。つまり、基本的には1か月ほど前に当初予定していた場所にあります(ただし、その時間の大部分は実際にはリセラーによるものではありませんでした)。32GBのRAMが使用可能です。free -m合計32194 MBのメモリを報告し、カーネルは34586624k初期化時にRAMを報告します。どちらも私の期待に沿ったものです。


2
最初のステートメントから、OSがインストールされているハードディスクを新しいシステムボードに移動したように聞こえますか?本当に良いテストは、ライブディストリビューションをダウンロードして起動することです。Slax、DSL、Ubuntuなど。それが適切な量のRAMを認識する場合、HAL / udevの問題が発生する可能性があります。その時点で、それを修正するよりも、バックアップと再インストールの時間を大幅に節約できます。あなたが私のようなオタクで、何時間も何日もそれを無駄にしたいのでなければ:}
2bc

2
の出力と、出力のdmidecode --type memory最初の100行程度を投稿してくださいdmesg(メモリに関するものをすべて含めてください)。
Gilles「SO-邪悪なことをやめよう」

1
WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing 13295MB of RAM.さて、あなたの欠けている13Gがあります。
マット

1
ただし、他の不足している16Gではありません。それらはおそらくもう少し探し回るでしょう。
CVn 2012年

1
ハードウェアの問題と設定の問題を簡単に区別できるので、debianのライブ(/ ubuntu、これが次に近いのは/ ubuntuです)が何を表示するか知りたいと思います。
dtech 2012年

回答:


14

まず、BIOS / UEFIがRAMを正しく検出しない場合、OSのパフォーマンスは低下します。BIOSにセットアップに関する誤った情報が表示された場合、これ以上進む必要はありません。

=>あなたは、おそらく持っている、少なくともハードウェアの問題。

編集:あなたのdmesgから| grepメモリ、それはあなたが実際にあなたの埋め込まれたBIOSにあるハードウェアの問題を抱えているようです。少なくとも、Linuxはそれを検出し、警告を出しますWARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing 13295MB of RAM。また、4つのramモジュールの1つが誤って認識または挿入されているようです。

製造元に報告するか、BIOSをアップグレードして、マザーボードを変更することができます。RAMが少ないと、このバグに遭遇しない可能性が高くなります。

補足として、BIOSメーカーに関するLinus Torvaldsの有名な引用に同意するかもしれません。

BIOSライターは常に完全に無能なクラック中毒のサルです

次に、BIOSがマザーボードに実際に搭載されているもので問題ない場合は、Linuxでを確認できます/proc/meminfo。多くの場合、あなたのLinuxシステムがあなたの記憶を知っていて、何をしているのかは非常に明確です。これが私が64ビット/ 8 GBのRAMに持っているものです。

$ cat /proc/meminfo 
MemTotal:        8175652 kB
MemFree:         5476336 kB
Buffers:           63924 kB
Cached:          1943460 kB
SwapCached:            0 kB
[...]

ブートプロセスとLinuxカーネルによって使用/解放されるものについては、次の場所からgrepできますdmesg

$ dmesg | grep Memory
[    0.000000] Memory: 8157672k/8904704k available (6138k kernel code, 534168k absent, 212864k reserved, 6896k data, 988k init)

編集:Gillesが言ったように、を使用するとdmidecode --type memory、ハードウェア構成の詳細を確認できます。4x2Gbシステムでは次のようになります。

$ sudo dmidecode --type memory
# dmidecode 2.9
SMBIOS 2.6 present.

Handle 0x0020, DMI type 16, 15 bytes
Physical Memory Array
    Location: System Board Or Motherboard
    Use: System Memory
    Error Correction Type: None
    Maximum Capacity: 32 GB
    Error Information Handle: Not Provided
    Number Of Devices: 4

Handle 0x0022, DMI type 17, 28 bytes
Memory Device
    Array Handle: 0x0020
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 2048 MB
    [...]
[This block is repeated for each module]

5

/ var / log / dmesgでメモリマップを検索し(grep for 'e820')、そこに報告されているメモリの数を使用可能としてカウントします。これは、BIOSがメモリ用にロードされたOSに指示するものです。

(これは、古いスタイルのブートでのみ正しいです。EFIスタイルのブートが使用されている場合、メモリがどのように報告されるのかわかりませんが、同様のレポートがあると思います。)

また、32GBがインストールされているときにBIOSで16GBを報告すると、メモリ設定がおかしくなります。インストールされているメモリを4または8 GBに減らして、効果を比較してみてください。


e820データの編集を参照してください。メモリモジュールを物理的に取り外して、それが何をしているかを確認するには、今夜まで待機する必要があります。私が持っている唯一のDDR3モジュールは、それぞれ8 GBです。
CVn 2012年

まあ、それで十分だと思います-ハードウェアとソフトウェアの両方が適切に機能しています。最後のアクションは、適切なメモリモジュールを取り付けてそれを満たし、デュアルチャネルを機能させることです。おめでとう。
Netch

0

多くの古いAMDボードには4つのスロットがある場合がありますが、最後のスロットを埋めると問題が発生します。修正できないチップセットの問題。


私はAsus M5A97 Proを「古い」マザーボードと正確に見なしません(正確な製造日はわかりませんが、AMD 970チップセットに基づいており、Wikipediaは900シリーズを2011年6月のリリース日より後にしています)この質問が2012年3月に現在あった1年前より)。また、インストールメディアから実行すると、OSの観点からはまったく異なる現実の姿が示されました。そして問題は、問題のあるメモリモジュールを正常なメモリモジュールに交換し、カーネルを再インストールすることで最終的に解決されました(質問の冒頭にあるように)。
CVn 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.