Ubuntu 14.04 KVM 主机 - 未正确分配 KVM 客户机,负载高

Ubuntu 14.04 KVM 主机 - 未正确分配 KVM 客户机,负载高

遇到 Ubuntu 14.04 KVM 主机/虚拟机的一个奇怪问题。我们有许多物理机,所有规格都相同,但当我们尝试启动相同类型的 KVM 映像时(OpenNebula 管理虚拟机部署,因此每台机器上的虚拟机配置完全相同),我们遇到超过一半的主机和虚拟机无法启动的问题。

虚拟机 (Windows 2008 R2) 分配有 16GB 内存和 12 个内核,主机有 24GB 内存和 12 个内核/24 个线程 - 因此不存在资源不足的问题,每个主机只运行 1 个虚拟机。主机上没有其他东西争用资源或使用任何重要 (>500MB) 内存(只有少数东西,如 puppet、splunk 等)。

如果我登录到出现问题的某台主机并查看top

top - 05:13:21 up 2 days, 21:23,  1 user,  load average: 81.41, 74.04, 44.58
Tasks: 302 total,   1 running, 301 sleeping,   0 stopped,   0 zombie
%Cpu(s): 33.3 us,  8.4 sy,  0.0 ni, 58.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:  24680184 total, 24467788 used,   212396 free,   141636 buffers
KiB Swap: 37731324 total,        0 used, 37731324 free. 11193004 cached Mem

 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                          
3593 oneadmin  20   0 21.771g 0.011t   9356 D 999.0 49.8 131:19.15 qemu-system-x86

您可以看到 KVM 只能分配 11GB,并且qemu-system-x86正在重击 CPU(这很好,有很多可用的核心)但是 VM 本身尚未完全启动(我无法使用 RDP,而且 CPU 较高这一事实似乎与该问题相关或受该问题影响)。

相比之下,如果我查看运行相同 VM 配置的相同机器:

top - 05:24:58 up 3 days,  3:53,  1 user,  load average: 1.08, 1.15, 0.72
Tasks: 290 total,   1 running, 289 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  0.7 sy,  0.0 ni, 96.0 id,  2.6 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:  24680184 total, 24375512 used,   304672 free,   136520 buffers
KiB Swap: 37731324 total,   340872 used, 37390452 free.  7446028 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                     
27824 oneadmin  20   0 21.304g 0.015t   6524 S  38.2 65.1  12:05.93 qemu-system-x86

在这里您可以看到它很高兴地分配了它的内存(0.015t),已经启动正常(我可以使用 RDP),并且只是在空闲状态下运行(大部分情况下)。

什么原因导致上面显示的第一个 VM 中的 KVM 无法正确分配资源?

扫描系统日志、libvirt/qemu 日志等。我没有发现任何问题。

更新:

检查内核日志后我发现了这一点:

May 24 05:00:27 ubuntu kernel: [249051.039660] perf samples too long (5103 > 5000), lowering kernel.perf_event_max_sample_rate to 25000
May 24 05:00:33 ubuntu kernel: [249057.722532] ------------[ cut here ]------------
May 24 05:00:33 ubuntu kernel: [249057.722562] kernel BUG at /build/buildd/linux-3.13.0/mm/memory.c:3756!
May 24 05:00:33 ubuntu kernel: [249057.722587] invalid opcode: 0000 [#1] SMP 
May 24 05:00:33 ubuntu kernel: [249057.722605] Modules linked in: ipt_MASQUERADE iptable_nat nf_nat_ipv4 nf_nat xt_CHECKSUM iptable_mangle xt_tcpudp bridge stp llc ip6table_filter ip6_tables ipt_REJECT xt_LOG xt_limit xt_multiport nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter xt_conntrack nf_conntrack ip_tables x_tables ast ttm drm_kms_helper drm syscopyarea sysfillrect sysimgblt gpio_ich intel_powerclamp coretemp kvm_intel dcdbas kvm crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd serio_raw lpc_ich joydev i7core_edac edac_core ipmi_si mac_hid lp parport hid_generic usbhid hid igb i2c_algo_bit dca ptp ahci libahci pps_core
May 24 05:00:33 ubuntu kernel: [249057.722903] CPU: 11 PID: 3601 Comm: qemu-system-x86 Not tainted 3.13.0-24-generic #47-Ubuntu
May 24 05:00:33 ubuntu kernel: [249057.722934] Hardware name: Dell                   CS24-TY               /S99                   , BIOS DS993B15 09/20/2010
May 24 05:00:33 ubuntu kernel: [249057.722972] task: ffff88062d8dc7d0 ti: ffff88062b4f2000 task.ti: ffff88062b4f2000
May 24 05:00:33 ubuntu kernel: [249057.723000] RIP: 0010:[<ffffffff81179051>]  [<ffffffff81179051>] handle_mm_fault+0xe61/0xf10
May 24 05:00:33 ubuntu kernel: [249057.723038] RSP: 0018:ffff88062b4f3a08  EFLAGS: 00010246
May 24 05:00:33 ubuntu kernel: [249057.723058] RAX: 0000000000000100 RBX: 00007f3864300000 RCX: ffff88062b4f3788
May 24 05:00:33 ubuntu kernel: [249057.723083] RDX: ffff88062d8dc7d0 RSI: 0000000000000000 RDI: 8000000340c009e6
May 24 05:00:33 ubuntu kernel: [249057.723108] RBP: ffff88062b4f3a90 R08: 0000000000000000 R09: 0000000000000019
May 24 05:00:33 ubuntu kernel: [249057.723134] R10: 0000000000000001 R11: 0000000000000000 R12: ffff88032e317908
May 24 05:00:33 ubuntu kernel: [249057.723159] R13: ffff88032c785740 R14: ffff88032c437380 R15: 0000000000000000
May 24 05:00:33 ubuntu kernel: [249057.723185] FS:  00007f3b94ff9700(0000) GS:ffff88063fca0000(0000) knlGS:0000000000000000
May 24 05:00:33 ubuntu kernel: [249057.723213] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
May 24 05:00:33 ubuntu kernel: [249057.723235] CR2: fffff98001b88400 CR3: 0000000315fad000 CR4: 00000000000027e0
May 24 05:00:33 ubuntu kernel: [249057.723260] Stack:
May 24 05:00:33 ubuntu kernel: [249057.723269]  ffffffff8171da4a 0000000000000010 0000000000000202 ffff88062b4f3a38
May 24 05:00:33 ubuntu kernel: [249057.723303]  0000000000000018 ffffea00124a9900 ffff88062b4f3a90 ffffffff81176fc8
May 24 05:00:33 ubuntu kernel: [249057.723336]  ffff88032e3179b8 ffff880629b41a08 ffff880300000019 8000000400000001
May 24 05:00:33 ubuntu kernel: [249057.723368] Call Trace:
May 24 05:00:33 ubuntu kernel: [249057.723385]  [<ffffffff8171da4a>] ? _raw_spin_lock+0x3a/0x50
May 24 05:00:33 ubuntu kernel: [249057.723407]  [<ffffffff81176fc8>] ? follow_page_mask+0xf8/0x5b0
May 24 05:00:33 ubuntu kernel: [249057.723430]  [<ffffffff81179266>] __get_user_pages+0x166/0x5e0
May 24 05:00:33 ubuntu kernel: [249057.723473]  [<ffffffffa0297709>] __gfn_to_pfn_memslot+0x169/0x3c0 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723504]  [<ffffffffa02979bc>] __gfn_to_pfn+0x5c/0x60 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723531]  [<ffffffffa02979fa>] gfn_to_pfn_async+0x1a/0x20 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723564]  [<ffffffffa02b9f8f>] try_async_pf+0x3f/0x1b0 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723595]  [<ffffffffa02b4f6e>] ? mapping_level.isra.92+0x7e/0xa0 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723628]  [<ffffffffa02ba416>] tdp_page_fault+0x106/0x1f0 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723660]  [<ffffffffa02b5634>] kvm_mmu_page_fault+0x24/0x100 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723688]  [<ffffffffa0156634>] handle_ept_violation+0x94/0x160 [kvm_intel]
May 24 05:00:33 ubuntu kernel: [249057.723716]  [<ffffffffa015bb05>] vmx_handle_exit+0xb5/0x890 [kvm_intel]
May 24 05:00:33 ubuntu kernel: [249057.723743]  [<ffffffff8109d91e>] ? __vtime_account_system+0x2e/0x40
May 24 05:00:33 ubuntu kernel: [249057.723775]  [<ffffffffa02a9c05>] vcpu_enter_guest+0x795/0xcb0 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723806]  [<ffffffffa029fde4>] ? kvm_check_async_pf_completion+0x14/0x110 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723842]  [<ffffffffa02ae108>] kvm_arch_vcpu_ioctl_run+0x1e8/0x460 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723872]  [<ffffffffa0298062>] kvm_vcpu_ioctl+0x2c2/0x5b0 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723898]  [<ffffffff810d9329>] ? futex_wake+0x1a9/0x1d0
May 24 05:00:33 ubuntu kernel: [249057.724805]  [<ffffffff811cc6e0>] do_vfs_ioctl+0x2e0/0x4c0
May 24 05:00:33 ubuntu kernel: [249057.725701]  [<ffffffff8109dd84>] ? vtime_account_user+0x54/0x60
May 24 05:00:33 ubuntu kernel: [249057.726603]  [<ffffffff811cc941>] SyS_ioctl+0x81/0xa0
May 24 05:00:33 ubuntu kernel: [249057.727496]  [<ffffffff817266bf>] tracesys+0xe1/0xe6
May 24 05:00:33 ubuntu kernel: [249057.728375] Code: ff 48 89 d9 4c 89 e2 4c 89 ee 4c 89 f7 44 89 4d c8 e8 34 c1 ff ff 85 c0 0f 85 94 f5 ff ff 49 8b 3c 24 44 8b 4d c8 e9 68 f3 ff ff <0f> 0b be 8e 00 00 00 48 c7 c7 18 25 a6 81 44 89 4d c8 e8 18 e7 
May 24 05:00:33 ubuntu kernel: [249057.730245] RIP  [<ffffffff81179051>] handle_mm_fault+0xe61/0xf10
May 24 05:00:33 ubuntu kernel: [249057.731128]  RSP <ffff88062b4f3a08>
May 24 05:00:33 ubuntu kernel: [249057.745224] ---[ end trace 9b34ed0875c40df4 ]---

