Điểm:0

CentOS 8 misses a significant amount of RAM on VPS

lá cờ us

CentOS 8 is running on a VPS having 1GB RAM.

dmesg shows:

Memory: 216012K/1048040K available

So I believe BIOS sees 1,073,192,960 bytes. Then, as free -b reads, RAM has 997,236,736 bytes in total.

That way, we can see a gap 75,956,224=1,073,192,960-997,236,736 bytes. In other words, 72+ MiB of 'unusable' memory.

How to bring that memory back to OS? Or how to learn where it is 'hidden?'

BTW, kdump is disabled: cat /sys/kernel/kexec_crash_size

0

UPD:
The beginning of dmesg concerning memory:

BIOS-provided physical RAM map:
BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
BIOS-e820: [mem 0x0000000000100000-0x000000003ffdbfff] usable
BIOS-e820: [mem 0x000000003ffdc000-0x000000003fffffff] reserved
BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved
BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
NX (Execute Disable) protection: active
SMBIOS 2.8 present.
DMI: Red Hat KVM, BIOS 1.11.0-2.el7 04/01/2014
Hypervisor detected: KVM
kvm-clock: Using msrs 4b564d01 and 4b564d00
kvm-clock: cpu 0, msr a001001, primary cpu clock
kvm-clock: using sched offset of 7965121487 cycles
clocksource: kvm-clock: mask: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns
tsc: Detected 2199.996 MHz processor
e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
e820: remove [mem 0x000a0000-0x000fffff] usable
last_pfn = 0x3ffdc max_arch_pfn = 0x400000000
MTRR default type: write-back
MTRR fixed ranges enabled:
  00000-9FFFF write-back
  A0000-BFFFF uncachable
  C0000-FFFFF write-protect
MTRR variable ranges enabled:
  0 base 000080000000 mask 3FFF80000000 uncachable
  1 disabled
  2 disabled
  3 disabled
  4 disabled
  5 disabled
  6 disabled
  7 disabled
x86/PAT: Configuration [0-7]: WB  WC  UC- UC  WB  WP  UC- WT
kexec: Reserving the low 1M of memory for crashkernel
Using GB pages for direct mapping
BRK [0x0a201000, 0x0a201fff] PGTABLE
BRK [0x0a202000, 0x0a202fff] PGTABLE
BRK [0x0a203000, 0x0a203fff] PGTABLE
BRK [0x0a204000, 0x0a204fff] PGTABLE
BRK [0x0a205000, 0x0a205fff] PGTABLE
RAMDISK: [mem 0x3506f000-0x3682ffff]
ACPI: Early table checksum verification disabled
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: Local APIC address 0xfee00000
No NUMA configuration found
Faking a node at [mem 0x0000000000000000-0x000000003ffdbfff]
NODE_DATA(0) allocated [mem 0x3ffb2000-0x3ffdbfff]
crashkernel: memory value expected
Zone ranges:
  DMA      [mem 0x0000000000001000-0x0000000000ffffff]
  DMA32    [mem 0x0000000001000000-0x000000003ffdbfff]
  Normal   empty
  Device   empty
Movable zone start for each node
Early memory node ranges
  node   0: [mem 0x0000000000001000-0x000000000009efff]
  node   0: [mem 0x0000000000100000-0x000000003ffdbfff]
Zeroed struct page in unavailable ranges: 134 pages
Initmem setup node 0 [mem 0x0000000000001000-0x000000003ffdbfff]
On node 0 totalpages: 262010
  DMA zone: 64 pages used for memmap
  DMA zone: 158 pages reserved
  DMA zone: 3998 pages, LIFO batch:0
  DMA32 zone: 4032 pages used for memmap
  DMA32 zone: 258012 pages, LIFO batch:63
ACPI: PM-Timer IO Port: 0x608
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC_NMI (acpi_id[0xff] dfl dfl lint[0x1])
IOAPIC[0]: apic_id 0, version 17, address 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 high level)
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level)
ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level)
ACPI: IRQ0 used by override.
ACPI: IRQ5 used by override.
ACPI: IRQ9 used by override.
ACPI: IRQ10 used by override.
ACPI: IRQ11 used by override.
Using ACPI (MADT) for SMP configuration information
smpboot: Allowing 87 CPUs, 86 hotplug CPUs
PM: Registered nosave memory: [mem 0x00000000-0x00000fff]
PM: Registered nosave memory: [mem 0x0009f000-0x0009ffff]
PM: Registered nosave memory: [mem 0x000a0000-0x000effff]
PM: Registered nosave memory: [mem 0x000f0000-0x000fffff]
[mem 0x40000000-0xfeffbfff] available for PCI devices
...
Memory: 216012K/1048040K available (12293K kernel code, 2225K rwdata, 7708K rodata, 2480K init, 14048K bss, 105512K reserved, 0K cma-reserved)
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=87, Nodes=1
Kernel/User page tables isolation: enabled
ftrace: allocating 38570 entries in 151 pages
ftrace: allocated 151 pages with 5 groups
John Mahowald avatar
lá cờ cn
Kiến trúc nào, x86, ARM? Có lẽ không phải NGUỒN nếu bạn tham khảo BIOS.
Nikita Kipriyanov avatar
lá cờ za
Khi hệ thống khởi động, đầu tiên nó sẽ in ra việc sử dụng bộ nhớ khi "phần sụn" báo cáo nó cho HĐH. Để thấy điều đó, hãy đọc phần đầu của `dmesg`. Điều đó có thể giải thích bộ nhớ mà Linux nhìn thấy và cách nó sử dụng bộ nhớ đó. Nếu bạn đặt điều đó ở đây vào câu hỏi, tôi sẽ cố gắng giải thích điều đó cho bạn.
lá cờ us
@JohnMahowald, x86.
lá cờ us
@NikitaKipriyanov, tôi đã cập nhật bài đăng với đầu ra `dmesg`.
Điểm:0
lá cờ ar

Một số bộ nhớ được hệ điều hành dự trữ để thực hiện các tác vụ cấp thấp. Vui lòng thử dmesg | grep "Bộ nhớ: "` để kiểm tra bộ nhớ dành riêng và các chi tiết khác.

Kiểm tra tài liệu này để đọc thêm -

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

lá cờ us
Bộ nhớ: 216012K/1048040K khả dụng (12293K mã hạt nhân, 2225K rwdata, 7708K rodata, 2480K init, 14048K bss, 105512K dự trữ, 0K cma dự trữ) Tôi không biết làm thế nào để có được 72 M trong số những con số này.
Nikita Kipriyanov avatar
lá cờ za
*bộ nhớ dành riêng* được mô tả trong tài liệu đó không được Linux dành riêng. Nó nên được hiểu là bộ nhớ dành riêng *phạm vi địa chỉ*. Không gian đó được dành riêng bởi *phần cứng* và dành riêng cho một số thiết bị được ánh xạ bộ nhớ. Khi bạn ghi vào những địa chỉ này, hệ thống sẽ đưa dữ liệu vào bus PCI (hoặc AMBA, hoặc bất kỳ kiến ​​trúc nào của bạn sử dụng) thay vì gửi dữ liệu đó tới RAM. Giao tiếp này với các thiết bị dự kiến ​​sẽ được thực hiện bởi trình điều khiển thiết bị HĐH. Thường thì các phạm vi bộ nhớ đó không được lưu trong bộ nhớ cache (CPU luôn đọc trực tiếp từ thiết bị và không bao giờ giữ lại dữ liệu đó bên trong các dòng bộ nhớ cache).

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.