LINUX.ORG.RU

Ядро неправильно определяет объём памяти в системе

 , ,


0

1

Столкнулся тут с забавной вещью. После обновления ядра до 6.3.4 на узлах кластера пропала память. free показывает

               total        used        free      shared  buff/cache   available
Mem:         3228592      120904     3052276         660       55412     2860604
Swap:              0           0           0

а должно быть

               total        used        free      shared  buff/cache   available
Mem:        16294464      120336    16118568         660       55560    15874324
Swap:              0           0           0

После разбирательства выяснил, что в 6.2 появилась опция CONFIG_EFI_HANDOVER_PROTOCOL, объявленная deprecated. Я её отключил и остался с тремя гигами памяти из 16-ти. Включив обратно, получил положенные 16 гигов. Хотелось бы понять, какого лешего так получается? На сервере эта опция отключена, никаких проблем нет. Ядра на узлы грузятся по сети, загрузчик - syslinux.efi, initrd нет.


в 6.2 появилась опция CONFIG_EFI_HANDOVER_PROTOCOL, объявленная deprecated

Странно звучит. Насколько я понял, deprecated не опция, а сам протокол — EFI handover protocol. А опцию ввели, чтобы можно было продолжать использовать этот протокол.

https://www.kernelconfig.io/config_efi_handover_protocol

greenman ★★★★★
()
Последнее исправление: greenman (всего исправлений: 4)

Выглядит странно. Но тут проблема, кмк, в том, что почему-то у тебя адресация становится 32битной и память больше 4 гигов не видна. А эта опция скорее всего просто как-то инициирует этот эффект. Посмотри что в sysctl, в /proc/meminfo

soomrack ★★★★★
()
Ответ на: комментарий от soomrack

Ну, вот при отключенной опции:

MemTotal:        3226472 kB
MemFree:         2922644 kB
MemAvailable:    2788472 kB
Buffers:               0 kB
Cached:           141420 kB
SwapCached:            0 kB
Active:            70124 kB
Inactive:          82604 kB
Active(anon):      16744 kB
Inactive(anon):     2776 kB
Active(file):      53380 kB
Inactive(file):    79828 kB
Unevictable:       10124 kB
Mlocked:           10124 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         21464 kB
Mapped:            21856 kB
Shmem:               660 kB
KReclaimable:      28984 kB
Slab:              49728 kB
SReclaimable:      28984 kB
SUnreclaim:        20744 kB
KernelStack:        2432 kB
PageTables:         1444 kB
SecPageTables:         0 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     1613236 kB
Committed_AS:      88764 kB
VmallocTotal:   34359738367 kB
VmallocUsed:        3264 kB
VmallocChunk:          0 kB
Percpu:             2880 kB
AnonHugePages:      2048 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
DirectMap4k:       11496 kB
DirectMap2M:     1271808 kB
DirectMap1G:     3145728 kB

Три гига. С адресацией всё нормально, вон VmallocTotal какой.

JaM
() автор топика
Последнее исправление: JaM (всего исправлений: 1)

объявленная deprecated.

Я её отключил

А кто сказал, что устаревшие вещи автоматом исчезнут сразу из всех исходников и больше не будут использоваться? Они маркируются как устаревшие, чтобы разрабы не использовали их в будущих версиях ядра

monkdt
()
Последнее исправление: monkdt (всего исправлений: 2)