Puncte:0

CentOS 8 pierde o cantitate semnificativă de memorie RAM pe VPS

drapel us

CentOS 8 rulează pe un VPS cu 1 GB RAM.

dmesg arată:

Memorie: 216012K/1048040K disponibilă

Deci cred că BIOS-ul vede 1.073.192.960 de octeți. Apoi, ca liber -b citește, RAM are 997.236.736 de octeți în total.

În acest fel, putem vedea un interval 75.956.224=1.073.192.960-997.236.736 de octeți. Cu alte cuvinte, 72+ MiB de memorie „inutilizabilă”.

Cum să aduci acea memorie înapoi la sistemul de operare? Sau cum să înveți unde este „ascuns?”

BTW, kdump este dezactivat: cat /sys/kernel/kexec_crash_size

0

UPD:
Începutul dmesg-ului referitor la memorie:

Hartă RAM fizică furnizată de BIOS:
BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] utilizabil
BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] rezervat
BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] rezervat
BIOS-e820: [mem 0x0000000000100000-0x000000003ffdbfff] utilizabil
BIOS-e820: [mem 0x000000003ffdc000-0x000000003fffffff] rezervat
BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] rezervat
BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] rezervat
Protecție NX (Execute Disable): activă
SMBIOS 2.8 prezent.
DMI: Red Hat KVM, BIOS 1.11.0-2.el7 04/01/2014
Hypervisor detectat: KVM
kvm-clock: utilizând msrs 4b564d01 și 4b564d00
ceas kvm: CPU 0, msr a001001, ceas CPU primar
kvm-clock: folosind offset programat de 7965121487 cicluri
clocksource: kvm-clock: mask: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns
tsc: Procesor detectat de 2199,996 MHz
e820: actualizare [mem 0x00000000-0x00000fff] utilizabil ==> rezervat
e820: eliminați [mem 0x000a0000-0x000fffff] utilizabil
last_pfn = 0x3ffdc max_arch_pfn = 0x400000000
Tip implicit MTRR: rescriere
Intervalele fixe MTRR activate:
  00000-9FFFF rescriere
  A0000-BFFFF necachabilă
  C0000-FFFFF protejare la scriere
Intervalele variabile MTRR activate:
  0 bază 000080000000 mască 3FFF80000000 uncachable
  1 dezactivat
  2 cu handicap
  3 dezactivate
  4 cu handicap
  5 cu handicap
  6 cu handicap
  7 cu handicap
x86/PAT: Configurație [0-7]: WB WC UC- UC WB WP UC- WT
kexec: Rezervarea 1M scăzut de memorie pentru crashkernel
Utilizarea paginilor GB pentru maparea directă
BRK [0x0a201000, 0x0a201fff] PGTABLE
BRK [0x0a202000, 0x0a202fff] PGTABLE
BRK [0x0a203000, 0x0a203fff] PGTABLE
BRK [0x0a204000, 0x0a204fff] PGTABLE
BRK [0x0a205000, 0x0a205fff] PGTABLE
DISK RAM: [mem 0x3506f000-0x3682ffff]
ACPI: verificarea sumei de verificare timpurie a tabelului a fost dezactivată
ACPI: RSDP 0x00000000000F6280 000014 (v00 BOCHS)
ACPI: RSDT 0x000000003FFE348A 00002C (v01 BOCHS BXPCRSDT 00000001 BXPC 00000001)
ACPI: FACP 0x000000003FFE30EE 000074 (v01 BOCHS BXPCFACP 00000001 BXPC 00000001)
ACPI: DSDT 0x000000003FFE0040 0030AE (v01 BOCHS BXPCDSDT 00000001 BXPC 00000001)
ACPI: FACS 0x000000003FFE0000 000040
ACPI: APIC 0x000000003FFE3162 000328 (v01 BOCHS BXPCAPIC 00000001 BXPC 00000001)
ACPI: Adresă APIC locală 0xfee00000
Nu a fost găsită nicio configurație NUMA
Falsificarea unui nod la [mem 0x0000000000000000-0x000000003ffdbfff]
NODE_DATA(0) alocat [mem 0x3ffb2000-0x3ffdbfff]
crashkernel: valoarea memoriei așteptată
Domenii de zonă:
  DMA [mem 0x0000000000001000-0x0000000000ffffff]
  DMA32 [mem 0x0000000001000000-0x000000003ffdbfff]
  Normal gol
  Dispozitiv gol
