
OS に問題があります。カーネルを含むすべてのツールでは、実際の RAM メモリの半分しか表示されません。ラップトップに 16G のメモリ チップが 1 つインストールされており、BIOS ではすべて正常と表示されます。
構成に関する情報:
ハードウェア
ノートパソコンDell XPS 15 9550(PDFリンク)、その中では次のようなことが述べられています。
メモリ
スロット: SODIMM スロット 2 つ
タイプ: DDR4
速度: 2133 MHz
サポートされる構成: 8 GB、16 GB、32 GB
CPU
インテル® Core™ i7-6700HQ プロセッサー (アークリンク)、その中では次のようなことが述べられています。
最大メモリサイズ(メモリの種類によって異なります): 64 GB
メモリタイプ: DDR4-2133、LPDDR3-1866、DDR3L-1600
システム情報
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.
90 structures occupying 5605 bytes.
Table at 0x000E8C20.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: Dell Inc.
Version: 1.14.0
Release Date: 02/13/2020
Address: 0xF0000
Runtime Size: 64 kB
ROM Size: 16 MB
Characteristics:
PCI is supported
PNP is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
EDD is supported
5.25"/1.2 MB floppy services are supported (int 13h)
3.5"/720 kB floppy services are supported (int 13h)
3.5"/2.88 MB floppy services are supported (int 13h)
Print screen service is supported (int 5h)
8042 keyboard services are supported (int 9h)
Serial services are supported (int 14h)
Printer services are supported (int 17h)
ACPI is supported
USB legacy is supported
Smart battery is supported
BIOS boot specification is supported
Function key-initiated network boot is supported
Targeted content distribution is supported
UEFI is supported
BIOS Revision: 1.14
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: Dell Inc.
Product Name: XPS 15 9550
Version: Not Specified
Serial Number: GR1RD72
UUID: 4c4c4544-0052-3110-8052-c7c04f443732
Wake-up Type: Power Switch
SKU Number: 06E4
Family: XPS
カーネル
$ uname -a
Linux piotr-XPS-15-9550 5.11.0-22-generic #23~20.04.1-Ubuntu SMP Thu Jun 17 12:51:00 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
記憶が示すfree
$ free -h
total used free shared buff/cache available
Mem: 7,0Gi 2,6Gi 1,1Gi 887Mi 3,4Gi 3,3Gi
Swap: 979Mi 0B 979Mi
メモリショー/proc/meminfo
:
$ cat /proc/meminfo
MemTotal: 7382044 kB
MemFree: 1142512 kB
MemAvailable: 3467104 kB
Buffers: 201548 kB
Cached: 3183760 kB
SwapCached: 0 kB
Active: 823272 kB
Inactive: 4182420 kB
Active(anon): 1924 kB
Inactive(anon): 2520488 kB
Active(file): 821348 kB
Inactive(file): 1661932 kB
Unevictable: 831044 kB
Mlocked: 32 kB
SwapTotal: 1003516 kB
SwapFree: 1003516 kB
Dirty: 104 kB
Writeback: 0 kB
AnonPages: 2451456 kB
Mapped: 842608 kB
Shmem: 908320 kB
KReclaimable: 137292 kB
Slab: 238076 kB
SReclaimable: 137292 kB
SUnreclaim: 100784 kB
KernelStack: 19088 kB
PageTables: 36676 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 4694536 kB
Committed_AS: 9487844 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 76280 kB
VmallocChunk: 0 kB
Percpu: 6176 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
FileHugePages: 0 kB
FilePmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 328276 kB
DirectMap2M: 6234112 kB
DirectMap1G: 2097152 kB
記憶が示すdmidecode
$ sudo dmidecode -t memory
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.
Handle 0x0038, DMI type 16, 23 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: 2
Handle 0x0039, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0038
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: SODIMM
Set: None
Locator: DIMM A
Bank Locator: DIMM A
Type: DDR4
Type Detail: Synchronous
Speed: 2133 MT/s
Manufacturer: 0793
Serial Number: 12161215
Asset Tag: 16360000
Part Number: GR2133S464L15/16G
Rank: 2
Configured Memory Speed: 2133 MT/s
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: 1.2 V
Handle 0x003A, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0038
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: DIMM
Set: None
Locator: DIMM B
Bank Locator: DIMM B
Type: Unknown
Type Detail: None
Speed: Unknown
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Rank: Unknown
Configured Memory Speed: Unknown
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: Unknown
出力dmesg
:
$ dmesg | grep -i e820
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009dbff] usable
[ 0.000000] BIOS-e820: [mem 0x000000000009dc00-0x000000000009ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x0000000032667fff] usable
[ 0.000000] BIOS-e820: [mem 0x0000000032668000-0x0000000032668fff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x0000000032669000-0x0000000036fcefff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000036fcf000-0x000000003700cfff] ACPI data
[ 0.000000] BIOS-e820: [mem 0x000000003700d000-0x0000000037674fff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x0000000037675000-0x000000003fffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fe000000-0x00000000fe010fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000029e22cfff] usable
[ 0.000000] BIOS-e820: [mem 0x000000029e22d000-0x00000004bdffffff] reserved
[ 0.000767] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[ 0.000771] e820: remove [mem 0x000a0000-0x000fffff] usable
[ 0.123701] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820
[ 0.333546] e820: reserve RAM buffer [mem 0x0009dc00-0x0009ffff]
[ 0.333548] e820: reserve RAM buffer [mem 0x32668000-0x33ffffff]
[ 0.333549] e820: reserve RAM buffer [mem 0x29e22d000-0x29fffffff]
完全な出力dmesg
:https://pastebin.com/B7qLzVvK
OS: Linux Mint 20 ウリヤナ
ここに投稿する前にやったこと:
- BIOSを最新バージョンに更新しました
- memtest86とデル診断ツールを使用 - すべて正常、BIOSは16Gを表示
- カーネルを5.11にアップグレードしました
- USB ドライブから Ubuntu 20.04 を試したところ、システム モニター アプリに 16G RAM と表示されました (なぜか、内蔵キーボードまたは USB キーボードからコンソールに文字を入力できませんでした :/)
起動に UEFI を使用していないからでしょうか?
これをデバッグして修正するにはどうすればいいでしょうか? ありがとうございます。
//編集
$ decode-dimms
# decode-dimms version $Revision$
Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare, Trent Piepho and others
Decoding EEPROM: /sys/bus/i2c/drivers/ee1004/0-0050
Guessing DIMM is in bank 1
---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-125 OK (0xEF1D)
# of bytes written to SDRAM EEPROM 384
Total number of bytes in EEPROM 512
Fundamental Memory type DDR4 SDRAM
SPD Revision 1.0
Module Type SO-DIMM
EEPROM CRC of bytes 128-253 OK (0x2355)
---=== Memory Characteristics ===---
Maximum module speed 2132 MHz (PC4-17000)
Size 16384 MB
Banks x Rows x Columns x Bits 16 x 16 x 10 x 64
SDRAM Device Width 8 bits
Ranks 2
Rank Mix Symmetrical
AA-RCD-RP-RAS (cycles) 15-15-15-36
Supported CAS Latencies 16T, 15T, 14T, 13T, 12T, 11T, 10T
---=== Timings at Standard Speeds ===---
AA-RCD-RP-RAS (cycles) as DDR4-1866 13-13-13-31
AA-RCD-RP-RAS (cycles) as DDR4-1600 11-11-11-27
---=== Timing Parameters ===---
Minimum Cycle Time (tCKmin) 0.938 ns
Maximum Cycle Time (tCKmax) 1.500 ns
Minimum CAS Latency Time (tAA) 13.750 ns
Minimum RAS to CAS Delay (tRCD) 13.750 ns
Minimum Row Precharge Delay (tRP) 13.750 ns
Minimum Active to Precharge Delay (tRAS) 33.000 ns
Minimum Active to Auto-Refresh Delay (tRC) 46.750 ns
Minimum Recovery Delay (tRFC1) 350.000 ns
Minimum Recovery Delay (tRFC2) 260.000 ns
Minimum Recovery Delay (tRFC4) 160.000 ns
Minimum Four Activate Window Delay (tFAW) 21.000 ns
Minimum Row Active to Row Active Delay (tRRD_S) 3.700 ns
Minimum Row Active to Row Active Delay (tRRD_L) 5.300 ns
Minimum CAS to CAS Delay (tCCD_L) 5.625 ns
---=== Other Information ===---
Package Type Monolithic
Maximum Activate Count Unlimited
Post Package Repair One row per bank group
Soft PPR Not Supported
Module Nominal Voltage 1.2 V
Thermal Sensor No
---=== Physical Characteristics ===---
Module Height 30 mm
Module Thickness 2 mm front, 2 mm back
Module Reference Card E revision 1
---=== Manufacturer Data ===---
Module Manufacturer Wilk Elektronik S.A.
Manufacturing Date 2017-W06
Part Number GR2133S464L15/16G
Number of SDRAM DIMMs detected and decoded: 1
dmesg を再度実行し、この使用済み/予約済みメモリについて計算を行いました。計算結果が正しいことを願いますが、あまり正確ではないようです。
$ dmesg | grep 'BIOS-e820: \[mem' | sed -r 's/.*mem (0x.*)-(0x.*)\] (.*)/\1|\2|\3/g' | awk -F '|' '{printf "%10s %15.2f MB\n", $3, (strtonum($2) - strtonum($1)) / 1024/1024 }'
usable 0.62 MB
reserved 0.01 MB
reserved 0.12 MB
usable 798.46 MB
ACPI NVS 0.00 MB
reserved 80.34 MB
ACPI data 0.24 MB
ACPI NVS 6.41 MB
reserved 137.54 MB
reserved 256.00 MB
reserved 0.07 MB
reserved 0.00 MB
reserved 0.00 MB
reserved 16.00 MB
usable 6626.18 MB
reserved 8701.82 MB
約 9G が予約されているようですが、理由はわかりません...
// 編集 2
今では、非常に奇妙な状況になっています。私はちょうど今、ラップトップ サービスにいて、彼らが所有する他のメモリ チップをいくつかテストしましたが、BIOS では常に正しい値が表示されますが、Linux ではそうではありません。
- 古い1x16Gを使用している場合 - OSは7Gと表示します
- 古い2x16Gを使用している場合 - OSは17Gと表示します
- サービスから1x8Gを使用する場合 - 7Gが表示されます
- サービスから1x16Gを使用する場合 - 7Gと表示
これはただ奇妙だ。
// 編集 3
しまった。メモリが半分しか表示されない原因が分かった気がする。
Kubuntu 21.04 USB バージョンをダウンロードして起動しました。
- レガシーモード(UEFIなし) - メモリの半分を表示
- UEFIモード - すべてのメモリを表示
私の今の疑問は、なぜなのかということです。
答え1
何が起こっているのかようやくわかったので、自分の質問に答えます。
TLDR;
レガシー ブートを使用していたため、Linux はメモリ チップあたり最大 8 GB を報告しました。UEFI ブートを使用すると、Linux はチップあたりフル メモリを表示します。
全文は誰かの役に立つかもしれない
しばらく前にこの Dell ラップトップを入手しました。32G RAM (2x16G)、4 コア i7、512G SSD などの優れた仕様でした。Linux Mint 19 をインストールしましたが、ほとんどの場合問題なく動作していました。2 つのブラウザー ウィンドウに複数のタブ、3 つの IDE インスタンス、Youtube、ビデオ通話などを同時に使用するなど、アプリを頻繁に使用すると、1 日に 1 回か 2 回キャッシュが溜まりました。クラッシュすると「壊れたテレビのような」ディスプレイが表示されるため、症状はグラフィックの問題のように見えました。ラップトップを復活させるには、ハード リセットを行うしかありませんでした。
クラッシュが数回発生した後、温度、CPU 使用率、メモリ使用率などを監視することにしました。このとき初めて、OS が BIOS に表示される実際のメモリの約半分を表示していることに気付きました。これは、深刻なメモリの問題を示唆していました。
興味深いのは、dmidecode
常に正しい値が表示されることです。また、dmesg
カーネルはメモリがいっぱいになっていることを認識していますが、使用可能メモリの約半分しか報告していないことも示しています。
このラップトップでいくつかテストをすることにし、まずはデルの診断ツールと memtest86 を実行することにしました。どちらのツールも 32G RAM を示し、メモリ テスト フェーズの数分後に失敗しました。症状は以前と同じです。メモリの問題であることは 99% 確信していました。
その後、さまざまなメモリ チップ構成をテストしましたが、どちらのスロットであっても、両方のメモリ チップが挿入された場合にのみ失敗しました。両方とも正常のように見えますが (すべてのチップが memtest86 に合格しました)、Dell ハードウェアと組み合わせるとうまく動作しません。
したがって、クラッシュを修正するには、メモリ スロットを 1 つだけ使用すれば済みます。
クラッシュはなくなりましたが、OS は 16 GB が挿入されているのに 8 GB の RAM しか報告しませんでした。これは、OS がすぐにスワップを使い始め、まったく使用できない状態になったため問題でした。
レポートが正常かどうかを確認するために、まったく異なるメモリ チップをいくつかチェックすることにしました。
- 古い2つの16Gチップ - 17G RAMの報告
- 8Gチップ1個 - 8G RAMを報告
- 16G チップ (以前のものとは異なります) - 8 GB と報告 (一体何ですか!?)
すべての構成において、memtest86 と BIOS は正しい RAM を表示します。つまり、これは OS の問題です。しかし、なぜでしょうか?
後に @Linuxセキュリティフリーク提案に従って、Ubuntu ライブ USB を起動して、そこに何が表示されるかを確認してみました。Dell のワンタイム ブートでは、USB、レガシー、UEFI の 2 つの起動オプションが示されています。最初に UEFI を試したところ、RAM の容量は正しく、16 GB でした。次にレガシー モードを試したところ、なんと 8 GB しかありませんでした。
私の問題はUEFIブートなしでインストールされたOSによって引き起こされたライブ USB ブートで問題が発生したため、UEFI をオフにした可能性がありますが、よくわかりません。
私にとって最大の謎は、なぜそれが OS カーネルにとって重要なのかということです。
"修理"
これをすべて修正するために、BIOS で UEFI を有効にして Kubuntu をインストールしました。これでメモリが正しく報告されるようになりました...