Score:0

CentOS 8 ขาด RAM จำนวนมากบน VPS

ธง us

CentOS 8 ทำงานบน VPS ที่มี RAM 1GB

dmesg แสดง:

หน่วยความจำ: 216012K/1048040K พร้อมใช้งาน

ดังนั้นฉันเชื่อว่า BIOS เห็น 1,073,192,960 ไบต์ จากนั้นเป็น ฟรี -b อ่าน RAM มีทั้งหมด 997,236,736 ไบต์

ด้วยวิธีนี้ เราจะเห็นช่องว่าง 75,956,224=1,073,192,960-997,236,736 ไบต์ กล่าวอีกนัยหนึ่งคือ 72+ MiB ของหน่วยความจำ 'ใช้ไม่ได้'

จะนำหน่วยความจำนั้นกลับมาที่ OS ได้อย่างไร หรือจะเรียนรู้ว่ามัน 'ซ่อนอยู่' ได้อย่างไร

BTW kdump ถูกปิดใช้งาน: cat /sys/kernel/kexec_crash_size

0

UPD:
จุดเริ่มต้นของ dmesg เกี่ยวกับหน่วยความจำ:

แผนผัง RAM จริงที่ BIOS ให้มา:
BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] ใช้งานได้
BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] สงวนไว้
BIOS-e820: [mem 0x00000000000f0000-0x00000000000ffff] สงวนไว้
BIOS-e820: [mem 0x0000000000100000-0x000000003ffdbfff] ใช้งานได้
BIOS-e820: [mem 0x000000003ffdc000-0x000000003ffffffff] สงวนไว้
BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] สงวนไว้
BIOS-e820: [mem 0x00000000ffc0000-0x00000000ffffffff] สงวนไว้
การป้องกัน NX (Execute Disable): ทำงานอยู่
นำเสนอ SMBIOS 2.8
DMI: Red Hat KVM, BIOS 1.11.0-2.el7 04/01/2014
ตรวจพบไฮเปอร์ไวเซอร์: KVM
kvm-clock: ใช้ msrs 4b564d01 และ 4b564d00
นาฬิกา kvm: ซีพียู 0, msr a001001, นาฬิกาซีพียูหลัก
kvm-clock: ใช้การชดเชยตามกำหนดการของ 7965121487 รอบ
แหล่งสัญญาณนาฬิกา: kvm-clock: มาสก์: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns
tsc: ตรวจพบโปรเซสเซอร์ 2199.996 MHz
e820: อัปเดต [mem 0x00000000-0x00000fff] ใช้งานได้ ==> สงวนไว้
e820: ลบ [mem 0x000a0000-0x000fffff] ที่ใช้งานได้
last_pfn = 0x3ffdc max_arch_pfn = 0x400000000
ประเภทเริ่มต้น MTRR: การเขียนกลับ
เปิดใช้งานช่วงคงที่ MTRR:
  00000-9FFFF เขียนกลับ
  A0000-BFFFF ใช้งานไม่ได้
  C0000-FFFFFF ป้องกันการเขียน
เปิดใช้งานช่วงตัวแปร MTRR:
  0 ฐาน 000080000000 มาสก์ 3FFF80000000 ใช้งานไม่ได้
  1 พิการ
  2 ปิดใช้งาน
  3 ปิดการใช้งาน
  4 ปิดการใช้งาน
  5 ปิดการใช้งาน
  6 ปิดการใช้งาน
  7 ปิดการใช้งาน
x86/PAT: การกำหนดค่า [0-7]: WB WC UC- UC WB WP UC- WT
kexec: สำรองหน่วยความจำ 1M ต่ำสำหรับ crashkernel
การใช้หน้า GB สำหรับการแมปโดยตรง
BRK [0x0a201000, 0x0a201fff] PGTABLE
BRK [0x0a202000, 0x0a202fff] PGTABLE
BRK [0x0a203000, 0x0a203fff] PGTABLE
BRK [0x0a204000, 0x0a204fff] PGTABLE
BRK [0x0a205000, 0x0a205fff] PGTABLE
RAMDISK: [หน่วยความจำ 0x3506f000-0x3682ffff]
ACPI: ปิดใช้งานการตรวจสอบความถูกต้องของตารางก่อนกำหนด
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: ที่อยู่ APIC ท้องถิ่น 0xfee00000
ไม่พบการกำหนดค่า NUMA
ปลอมโหนดที่ [mem 0x0000000000000000-0x000000003ffdbfff]
NODE_DATA(0) จัดสรร [mem 0x3ffb2000-0x3ffdbfff]
เคอร์เนลผิดพลาด: ค่าหน่วยความจำที่คาดไว้
ช่วงโซน:
  DMA [บันทึก 0x0000000000001000-0x0000000000ffffff]
  DMA32 [บันทึก 0x0000000001000000-0x000000003ffdbfff]
  ว่างเปล่าปกติ
  อุปกรณ์ว่างเปล่า
โซนที่เคลื่อนย้ายได้เริ่มต้นสำหรับแต่ละโหนด
ช่วงโหนดหน่วยความจำต้น
  โหนด 0: [บันทึก 0x0000000000001000-0x000000000009efff]
  โหนด 0: [บันทึก 0x0000000000100000-0x000000003ffdbfff]
หน้าโครงสร้างเป็นศูนย์ในช่วงที่ไม่พร้อมใช้งาน: 134 หน้า
โหนดการตั้งค่า Initmem 0 [mem 0x0000000000001000-0x000000003ffdbfff]
บนโหนด 0 รวมเพจ: 262010
  โซน DMA: 64 หน้าที่ใช้สำหรับ memmap
  โซน DMA: สงวนไว้ 158 หน้า
  โซน DMA: 3998 หน้า ชุด ​​LIFO:0
  โซน DMA32: 4032 หน้าที่ใช้สำหรับ memmap
  โซน DMA32: 258012 หน้า LIFO ชุด:63
