ฉันมีเซิร์ฟเวอร์ที่มีสเป็คต่อไปนี้: Dual AMD EPYC 7742, 1TB RAM, 8TB SWAP (Round-robin 8xNVME array), 144TB SSD Storage (72 ไดรฟ์มากกว่า 10 zpools)

uname -a

Linux host 5.4.44-1-pve #1 SMP PVE 5.4.44-1 (Fri, 12 Jun 2020 08:18:46 +0200) x86_64 GNU/Linux

เซิร์ฟเวอร์ได้ติดตั้ง Proxmox 6.2 และเป็นข้อมูลล่าสุด ณ วันที่ 02/07/20 โฮสต์มีตู้คอนเทนเนอร์ 1350 LXC & รักษาค่าเฉลี่ยโหลดที่ต่ำกว่า 1 ที่ตู้คอนเทนเนอร์ระดับนี้ RAM อยู่ที่ 800GB/1TB, SWAP อยู่ที่ 1.6TB/7.28TB

แต่ละคอนเทนเนอร์ถูกสร้างขึ้นจากอิมเมจ proxmox ubuntu 18.04 lxc & พวกมันทั้งหมดเป็นโคลนที่เหมือนกันเกือบทั้งหมด คอนเทนเนอร์ใช้อาร์เรย์ SWAP ที่รวดเร็วอย่างมาก เนื่องจากต้องการเพียง RAM สำหรับการคำนวณ 60 วินาทีเดียวเมื่อทำการบูท เมื่อสร้างเสร็จแล้ว ภายใต้แรงกดดันด้านหน่วยความจำที่เพียงพอ พวกเขาจะผลัก RAM ที่ใช้ไปเกือบทั้งหมดเข้าสู่ SWAP โดยต้องการเพียงการอ่านจาก SWAP เป็นครั้งคราวเท่านั้น

เมื่อสร้างคอนเทนเนอร์ LXC 1353 ฉันเห็นข้อผิดพลาดในการจัดสรร vmap ใน syslog:

Jul 02 20:34:53 host kernel: lxc-start: vmalloc: allocation failure: 4096 bytes, mode:0xcc0(GFP_KERNEL), nodemask=(null),cpuset=ns,mems_allowed=0-1
Jul 02 20:34:53 host kernel: CPU: 65 PID: 3438449 Comm: lxc-start Tainted: P           OE     5.4.44-1-pve #1
Jul 02 20:34:53 host kernel: Hardware name: Supermicro Super Server/H11DSi-NT, BIOS 2.0 09/25/2019
Jul 02 20:34:53 host kernel: Call Trace:
Jul 02 20:34:53 host kernel:  dump_stack+0x6d/0x9a
Jul 02 20:34:53 host kernel:  warn_alloc.cold.119+0x7b/0xdd
Jul 02 20:34:53 host kernel:  ? __get_vm_area_node+0x149/0x160
Jul 02 20:34:53 host kernel:  ? bpf_jit_alloc_exec+0xe/0x10
Jul 02 20:34:53 host kernel:  __vmalloc_node_range+0x1aa/0x270
Jul 02 20:34:53 host kernel:  ? bpf_jit_alloc_exec+0xe/0x10
Jul 02 20:34:53 host kernel:  module_alloc+0x82/0xe0
Jul 02 20:34:53 host kernel:  ? bpf_jit_alloc_exec+0xe/0x10
Jul 02 20:34:53 host kernel:  bpf_jit_alloc_exec+0xe/0x10
Jul 02 20:34:53 host kernel:  bpf_jit_binary_alloc+0x63/0xf0
Jul 02 20:34:53 host kernel:  ? emit_mov_reg+0xf0/0xf0
Jul 02 20:34:53 host kernel:  bpf_int_jit_compile+0x133/0x34d
Jul 02 20:34:53 host kernel:  bpf_prog_select_runtime+0xa8/0x130
Jul 02 20:34:53 host kernel:  bpf_prepare_filter+0x52e/0x5a0
Jul 02 20:34:53 host kernel:  bpf_prog_create_from_user+0xc5/0x110
Jul 02 20:34:53 host kernel:  ? hardlockup_detector_perf_cleanup.cold.9+0x1a/0x1a
Jul 02 20:34:53 host kernel:  do_seccomp+0x2bf/0x8d0
Jul 02 20:34:53 host kernel:  __x64_sys_seccomp+0x1a/0x20
Jul 02 20:34:53 host kernel:  do_syscall_64+0x57/0x190
Jul 02 20:34:53 host kernel:  entry_SYSCALL_64_after_hwframe+0x44/0xa9
Jul 02 20:34:53 host kernel: RIP: 0033:0x7f29737d6f59
Jul 02 20:34:53 host kernel: Code: 00 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 07 6f 0c 00 f7 d8 64 89 01 48
Jul 02 20:34:53 host kernel: RSP: 002b:00007ffc72a9e738 EFLAGS: 00000246 ORIG_RAX: 000000000000013d
Jul 02 20:34:53 host kernel: RAX: ffffffffffffffda RBX: 000055d0b17813b0 RCX: 00007f29737d6f59
Jul 02 20:34:53 host kernel: RDX: 000055d0b177fa90 RSI: 0000000000000000 RDI: 0000000000000001
Jul 02 20:34:53 host kernel: RBP: 000055d0b177fa90 R08: 000055d0b17813b0 R09: 000055d0b177ad00
Jul 02 20:34:53 host kernel: R10: 000055d0b178dfd0 R11: 0000000000000246 R12: 00007ffc72a9e7dc
Jul 02 20:34:53 host kernel: R13: 0000000000000000 R14: 00000000ffffffff R15: 000055d0b177ad00
Jul 02 20:34:53 host kernel: Mem-Info:
Jul 02 20:34:53 host kernel: active_anon:57085917 inactive_anon:92502441 isolated_anon:0
 active_file:17684788 inactive_file:8397670 isolated_file:0
 unevictable:167729 dirty:675 writeback:401 unstable:0
 slab_reclaimable:5604171 slab_unreclaimable:27013702
 mapped:5668112 shmem:56359 pagetables:1963891 bounce:0
 free:20376422 free_pcp:131976 free_cma:0