想知道这个内核是否有问题(3.13.0-24-generic)。我还发现有问题的主机的系统行为很奇怪 - 如果我尝试,ps它会在某个点挂起,我必须终止我的 SSH 会话。我也无法重新启动系统,大概在重新启动过程中也会挂起。这个内核问题显然破坏了系统的其余部分。

答案1

是的 - 该内核存在问题。我们在双 E5-2687 上运行多个 Java 实例时也遇到了同样的问题。

从未耗尽内存,但经过几个小时的加载后,如果我们尝试 ssh 或运行 ps,它就会崩溃。Dmesg 显示的错误与您遇到的错误相同:

内核 BUG 位于 /build/buildd/linux-3.13.0/mm/memory.c:3756!

我们安装了最新的测试内核,自此以来一直很稳定(3.15.0-031500rc2-generic #201404201435)。内核和头文件可以从以下网址下载http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=N;O=D并使用 dpkg 安装。

我们目前正在测试,如果此内核发生崩溃,我会发布。

更新: 我们运行了适用于 AMD64 的 3.15.0-031500rc2-generic,虽然这种情况很少发生,但我们还是遇到了同样的错误。当然,这是在双 Xeon E5-2687W 在所有核心上以 100% 的利用率运行了大约 3 天之后发生的,但它仍然发生了,不应该发生(Ubuntu 12 没有发生,同样的 Java 应用程序)。

答案2

请注意,该问题已修复,但有以下错误: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1323165

请升级到 Trusty 中的以下 Linux 版本:3.13.0-32.57

谢谢

相关内容