On Thu, Jun 23, 2016 at 01:55:06PM +0100, Daniel P. Berrange wrote: > On Mon, Jun 20, 2016 at 02:12:17PM +0800, Chao Peng wrote: > > On Sun, Jun 19, 2016 at 06:51:04AM +0300, Michael S. Tsirkin wrote: > > > On Fri, Jun 17, 2016 at 04:14:08AM -0400, Chao Peng wrote: > > > > - it is FAST; > > > > > > Any numbers to demonstrate just how fast it is and fast at what? > > > > On a 2.30GHz Haswell server, guest kernel booting time is 59.9ms by > > following test steps listed at > > > > https://github.com/chao-p/qemu-lite-tools > > > > Ran the same test with "-machine q35", the guest kernel booting > > time is 129.8ms. There is additional 75ms in SeaBIOS for Q35 case. > > I think it'd be useful / interesting to understand why we have saved > this time vs Q35. I'm not a huge fan of the idea of defining an > arbitrarily cut down machine type, because inevitably one applications > view of what is the "bare minimum required functionality" will be > different from another applications' view. > > It seems to me that whether some features emulated by QEMU are slow > or not should only matter if the guest OS actually tries to use those > features. IOW, could we achieve the same speed up in boot time, by > making Linux more configurable at runtime. eg so with a single Linux > kernel binary and standard Q35/PIIX machine type, we can disable > slow functionality by just giving Linux suitable kernel command > line arguments.
I totally agree with you. And our goal is reducing boot time so I don't mind using existing code to achieve this goal. When I looked into this. I have thought there might be a minimal platform with which I can add other stuff on demand, or a full functional platform that allow me to disable unnecessary functionalities. But in practice I can't get a system that exactly fit for me, regardless there is lots of configuration methods in both QEMU/BIOS/kernel. Taking kernel time overhead with Q35 here for example. The most time saving comes from PCI initialization. New pc-lite platform supports only 1 bus so guest don't need to scan all the possible buses which save ~60ms. Another time saving place is new pc-lite platform removed SMBUS/SATA/LPC bridges that Q35 creates by default. Initialization for these devices costs ~20ms. The problem is not all these functionalities can be disabled either in kernel or in QEMU, so in the end, turns out to introduce a new one. Thanks, Chao