Pornire zonă mobilă pentru fiecare nod
Intervalele timpurii de noduri de memorie
  nodul 0: [mem 0x0000000000001000-0x000000000009efff]
  nodul 0: [mem 0x0000000000100000-0x000000003ffdbfff]
Pagina cu structură zero în intervale indisponibile: 134 de pagini
Nodul de configurare Initmem 0 [mem 0x0000000000001000-0x000000003ffdbfff]
Pe nodul 0 total pagini: 262010
  Zona DMA: 64 de pagini utilizate pentru memmap
  Zona DMA: 158 pagini rezervate
  Zona DMA: 3998 pagini, lot LIFO: 0
  Zona DMA32: 4032 pagini utilizate pentru memmap
  Zona DMA32: 258012 pagini, lot LIFO: 63
ACPI: PM-Timer Port IO: 0x608
ACPI: Adresă APIC locală 0xfee00000
ACPI: LAPIC_NMI (acpi_id[0xff] dfl dfl lint[0x1])
IOAPIC[0]: apic_id 0, versiunea 17, adresa 0xfec00000, GSI 0-23
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 nivel înalt)
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 nivel înalt)
ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 nivel înalt)
ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 nivel înalt)
ACPI: IRQ0 folosit de override.
ACPI: IRQ5 folosit de override.
ACPI: IRQ9 folosit de override.
ACPI: IRQ10 folosit de override.
ACPI: IRQ11 folosit de override.
Utilizarea ACPI (MADT) pentru informații de configurare SMP
smpboot: Permite 87 de procesoare, 86 de procesoare hotplug
PM: Memoria noastră înregistrată: [mem 0x00000000-0x00000fff]
PM: Memoria noastră înregistrată: [mem 0x0009f000-0x0009ffff]
PM: Memoria noastră înregistrată: [mem 0x000a0000-0x000effff]
PM: Memoria noastră înregistrată: [mem 0x000f0000-0x000fffff]
[mem 0x40000000-0xfeffbfff] disponibil pentru dispozitivele PCI
...
Memorie: 216012K/1048040K disponibilă (12293K cod kernel, 2225K rwdata, 7708K rodata, 2480K init, 14048K bss, 105512K rezervat, 0K cma-rezervat)
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPU=87, Nodes=1
Izolarea tabelelor kernel/utilizator: activată
ftrace: alocarea a 38570 de intrări în 151 de pagini
ftrace: alocate 151 pagini cu 5 grupuri
John Mahowald avatar
drapel cn
Ce arhitectură, x86, ARM? Probabil că nu POWER dacă te referi la BIOS.
Nikita Kipriyanov avatar
drapel za
Când sistemul pornește, mai întâi imprimă utilizarea memoriei, deoarece „firmware-ul” o raportează sistemului de operare. Pentru a vedea asta, citiți chiar începutul lui `dmesg`. Asta ar putea explica memoria așa cum este văzută de Linux și cum folosește acea memorie. Dacă puneți asta aici în întrebare, voi încerca să vă explic asta.
drapel us
@JohnMahowald, x86.
drapel us
@NikitaKipriyanov, am actualizat postarea cu ieșire `dmesg`.
Puncte:0
drapel ar

O parte din memorie este păstrată pentru rezervare de către sistemul de operare pentru a efectua sarcini de nivel scăzut. Te rog incearca dmesg | grep "Memorie: Comanda „` pentru a verifica memoria rezervată și alte detalii.

Verificați această documentație pentru citiri suplimentare -

https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt

drapel us
Memorie: 216012K/1048040K disponibilă (12293K cod kernel, 2225K rwdata, 7708K rodata, 2480K init, 14048K bss, 105512K rezervat, 0K cma-rezervat) Habar n-am cum să scot 72 M din aceste cifre.
Nikita Kipriyanov avatar
drapel za
*memoria rezervată* descrisă în acel document nu este rezervată de Linux. Ar trebui înțeles ca memorie rezervată *intervale de adrese*. Acel spațiu este rezervat de *hardware* și dedicat unor dispozitive mapate cu memorie. Când scrieți la aceste adrese, sistemul pune date în magistrala PCI (sau AMBA, sau orice folosește arhitectura dvs.) în loc să le trimită la RAM. Este de așteptat ca această comunicare cu dispozitivele să fie efectuată de driverele de dispozitiv OS. Adesea, acele intervale de memorie nu sunt stocate în cache (CPU citește întotdeauna direct de pe dispozitiv și nu reține niciodată acele date în liniile cache).

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.