Portál AbcLinuxu, 7. května 2025 14:48

Dotaz: Jak nastavit dostupnou paměť na 64 GB z celkových 256 GB fyzických na serveru

28.5.2024 19:43 w
Jak nastavit dostupnou paměť na 64 GB z celkových 256 GB fyzických na serveru
Přečteno: 800×
Odpovědět | Admin
Ahoj. Nevěděl by někdo, jak nastavit pro systém alokovatelnou paměť RAM na 64 GB? Přes kernel boot parametr "mem=64G" se dostanu na cca 61 GB (MemTotal: 64292400 kB). Předpokládám, že do toho systém ještě započítává 256 MB crash kernel, ale i tak je to o 3 GB méně než nastavené.

Asi dokážu pochopit, že když to nijak nelimituji a mám 256 GB stroj, tak proč vidím celkem cca 251 GB RAM. Něco si vezme crash kernel alokace, něco bios a hromadu z toho nejspíš struct pages (64 bajtové myslím), které kernel používá pro každou 4 kB stránku paměti.

Ale jak se došlo při mem=64G na hodnotu 61 GB fakt nechápu. Dokáže někdo vysvětlit, poradit? Nechci to dělat metodou pokus/omyl (přidávat, dokud nebudu mít v systému 64 GB RAM).

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Pavel 'TIGER' Růžička avatar 28.5.2024 20:59 Pavel 'TIGER' Růžička | skóre: 54
Rozbalit Rozbalit vše Re: Jak nastavit dostupnou paměť na 64 GB z celkových 256 GB fyzických na serveru
Odpovědět | | Sbalit | Link | Blokovat | Admin
A co ti vyjede:
cat /proc/meminfo
28.5.2024 23:48 w
Rozbalit Rozbalit vše Re: Jak nastavit dostupnou paměť na 64 GB z celkových 256 GB fyzických na serveru
MemTotal:       64292400 kB
MemFree:          690388 kB
MemAvailable:   40810968 kB
Buffers:            8496 kB
Cached:         43664724 kB
SwapCached:        27788 kB
Active:          3213960 kB
Inactive:       58819692 kB
Active(anon):    2482328 kB
Inactive(anon): 19176320 kB
Active(file):     731632 kB
Inactive(file): 39643372 kB
Unevictable:        3072 kB
Mlocked:               0 kB
SwapTotal:       4194300 kB
SwapFree:        3915252 kB
Dirty:               120 kB
Writeback:             0 kB
AnonPages:      18228036 kB
Mapped:           296532 kB
Shmem:           3298200 kB
KReclaimable:     462096 kB
Slab:             862964 kB
SReclaimable:     462096 kB
SUnreclaim:       400868 kB
KernelStack:       30624 kB
PageTables:        70744 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    36340500 kB
Committed_AS:   43234340 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      165440 kB
VmallocChunk:          0 kB
Percpu:            46240 kB
HardwareCorrupted:     0 kB
AnonHugePages:  16693248 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:     1045592 kB
DirectMap2M:    40546304 kB
DirectMap1G:    26214400 kB
28.5.2024 21:08 X
Rozbalit Rozbalit vše Re: Jak nastavit dostupnou paměť na 64 GB z celkových 256 GB fyzických na serveru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Osobne, neres hovadiny a delej neco uzitecneho, ok? Prakticky, nastuduj si to.
31.5.2024 15:15 uprimny
Rozbalit Rozbalit vše Re: Jak nastavit dostupnou paměť na 64 GB z celkových 256 GB fyzických na serveru
Osobne, ridis se tak i sam? Prakticky Alibista, ok?
29.5.2024 03:19 BFU
Rozbalit Rozbalit vše Re: Jak nastavit dostupnou paměť na 64 GB z celkových 256 GB fyzických na serveru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co vypise '$ dmesg | grep Memory:.*reserved' ?

Je mozne, ze tu pamet pouziva swiotlb, pak je "reserved" klidne v radu jednotek GiB.

Pokud je kernel zkompilovany s CONFIG_DYNAMIC_SWIOTLB=y , pak se da zacit se swiotlb s 1 slabem , viz 'swiotlb=' parametr https://docs.kernel.org/admin-guide/kernel-parameters.html?highlight=swiotlb . Zkusil bych pridat 'swiotlb=1' do kernelove command line nekde v /etc/default/grub , nicmene ten swiotlb pak stejne naroste podle toho jak ho kernel potrebuje.
29.5.2024 23:53 w
Rozbalit Rozbalit vše Re: Jak nastavit dostupnou paměť na 64 GB z celkových 256 GB fyzických na serveru
No je tam spousta reportů od fw (e820). Dle https://unix.stackexchange.com/questions/557368/bios-e820-in-dmesg-how-do-i-calculate-the-memory-range-from-addresses jsem to zkoušel spočítat a stejně se nikdy nedoberu přesnému výsledku. Nakonec jsem to vyřešil metodou pokus omyl, protože je to dost komplexní a asi to nejde přímo jednoduše vypočítat. Trefil jsem to pokus-omyl s nějakou odchylkou pár MB, což už mi stačí, resp. tomu softwaru, kvůli kterému tohle cvičení dělám :)
30.5.2024 21:47 BFU
Rozbalit Rozbalit vše Re: Jak nastavit dostupnou paměť na 64 GB z celkových 256 GB fyzických na serveru
Melo by to vypadat nejak takto pro 64 GiB masinu a 256 GiB masinu:

Memory: 2950156K/67003356K available (16384K kernel code, 2365K rwdata, 10660K rodata, 3996K init, 3560K bss, 1464092K reserved, 0K cma-reserved)

Memory: 2715560K/268323132K available (16384K kernel code, 2363K rwdata, 10544K rodata, 3960K init, 3628K bss, 4674988K reserved, 0K cma-reserved)
Řešení 1× (Ruža Becelin)
29.5.2024 11:04 Livan
Rozbalit Rozbalit vše Re: Jak nastavit dostupnou paměť na 64 GB z celkových 256 GB fyzických na serveru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tipuju, že problém je v rozdílném počítání GB. Při výpočtu s dělitelem 1000 a 1024. RAM 64 GB s dělitelem 1024 dává cca 61 GB. při děliteli 1000 je to 64 GB.
29.5.2024 23:47 w
Rozbalit Rozbalit vše Re: Jak nastavit dostupnou paměť na 64 GB z celkových 256 GB fyzických na serveru
To byla také má první úvaha, ale to sedí jen pokud se vynásobí až na KB a pak vydělí dle SI. A jen pro 64 GB. Pro větší velikosti RAM už ten výpočet nesedí s realitou. Koukal jsem na dokumentaci kernelu a to omezení na ram funguje jako omezení adresy. Tzn. je to minus alokace hardwaru, crashkernel. Což by úplně ještě nesedělo, ale asi v tom budou i nějaké struktury jádra pro práci s pamětí.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.