关于内存空间不足,导致页分配失败、内核出错的结局方案

现象:内存高占用(cache)的情况下,机器宕机。

内核错误:

时间 机器Host kernel: : [56120114.072869] 进程名: page allocation failure. order:1, mode:0x20
时间 机器Host kernel: : [56120114.150230] Pid: xxx, comm: sap_server Not tainted 2.6.32-详细版本号 #1  
时间 机器Host kernel: : [56120114.247173] Call Trace:
时间 机器Host kernel: : [56120114.279151]  <IRQ>  [<ffffffff8111b2e2>] ? __alloc_pages_nodemask+0x612/0x910
时间 机器Host kernel: : [56120114.366841]  [<ffffffff811532e0>] ? kmem_getpages+0x60/0x150
时间 机器Host kernel: : [56120114.436971]  [<ffffffff81153a80>] ? fallback_alloc+0x1f0/0x200
时间 机器Host kernel: : [56120114.509167]  [<ffffffff81153b2a>] ? ____cache_alloc_node+0x9a/0x120
时间 机器Host kernel: : [56120114.586519]  [<ffffffff81155bc3>] ? kmem_cache_alloc+0x143/0x1a0
时间 机器Host kernel: : [56120114.660776]  [<ffffffff813f0609>] ? sk_prot_alloc+0x119/0x1a0
时间 机器Host kernel: : [56120114.731938]  [<ffffffff813f1a73>] ? sk_clone+0x23/0x2f0
时间 机器Host kernel: : [56120114.796918]  [<ffffffff8143d696>] ? inet_csk_clone+0x16/0xc0
时间 机器Host kernel: : [56120114.867051]  [<ffffffff81454e53>] ? tcp_create_openreq_child+0x23/0x430
时间 机器Host kernel: : [56120114.948525]  [<ffffffff8145395a>] ? tcp_v4_syn_recv_sock+0x6a/0x290
时间 机器Host kernel: : [56120115.025875]  [<ffffffff814557d0>] ? tcp_check_req+0x2d0/0x450
时间 机器Host kernel: : [56120115.097039]  [<ffffffff81452f3e>] ? tcp_v4_do_rcv+0x31e/0x400
时间 机器Host kernel: : [56120115.168203]  [<ffffffff8145466d>] ? tcp_v4_rcv+0x64d/0x9a0
时间 机器Host kernel: : [56120115.236275]  [<ffffffff81432442>] ? ip_local_deliver_finish+0x122/0x2b0
时间 机器Host kernel: : [56120115.317750]  [<ffffffff81432610>] ? ip_local_deliver+0x40/0xa0
时间 机器Host kernel: : [56120115.390002]  [<ffffffff814327f2>] ? ip_rcv_finish+0x182/0x420
时间 机器Host kernel: : [56120115.461219]  [<ffffffff81432cff>] ? ip_rcv+0x26f/0x380
时间 机器Host kernel: : [56120115.525215]  [<ffffffff813ffd82>] ? __netif_receive_skb+0x382/0x680
时间 机器Host kernel: : [56120115.602621]  [<ffffffff8140121e>] ? netif_receive_skb+0x4e/0x60
时间 机器Host kernel: : [56120115.675904]  [<ffffffff81401328>] ? napi_skb_finish+0x48/0x60
时间 机器Host kernel: : [56120115.747128]  [<ffffffff81401bd9>] ? napi_gro_receive+0x39/0x50
时间 机器Host kernel: : [56120115.819392]  [<ffffffffa01f9fcf>] ? igb_receive_skb+0x3f/0x50 [igb]
时间 机器Host kernel: : [56120115.896796]  [<ffffffffa01fe4bc>] ? igb_poll+0xd2c/0x1180 [igb]
时间 机器Host kernel: : [56120115.970078]  [<ffffffff813f3b0e>] ? skb_release_all+0x1e/0x30
时间 机器Host kernel: : [56120116.041302]  [<ffffffff8104ef80>] ? select_idle_sibling+0xf0/0x120
时间 机器Host kernel: : [56120116.117678]  [<ffffffff8101ace5>] ? intel_pmu_enable_all+0xa5/0x110
时间 机器Host kernel: : [56120116.195081]  [<ffffffff813fbfc3>] ? __napi_complete+0x23/0x40
时间 机器Host kernel: : [56120116.266308]  [<ffffffff81401a84>] ? net_rx_action+0x1b4/0x2d0
时间 机器Host kernel: : [56120116.337532]  [<ffffffff8106dce0>] ? __do_softirq+0xc0/0x1e0
时间 机器Host kernel: : [56120116.406707]  [<ffffffff8100c10c>] ? call_softirq+0x1c/0x30
时间 机器Host kernel: : [56120116.474832]  [<ffffffff8100dcd5>] ? do_softirq+0x65/0xa0
时间 机器Host kernel: : [56120116.540891]  [<ffffffff8106da2c>] ? irq_exit+0x7c/0x90
时间 机器Host kernel: : [56120116.604893]  [<ffffffff814c4478>] ? do_IRQ+0x78/0xf0
时间 机器Host kernel: : [56120116.666828]  [<ffffffff8100b913>] ? ret_from_intr+0x0/0x11

原因:

为内核预留的内存空间过少,导致分配页时不够失败。

解决方案:

vm.min_free_kbytes = 512000
vm.zone_reclaim_mode = 1

前者影响了保留阈值计算,后者影响回收策略。

Leave a Reply

Your email address will not be published. Required fields are marked *