ACPI: PM-Timer พอร์ต IO: 0x608
ACPI: ที่อยู่ APIC ท้องถิ่น 0xfee00000
ACPI: LAPIC_NMI (acpi_id[0xff] dfl dfl lint[0x1])
IOAPIC[0]: apic_id 0 เวอร์ชัน 17 ที่อยู่ 0xfec00000 GSI 0-23
ACPI: INT_SRC_OVR (บัส 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: INT_SRC_OVR (บัส 0 bus_irq 5 global_irq 5 ระดับสูง)
ACPI: INT_SRC_OVR (บัส 0 bus_irq 9 global_irq 9 ระดับสูง)
ACPI: INT_SRC_OVR (บัส 0 bus_irq 10 global_irq 10 ระดับสูง)
ACPI: INT_SRC_OVR (บัส 0 bus_irq 11 global_irq 11 ระดับสูง)
ACPI: IRQ0 ใช้โดยการแทนที่
ACPI: IRQ5 ใช้โดยการแทนที่
ACPI: IRQ9 ใช้โดยการแทนที่
ACPI: IRQ10 ใช้โดยการแทนที่
ACPI: IRQ11 ใช้โดยการแทนที่
การใช้ ACPI (MADT) สำหรับข้อมูลการกำหนดค่า SMP
smpboot: อนุญาต 87 CPU, 86 hotplug CPU
PM: หน่วยความจำ nosave ที่ลงทะเบียน: [mem 0x00000000-0x00000fff]
PM: หน่วยความจำ nosave ที่ลงทะเบียน: [mem 0x0009f000-0x0009ffff]
PM: หน่วยความจำ nosave ที่ลงทะเบียน: [mem 0x000a0000-0x000effff]
PM: หน่วยความจำ nosave ที่ลงทะเบียน: [mem 0x000f0000-0x000fffff]
[mem 0x40000000-0xfeffbfff] สำหรับอุปกรณ์ PCI
...
หน่วยความจำ: 216012K/1048040K พร้อมใช้งาน (รหัสเคอร์เนล 12293K, 2225K rwdata, 7708K rodata, 2480K init, 14048K bss, 105512K สงวนไว้, 0K cma-สงวนไว้)
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=87, Nodes=1
การแยกตารางเคอร์เนล/หน้าผู้ใช้: เปิดใช้งาน
ftrace: จัดสรร 38570 รายการใน 151 หน้า
ftrace: จัดสรร 151 หน้ากับ 5 กลุ่ม
John Mahowald avatar
cn flag
สถาปัตยกรรมใด x86, ARM? อาจไม่ใช่ POWER หากคุณอ้างถึง BIOS
Nikita Kipriyanov avatar
za flag
เมื่อระบบบู๊ต ระบบจะพิมพ์การใช้งานหน่วยความจำออกมาก่อน เนื่องจาก "เฟิร์มแวร์" รายงานไปยังระบบปฏิบัติการ หากต้องการทราบ ให้อ่านส่วนเริ่มต้นของ `dmesg` นั่นอาจอธิบายหน่วยความจำตามที่ลีนุกซ์เห็นและวิธีที่มันใช้หน่วยความจำนั้น หากคุณใส่สิ่งนี้ลงในคำถาม ฉันจะพยายามอธิบายให้คุณทราบ
us flag
@จอห์น มาฮาวล์ด x86
us flag
@NikitaKipriyanov ฉันได้อัปเดตโพสต์ด้วยเอาต์พุต `dmesg`
Score:0
ธง ar

หน่วยความจำบางส่วนถูกเก็บไว้เพื่อสำรองโดยระบบปฏิบัติการเพื่อทำงานในระดับต่ำ กรุณาลอง dmesg | grep "หน่วยความจำ: "` คำสั่งเพื่อตรวจสอบหน่วยความจำที่สงวนไว้และรายละเอียดอื่นๆ

ตรวจสอบเอกสารนี้เพื่ออ่านเพิ่มเติม -

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

us flag
หน่วยความจำ: 216012K/1048040K พร้อมใช้งาน (รหัสเคอร์เนล 12293K, 2225K rwdata, 7708K rodata, 2480K init, 14048K bss, 105512K สงวนไว้, 0K cma-สงวนไว้) ฉันไม่รู้ว่าจะเอา 72 M ออกจากตัวเลขเหล่านี้ได้อย่างไร
Nikita Kipriyanov avatar
za flag
*หน่วยความจำสำรอง* ที่อธิบายไว้ในเอกสารนั้นไม่ได้สงวนไว้โดย Linux ควรเข้าใจว่าเป็นหน่วยความจำสำรอง *ช่วงที่อยู่* พื้นที่นั้นสงวนไว้โดย *ฮาร์ดแวร์* และจัดไว้สำหรับอุปกรณ์ที่แมปหน่วยความจำบางรุ่นเท่านั้น เมื่อคุณเขียนไปยังที่อยู่เหล่านี้ ระบบจะใส่ข้อมูลไปยังบัส PCI (หรือ AMBA หรือสถาปัตยกรรมใดก็ตามที่คุณใช้) แทนการส่งไปยัง RAM การสื่อสารกับอุปกรณ์นี้คาดว่าจะดำเนินการโดยไดรเวอร์อุปกรณ์ OS บ่อยครั้งที่ช่วงหน่วยความจำเหล่านั้นไม่ได้แคชไว้ (CPU จะอ่านโดยตรงจากอุปกรณ์เสมอ และจะไม่เก็บข้อมูลนั้นไว้ภายในบรรทัดแคช)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา