Re: [virt-manager PATCH] osdict: lazy load devices data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 05/16/2014 08:13 AM, Giuseppe Scrivano wrote:
> Do not load the devices data for each OS as most of this data will
> will not be used by virt-manager.  It makes the "Create new VM" wizard
> faster on the first time it is accessed (~0.5s faster on my machine).
> 

I noticed too that the create wizard startup is really sluggish. ACK to this bit.

I also ran:

python -m cProfile -s time virt-manager --connect test:///default
--show-domain-creator --no-fork

Which show:

        1    0.366    0.366    0.366    0.366 osdict.py:517(_get_os_loader)
 6223/566    0.283    0.000    0.310    0.001 osdict.py:323(is_os_related_to)

Which are both one time costs but still make the dialog noticeably slow. Maybe
we can take the initial OS list population bits in create.py and stuff them in
an idle callback on first run. So the dialog will open quicker, and that stuff
will be done in the background hopefully before the user starts actually
interacting with the UI

- Cole

> Signed-off-by: Giuseppe Scrivano <gscrivan@xxxxxxxxxx>
> ---
>  virtinst/osdict.py | 24 ++++++++++++++----------
>  1 file changed, 14 insertions(+), 10 deletions(-)
> 
> diff --git a/virtinst/osdict.py b/virtinst/osdict.py
> index 16bb807..7ffecb1 100644
> --- a/virtinst/osdict.py
> +++ b/virtinst/osdict.py
> @@ -23,6 +23,7 @@ _SENTINEL = -1234
>  _allvariants = {}
>  from datetime import datetime
>  from gi.repository import Libosinfo as libosinfo
> +from inspect import isfunction
>  
>  _aliases = {
>      "altlinux" : "altlinux1.0",
> @@ -463,17 +464,17 @@ class _OsVariantOsInfo(_OSVariant):
>          acpi = self._is_acpi()
>          apic = self._is_apic()
>          clock = self._get_clock()
> -        netmodel = self._get_netmodel()
> -        videomodel = self._get_videomodel()
> -        diskbus = self._get_diskbus()
> -        inputtype = self._get_inputtype()
> -        inputbus = self.get_inputbus()
>          xen_disable_acpi = self._get_xen_disable_acpi()
> -        virtiodisk = self._is_virtiodisk()
> -        virtionet = self._is_virtionet()
>          virtiommio = self._is_virtiommio()
> -        virtioconsole = self._is_virtioconsole()
>          qemu_ga = self._is_qemu_ga()
> +        virtioconsole = lambda: self._is_virtioconsole()
> +        netmodel = lambda: self._get_netmodel()
> +        videomodel = lambda: self._get_videomodel()
> +        diskbus = lambda: self._get_diskbus()
> +        inputtype = lambda: self._get_inputtype()
> +        inputbus = lambda: self.get_inputbus()
> +        virtiodisk = lambda: self._is_virtiodisk()
> +        virtionet = lambda: self._is_virtionet()
>          _OSVariant.__init__(self, name=name, label=label, is_type=is_type,
>                  typename=typename, sortby=sortby, parent="generic",
>                  urldistro=urldistro, supported=supported,
> @@ -572,9 +573,12 @@ def lookup_osdict_key(variant, key, default):
>      _load_os_data()
>      val = _SENTINEL
>      if variant is not None:
> -        if not hasattr(lookup_os(variant), key):
> +        os = lookup_os(variant)
> +        if not hasattr(os, key):
>              raise ValueError("Unknown osdict property '%s'" % key)
> -        val = getattr(lookup_os(variant), key)
> +        val = getattr(os, key)
> +        if isfunction(val):
> +            return val()
>      if val == _SENTINEL:
>          val = default
>      return val
> 

_______________________________________________
virt-tools-list mailing list
virt-tools-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/virt-tools-list




[Index of Archives]     [Linux Virtualization]     [KVM Development]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux