“使固定”

“使固定”

我的操作系统有问题。包括内核在内的所有工具仅显示我实际 RAM 内存的一半。我的笔记本电脑中安装了一颗 16G 内存芯片,BIOS 中显示一切正常。

有关配置的一些信息:

硬件

笔记本电脑 Dell XPS 15 9550 (PDF链接),除其他外,它还说:

记忆

插槽:两个 SODIMM 插槽

类型:DDR4

速度:2133兆赫

支持的配置:8 GB、16 GB 和 32 GB

中央处理器

英特尔® 酷睿™ 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]

完整输出dmesghttps://pastebin.com/B7qLzVvK

操作系统:Linux Mint 20 Ulyana

我在这里发帖之前做了什么:

  1. BIOS更新至最新版本
  2. 使用memtest86和戴尔诊断工具-一切正常,BIOS显示16G
  3. 升级内核至5.11
  4. 我已经从 USB 驱动器尝试过 Ubuntu 20.04,它在系统监视器应用程序中显示 16G RAM(不知何故,我无法在键盘中或从 USB One 中以控制台形式输入任何字符:/)

难道是因为我没有使用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 时 - 操作系统显示 7G
  • 使用我的旧 2x16G 时 - 操作系统显示 17G
  • 使用服务中的 1x8G 时 - 显示 7G
  • 使用服务中的 1x16G 时 - 显示 7G

这很奇怪。

// 编辑3

该死的。我想我找到了只显示一半内存的原因。

我已经下载了 Kubuntu 21.04 USB 版本并启动它:

  1. 在传统模式下(无 UEFI)- 显示一半内存
  2. 在 UEFI 模式下 - 显示所有内存

我现在的问题是为什么?

答案1

我会回答我自己的问题,因为我终于发现发生了什么。

太长了;

Linux 报告每个内存芯片的最大容量为 8 GB,因为我使用的是传统引导。使用 UEFI 引导时,Linux 显示每个芯片的完整内存。


完整的故事,也许对某人有用

我不久前买了这台戴尔笔记本电脑。它有很好的规格,如 32G RAM (2x16G)、4 核 i7、512G SSD 等。我安装了 Linux Mint 19,大部分时间都运行良好。当大量使用应用程序时,例如同时使用两个带有多个选项卡的浏览器窗口、三个 IDE、Youtube、视频通话等应用程序时,每天会兑现一到两次。症状看起来像是图形问题,因为崩溃时显示“像电视一样损坏”。只有硬重置才能使笔记本电脑起死回生。

在几次崩溃之后,我决定监控一些温度、CPU 使用情况、内存使用情况等。这是我第一次注意到操作系统显示的内存大约是 BIOS 中实际内存显示的一半。这表明存在一些严重的记忆问题。

有趣的东西dmidecode总是显示出正确的价值观。还dmesg表明内核知道完整的内存,但仅报告大约一半的可用内存。

我决定在这台笔记本电脑上进行一些测试,首先运行戴尔诊断工具和 memtest86。两个工具都显示 32G RAM,但在内存测试阶段几分钟后都失败了。症状和以前一样。我 99% 确定这是内存问题。

此后,我测试了不同的内存芯片配置,只有当两个内存芯片都插入时,无论哪个插槽,它都会失败。看起来它们都很好(每个芯片都通过了 memtest86),但与戴尔硬件一起使用时效果不佳。

因此,为了修复崩溃,我只需要使用一个内存插槽。

现在崩溃已经消失,但操作系统仅报告 8 GB RAM(已插入 16 GB)。这是一个问题,因为操作系统很快就开始使用交换并且非常无法使用。

决定检查一些完全不同的内存芯片,只是为了看看报告是否正常。

  • 旧的两个 16G 芯片 - 报告约为 17G RAM
  • 一颗 8G 芯片 - 报告 8G RAM
  • 16G 芯片(与以前的不同)-报告 8 GB(到底是什么!?)

在所有配置中,memtest86 和 BIOS 显示正确的 RAM。所以这是一个操作系统问题。但为什么?

之后 @Linux安全怪胎建议,我尝试启动 Ubuntu live USB 来查看那里显示的内容。戴尔一次性引导显示 USB、传统和 UEFI 两种可能的引导选项。我第一次尝试 UEFI,RAM 大小是正确的,16 GB。然后我尝试了传统模式,然后繁荣!仅 8 GB。

所以我的问题是由安装的操作系统没有 UEFI 启动引起的。我可能关闭了 UEFI,因为我在实时 USB 启动时遇到了一些问题,但我不确定。

对我来说最大的谜团是为什么它对操作系统内核很重要?

“使固定”

为了解决这一切,我刚刚安装了 Kubuntu,并在 BIOS 中启用了 UEFI。现在内存已正确报告...

相关内容