"Consertar"

"Consertar"

Eu tenho um problema com o sistema operacional. Todas as ferramentas, incluindo o kernel, mostram apenas metade da minha memória RAM real. Eu tenho um chip de memória 16G instalado no meu laptop e tudo funciona bem no BIOS.

Algumas informações sobre configuração:

Hardware

Um notebook Dell XPS 15 9550 (Ligação PDF), que diz entre outras coisas:

Memória

Slots: Dois slots SODIMM

Tipo: DDR4

Velocidade: 2133 MHz

Configurações suportadas: 8 GB, 16 GB e 32 GB

CPU

Processador Intel® Core™ i7-6700HQ (Link da arca), que diz entre outras coisas:

Tamanho máximo de memória (dependendo do tipo de memória): 64 GB

Tipos de memória: DDR4-2133, LPDDR3-1866, DDR3L-1600

Informação do sistema

# 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

Núcleo

$ 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

Memória mostrada porfree

$ 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

Show de memória por /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

Memória mostrada pordmidecode

$ 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

Saída de 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]

Saída completa de dmesg:https://pastebin.com/B7qLzVvK

SO: Linux Mint 20 Ulyana

O que eu fiz antes de postar aqui:

  1. BIOS atualizada para a versão mais recente
  2. Memtest86 usado e ferramenta de diagnóstico Dell - tudo bem, BIOS mostra 16G
  3. Kernel atualizado para 5.11
  4. Eu tentei o Ubuntu 20.04 a partir de uma unidade USB e ele mostra 16G de RAM no aplicativo de monitor do sistema (de alguma forma, não consegui digitar nenhum caractere no formato do console compilado no teclado ou no USB one :)

Será porque não uso UEFI para inicializar?

O que posso fazer para depurar e corrigir isso? Obrigado.

//EDITAR

$ 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

Executei o dmesg novamente e fiz alguns cálculos sobre essa memória usada/reservada. Espero que estejam corretos, mas parecem mais menos corretos:

$ 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

Parece que cerca de 9G está reservado e não sei por que...

//EDITAR 2

Agora está ficando super estranho. Eu estava agora no serviço de laptop e testamos alguns outros chips de memória de sua propriedade, e o BIOS sempre mostra valores corretos, mas não o Linux:

  • ao usar meu antigo 1x16G - o sistema operacional mostra 7G
  • ao usar meu antigo 2x16G - o sistema operacional mostra 17G
  • ao usar 1x8G do serviço - mostra 7G
  • ao usar 1x16G do serviço - mostra 7G

Isso é simplesmente estranho.

//EDITAR 3

Caramba. Acho que encontrei a causa de mostrar apenas metade da memória.

Baixei a versão USB do Kubuntu 21.04 e inicializei:

  1. no modo legado (sem UEFI) - mostra metade da memória
  2. no modo UEFI - mostra toda a memória

Minha pergunta agora é por quê?

Responder1

Responderei minha própria pergunta, pois finalmente descobri o que estava acontecendo.

TLDR;

O Linux relatou um máximo de 8 GB por chip de memória porque eu estava usando a inicialização herdada. Ao usar a inicialização UEFI, o Linux mostra memória cheia por chip.


História completa, talvez seja útil para alguém

Comprei este laptop Dell há algum tempo. Ele tinha ótimas especificações como 32G RAM (2x16G), 4 núcleos i7, 512G SSD etc. Instalei o Linux Mint 19 e funcionou bem na maior parte do tempo. Ganhei uma ou duas vezes por dia quando havia uso intenso de aplicativos como duas janelas do navegador com várias guias, três instâncias de IDE, Youtube, videochamada, etc. Os sintomas pareciam problemas gráficos por causa de uma tela "semelhante a uma TV quebrada" quando travada. Somente a reinicialização total foi capaz de trazer o laptop de volta à vida.

Após alguns travamentos, decidi monitorar algumas temperaturas, uso de CPU, uso de memória, etc. Esta foi a primeira vez que percebi que o sistema operacional está mostrando cerca de metade da memória real mostrada no BIOS. Isso sugeriu alguns sérios problemas de memória.

O que é interessante dmidecodesempre mostra valores corretos. Também dmesgmostra que o kernel conhece a memória cheia, mas relata apenas metade da capacidade utilizável.

Decidi fazer alguns testes neste laptop e começar executando as ferramentas de diagnóstico da Dell e o memtest86. Ambas as ferramentas mostraram 32G de RAM e falharam após alguns minutos da fase de teste de memória. Os mesmos sintomas de antes. Eu tinha 99% de certeza de que era um problema de memória.

Depois disso, testei diferentes configurações de chips de memória e ele falhou somente quando ambos os chips de memória foram inseridos, independentemente dos slots. Parece que ambos estão bem (todos os chips passaram no memtest86), mas não funcionam bem quando combinados com hardware Dell.

Então, para consertar travamentos eu só precisei usar apenas um slot de memória.

As falhas desapareceram agora, mas o sistema operacional relatou apenas 8 GB de RAM com 16 GB inseridos. Isso foi um problema porque o sistema operacional estava começando a usar swap logo e estava bastante inutilizável.

Decidi verificar alguns chips de memória totalmente diferentes apenas para ver se os relatórios estão corretos.

  • antigos dois chips 16G - relata cerca de 17G RAM
  • um chip 8G - relata 8G RAM
  • Chip 16G (diferente dos anteriores) - reporte 8 GB (que diabos!?)

Em todas as configurações, o memtest86 e o ​​BIOS mostram a RAM correta. Portanto, este é um problema do sistema operacional. Mas por que?

Depois de @LinuxSecurityFreaksugestão, tentei inicializar o Ubuntu live USB para ver o que é mostrado lá. A inicialização única da Dell mostra duas opções de inicialização possíveis para USB, legado e UEFI. Tentei primeiro UEFI e a quantidade de RAM estava correta, 16 GB. Então tentei o modo legado e boom! Apenas 8 GB.

Então meu problema foi causado pelo sistema operacional instalado sem inicialização UEFI. Provavelmente desliguei o UEFI porque tive alguns problemas com a inicialização USB ao vivo, mas não tenho certeza.

O maior mistério para mim é por que isso é importante para o kernel do sistema operacional?

"Consertar"

Para consertar tudo isso acabei de instalar o Kubuntu com UEFI habilitado no BIOS. Agora a memória é relatada corretamente ...

informação relacionada