On Tue, Jul 14, 2015 at 12:38:59PM +0300, Pavel Fedin wrote: > The function originally behaves very badly when adding properties with "[*]" > suffix. Normally these are used for numbering IRQ pins. In order to find the > correct starting number the function started from zero and checked for > duplicates. This takes incredibly long time with large number of CPUs because > number of IRQ pins on some architectures (like ARM GICv3) gets multiplied by > number of CPUs. > > The solution is to add one more property which caches last used index so that > duplication check is not repeated thousands of times. Every time an array is > expanded the index is picked up from this cache. > > The modification decreases qemu startup time with 32 CPUs by a factor of 2 > (~10 sec vs ~20 sec).
10 seconds to start a QEMU with a mere 32 cpus is still a totally ridiculous amount of time. Do you know why it is still so slow even after your suggested patch ? Is it still related to the method object_property_add(), or are there other areas of code with bad scalability affecting arm ? Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|