Jul 02 20:34:53 host kernel: Node 0 active_anon:111954916kB inactive_anon:172197032kB active_file:35764692kB inactive_file:17457324kB unevictable:399796kB isolated(anon):0kB isolated(file):0kB mapped:11123132kB dirty:1160kB writeback:644kB shmem:137436kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 0kB writeback_tmp:0kB unstable:0kB all_unreclaimable? no
Jul 02 20:34:53 host kernel: Node 1 active_anon:116388752kB inactive_anon:197812732kB active_file:34974460kB inactive_file:16133356kB unevictable:271120kB isolated(anon):0kB isolated(file):0kB mapped:11549316kB dirty:1540kB writeback:960kB shmem:88000kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 0kB writeback_tmp:0kB unstable:0kB all_unreclaimable? no
Jul 02 20:34:53 host kernel: Node 0 DMA free:15876kB min:0kB low:12kB high:24kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:15996kB managed:15876kB mlocked:0kB kernel_stack:0kB pagetables:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
Jul 02 20:34:53 host kernel: lowmem_reserve[]: 0 2561 515798 515798 515798
Jul 02 20:34:53 host kernel: Node 0 DMA32 free:2625288kB min:220kB low:2840kB high:5460kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:2732964kB managed:2665112kB mlocked:0kB kernel_stack:0kB pagetables:0kB bounce:0kB free_pcp:2956kB local_pcp:0kB free_cma:0kB
Jul 02 20:34:53 host kernel: lowmem_reserve[]: 0 0 513236 513236 513236
Jul 02 20:34:53 host kernel: Node 0 Normal free:37110116kB min:44820kB low:570372kB high:1095924kB active_anon:111954916kB inactive_anon:172197032kB active_file:35764692kB inactive_file:17457324kB unevictable:399796kB writepending:1804kB present:533970944kB managed:525553736kB mlocked:399796kB kernel_stack:590520kB pagetables:4130116kB bounce:0kB free_pcp:254676kB local_pcp:1444kB free_cma:0kB
Jul 02 20:34:53 host kernel: lowmem_reserve[]: 0 0 0 0 0
Jul 02 20:34:53 host kernel: Node 1 Normal free:41754408kB min:45064kB low:573476kB high:1101888kB active_anon:116388752kB inactive_anon:197812732kB active_file:34974460kB inactive_file:16133356kB unevictable:271120kB writepending:2500kB present:536866816kB managed:528422152kB mlocked:271120kB kernel_stack:519000kB pagetables:3725448kB bounce:0kB free_pcp:270220kB local_pcp:264kB free_cma:0kB
Jul 02 20:34:53 host kernel: lowmem_reserve[]: 0 0 0 0 0
Jul 02 20:34:53 host kernel: Node 0 DMA: 1*4kB (U) 2*8kB (U) 1*16kB (U) 1*32kB (U) 3*64kB (U) 0*128kB 1*256kB (U) 0*512kB 1*1024kB (U) 1*2048kB (M) 3*4096kB (M) = 15876kB
Jul 02 20:34:53 host kernel: Node 0 DMA32: 6*4kB (UM) 6*8kB (M) 8*16kB (M) 6*32kB (M) 6*64kB (M) 6*128kB (M) 5*256kB (UM) 8*512kB (UM) 9*1024kB (UM) 10*2048kB (UM) 632*4096kB (M) = 2625288kB
Jul 02 20:34:53 host kernel: Node 0 Normal: 70110*4kB (UME) 528589*8kB (UME) 278440*16kB (UME) 77872*32kB (UME) 98148*64kB (UM) 34504*128kB (UME) 6830*256kB (UME) 2138*512kB (UME) 722*1024kB (UM) 167*2048kB (UME) 2693*4096kB (UM) = 37109088kB
Jul 02 20:34:53 host kernel: Node 1 Normal: 1440*4kB (UME) 256581*8kB (UM) 92674*16kB (UM) 16683*32kB (UME) 36437*64kB (UM) 6712*128kB (UME) 7106*256kB (UM) 2334*512kB (UM) 2282*1024kB (UME) 609*2048kB (UM) 6809*4096kB (M) = 41753960kB
Jul 02 20:34:53 host kernel: Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=1048576kB
Jul 02 20:34:53 host kernel: Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=2048kB
Jul 02 20:34:53 host kernel: Node 1 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=1048576kB
Jul 02 20:34:53 host kernel: Node 1 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=2048kB
Jul 02 20:34:53 host kernel: 57982225 total pagecache pages
Jul 02 20:34:53 host kernel: 31838959 pages in swap cache
Jul 02 20:34:53 host kernel: Swap cache stats: add 684735119, delete 652970785, find 114714945/164869068
Jul 02 20:34:53 host kernel: Free swap  = 6113127072kB
Jul 02 20:34:53 host kernel: Total swap = 7814100640kB
Jul 02 20:34:53 host kernel: 268396680 pages RAM
Jul 02 20:34:53 host kernel: 0 pages HighMem/MovableOnly
Jul 02 20:34:53 host kernel: 4232461 pages reserved
Jul 02 20:34:53 host kernel: 0 pages cma reserved
Jul 02 20:34:53 host kernel: 0 pages hwpoisoned

