写了个博客记录了一下:
http://blog.jackriver.im/a-kernel-bug-with-vmware-vm-led-to-slow-kernel-boot/ 以下是内容直接贴过来了
最近在VMware上装了ArchLinux,之后发现启动时间非常的长。用systemd-analyze可以看到kernel用了43s而userspace只有7s。
于是我用dmesg把内核启动信息dump出来了:
(V2EX把gist直接解析出来太可怕了于是改成了短链)
http://goo.gl/cwDkKA然后发现两个节点分别是
[ 15.084271] acpi PNP0A03:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
[ 15.084427] acpi PNP0A03:00: _OSC: platform does not support [AER]
[ 15.084564] acpi PNP0A03:00: _OSC: OS now controls [PCIeHotplug PME PCIeCapability]
以及
[ 42.844949] pci 0000:00:15.3: bridge window [io 0x1000-0x0fff] to [bus 06] add_size 1000
[ 42.845000] pci 0000:00:15.4: bridge window [io 0x1000-0x0fff] to [bus 07] add_size 1000
[ 42.845049] pci 0000:00:15.5: bridge window [io 0x1000-0x0fff] to [bus 08] add_size 1000
[ 42.845098] pci 0000:00:15.6: bridge window [io 0x1000-0x0fff] to [bus 09] add_size 1000
所以我猜测大概是ACPI Hotplug之类的问题,然后在一番Google后,找到这么一个帖子:
https://bbs.archlinux.org/viewtopic.php?id=172524描述的完全就是我的问题,于是我就按照上面的说法修改了对应的.vmx文件里mem.hotadd的值,从TRUE改成了FALSE。
之后重新运行虚拟机测试发现,systemd-analyze的时间已经变成了kernel是2.4s而userspace仍然保持7s不变。
新的dmesg如下:
http://goo.gl/M0T4fu所以完全就是被一个可以动态添加内存的功能给坑了,同时在帖子里看到了这个链接也表示这确实和内核的hotplug有关。
修改完一个参数之后世界就清净了。