ฉันไม่สามารถตีความผลลัพธ์เพื่อที่จะเข้าใจทิศทางที่จะมอง ข้อผิดพลาดที่คล้ายกันส่วนใหญ่มาจากเคอร์เนล 32 บิตแบบเก่าซึ่งปัญหาได้รับการแก้ไขโดยส่ง vmalloc=512M ใน grub boot loader แต่ด้วย 64- แต่เมล็ด VMALLOC มีขนาดใหญ่กว่ามาก ตามหลักฐานโดย /proc/meminfo (vmalloctotal=34TB ,vmallocused=24GB):

cat /proc/meminfo

MemTotal:       1056656876 kB
MemFree:        76849680 kB
MemAvailable:   200978380 kB
Buffers:           74844 kB
Cached:         108220668 kB
SwapCached:     128272136 kB
Active:         299102888 kB
Inactive:       407757724 kB
Active(anon):   228172048 kB
Inactive(anon): 370632756 kB
Active(file):   70930840 kB
Inactive(file): 37124968 kB
Unevictable:      675628 kB
Mlocked:          675628 kB
SwapTotal:      7814100640 kB
SwapFree:       6112054688 kB
Dirty:              2500 kB
Writeback:           556 kB
AnonPages:      499566192 kB
Mapped:         22947384 kB
Shmem:            223532 kB
KReclaimable:   22638384 kB
Slab:           131330980 kB
SReclaimable:   22638384 kB
SUnreclaim:     108692596 kB
KernelStack:     1108256 kB
PageTables:      7894616 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    8342429076 kB
Committed_AS:   2407556960 kB
VmallocTotal:   34359738367 kB
VmallocUsed:    23920452 kB
VmallocChunk:          0 kB
Percpu:         25101312 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:    133753764 kB
DirectMap2M:    265598976 kB
DirectMap1G:    674234368 kB

ฟรี -m

              total        used        free      shared  buff/cache   available
Mem:        1031891      828580       75310         203      128001      196680
Swap:       7630957     1662143     5968813

ใครช่วยระบุข้อ จำกัด เฉพาะที่ระบุโดยนัยของการติดตามการโทร & บันทึกเคอร์เนล พิจารณาว่า VMALLOC ควรมีขีดจำกัดที่สูงกว่ามากในระบบ 64 บิต

แก้ไข: ข้อมูลเพิ่มเติม ฉันได้ติดตามการปรับแต่ง LXC ที่อธิบายไว้ที่นี่: https://linuxcontainers.org/lxd/docs/master/production-setup

sysctl.conf (มีการปรับจูนมากเกินไปในที่นี้ เนื่องจากฉันพบปัญหาการโหลดมากมายจนถึงจุดนี้ - ปรากฏว่าเราเตอร์ของฉันสแปมโฆษณาเราเตอร์มากเกินไป & ทำให้เซิร์ฟเวอร์ของฉันต้องคุกเข่าลง)

net.ipv4.neigh.default.gc_interval = 3600
net.ipv6.neigh.default.gc_interval = 3600
net.ipv4.neigh.default.gc_stale_time = 3600
net.ipv6.neigh.default.gc_stale_time = 3600
net.ipv4.neigh.default.gc_thresh1 = 80000
net.ipv4.neigh.default.gc_thresh2 = 90000
net.ipv4.neigh.default.gc_thresh3 = 100000
net.ipv6.neigh.default.gc_thresh1 = 80000
net.ipv6.neigh.default.gc_thresh2 = 90000
net.ipv6.neigh.default.gc_thresh3 = 100000
vm.swappiness=100
kernel.keys.maxkeys = 100000000
kernel.keys.maxbytes = 200000000
kernel.dmesg_restrict = 1
vm.max_map_count = 262144
net.ipv6.conf.default.autoconf = 0
fs.inotify.max_queued_events = 167772160
fs.inotify.max_user_instances = 167772160  # def:128
fs.inotify.max_user_watches = 167772160  # def:8192
net.core.bpf_jit_limit = 300000000000
kernel.keys.root_maxbytes = 2000000000
kernel.keys.root_maxkeys = 1000000000
kernel.pid_max = 4194304
kernel.keys.gc_delay = 300
kernel.keys.persistent_keyring_expiry = 259200
fs.aio-max-nr = 524288
kernel.pty.max = 10000
net.core.somaxconn=512000
fs.file-max = 1048576
net.ipv4.ip_local_port_range = 12000 65535
kernel.pty.reserve = 2048
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.core.optmem_max = 40960
net.ipv4.tcp_rmem = 4096 1048576 2097152
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_mem = 50576   64768   98152
net.core.netdev_max_backlog = 50000
net.core.netdev_budget = 10000
net.core.netdev_budget_usecs = 2000
net.ipv4.tcp_timestamps=0
net.ipv4.tcp_sack=0
net.ipv4.tcp_fin_timeout=20
kernel.sched_migration_cost_ns = 5000000
kernel.sched_autogroup_enabled = 0

/etc/security/limits.conf

  *     soft  nofile      1048576     unset
  *     hard  nofile      1048576     unset
  root  soft  nofile      1048576     unset
  root  hard  nofile      1048576     unset
  *     soft  memlock     unlimited   unset
  *     hard  memlock     unlimited   unset
  root  soft  memlock     unlimited   unset
  root  hard  memlock     unlimited   unset

/etc/modprobe.d/zfs.conf

options zfs zfs_arc_max=103079215104
options zfs l2arc_noprefetch=0
options zfs zfs_arc_dnode_limit_percent=75
options zfs zfs_arc_meta_limit_percent=75

answer

สแต็กการโทรอยู่ที่bpf_jit_alloc_execและคุณมีหน่วยความจำว่างค่อนข้างมาก ดังนั้นจึงมีโอกาสดีที่คุณจะต้องตรวจสอบbpf_jit_limitใหม่ที่ปรับแต่งได้และเพิ่ม (เป็นไบต์ที่ไม่อยู่ในหน้า)