Bug#674143: lsb-release is very slow

Francois Gouget <[email protected]>
Newsgroups gmane.linux.debian.devel.lsb
Message-ID <[email protected]>
Package: lsb-release
Version: 4.1+Debian4
Severity: normal
Tags: patch

Dear Maintainer,

To reproduce the problem, simply run:

$ /usr/bin/time /usr/bin/lsb_release -sd
Debian GNU/ testing (wheezy)
1.84user 0.05system 0:01.91elapsed 99%CPU (0avgtext+0avgdata 137200maxresident)k
0inputs+0outputs (0major+14470minor)pagefaults 0swaps

This is on a hot cache with a 2.6GHz Core 2. On a cold cache this can take upi
to 4 seconds. What makes it so slow is that it systematically calls
'apt-cache policy':

$ LANG=C /usr/bin/time apt-cache policy >/dev/null
1.72user 0.07system 0:01.80elapsed 99%CPU (0avgtext+0avgdata 137200maxresident)k
0inputs+0outputs (0major+11680minor)pagefaults 0swaps

The patch below works around this issue for non-testing Debian versions by not
calling guess_release_from_apt() if we don't need to. This gets the execution
time down to 0.03 seconds. Unfortunately this does not help me since I'm
running Debian Testing :-(

--- /usr/share/pyshared/lsb_release.py.orig	2012-05-23 11:59:21.909934400 +0200
+++ /usr/share/pyshared/lsb_release.py	2012-05-23 12:12:59.281968570 +0200
@@ -270,8 +270,10 @@ def guess_debian_release():
     # This is slightly faster and less error prone in case the user
     # has an entry in his /etc/apt/sources.list but has not actually
     # upgraded the system.
-    rinfo = guess_release_from_apt()
-    if rinfo and not distinfo.get('CODENAME'):
+    rinfo = None
+    if not distinfo.get('CODENAME'):
+        rinfo = guess_release_from_apt()
+    if rinfo:
         release = rinfo.get('version')
 
         # Special case Debian-Ports as their Release file has 'version': '1.0'


-- Package-specific info:
lsb_release output
-*- -*- -*- -*- -*-
LSB Version:	core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-noarch:core-4.0-amd64:core-4.0-noarch:core-4.1-amd64:core-4.1-noarch:security-4.0-amd64:security-4.0-noarch:security-4.1-amd64:security-4.1-noarch
Distributor ID:	Debian
Description:	Debian GNU/Linux testing (wheezy)
Release:	testing
Codename:	wheezy
-*- -*- -*- -*- -*-
    Apt policy
-*- -*- -*- -*- -*-
Package files:
 100 /var/lib/dpkg/status
     release a=now
 500 http://dl.google.com/linux/earth/deb/ stable/main amd64 Packages
     release v=1.0,o=Google, Inc.,a=stable,n=stable,l=Google,c=main
     origin dl.google.com
 500 http://dl.google.com/linux/chrome/deb/ stable/main amd64 Packages
     release v=1.0,o=Google, Inc.,a=stable,n=stable,l=Google,c=main
     origin dl.google.com
 500 http://mirror.home-dn.net/debian-multimedia/ testing/main amd64 Packages
     release v=None,o=Unofficial Multimedia Packages,a=testing,n=wheezy,l=Unofficial Multimedia Packages,c=main
     origin mirror.home-dn.net
 500 http://ftp.fr.debian.org/debian/ testing/non-free Translation-en
 500 http://ftp.fr.debian.org/debian/ testing/main Translation-fr
 500 http://ftp.fr.debian.org/debian/ testing/main Translation-en
 500 http://ftp.fr.debian.org/debian/ testing/contrib Translation-en
 500 http://ftp.fr.debian.org/debian/ testing/non-free amd64 Packages
     release o=Debian,a=testing,n=wheezy,l=Debian,c=non-free
     origin ftp.fr.debian.org
 500 http://ftp.fr.debian.org/debian/ testing/contrib amd64 Packages
     release o=Debian,a=testing,n=wheezy,l=Debian,c=contrib
     origin ftp.fr.debian.org
 500 http://ftp.fr.debian.org/debian/ testing/main amd64 Packages
     release o=Debian,a=testing,n=wheezy,l=Debian,c=main
     origin ftp.fr.debian.org
 500 http://security.debian.org/ stable/updates/non-free amd64 Packages
     release v=6.0,o=Debian,a=stable,n=squeeze,l=Debian-Security,c=non-free
     origin security.debian.org
 500 http://security.debian.org/ stable/updates/contrib amd64 Packages
     release v=6.0,o=Debian,a=stable,n=squeeze,l=Debian-Security,c=contrib
     origin security.debian.org
 500 http://security.debian.org/ stable/updates/main amd64 Packages
     release v=6.0,o=Debian,a=stable,n=squeeze,l=Debian-Security,c=main
     origin security.debian.org
 500 http://ftp.fr.debian.org/debian/ stable/main Translation-fr
 500 http://ftp.fr.debian.org/debian/ stable/non-free amd64 Packages
     release v=6.0.5,o=Debian,a=stable,n=squeeze,l=Debian,c=non-free
     origin ftp.fr.debian.org
 500 http://ftp.fr.debian.org/debian/ stable/contrib amd64 Packages
     release v=6.0.5,o=Debian,a=stable,n=squeeze,l=Debian,c=contrib
     origin ftp.fr.debian.org
 500 http://ftp.fr.debian.org/debian/ stable/main amd64 Packages
     release v=6.0.5,o=Debian,a=stable,n=squeeze,l=Debian,c=main
     origin ftp.fr.debian.org
Pinned packages:
     xserver-xorg-input-acecad -> (not found)
     xserver-xorg-driver-sisusb -> (not found)
     xserver-xorg-driver-s3 -> (not found)
     xserver-xorg-video-i740 -> (not found)
     xserver-xorg-video-i810 -> (not found)
     xserver-xorg-video-ivtv-dbg -> (not found)
     xserver-xorg-driver-nv -> (not found)
     xserver-xorg-video-all -> (not found)
     xserver-xorg-video-suntcx -> (not found)
     xserver-xorg-video-apm -> (not found)
     xserver-xorg-input-evtouch -> (not found)
     xserver-xorg-video-ark -> (not found)
     xserver-xorg-video-ati -> (not found)
     xserver-xfbdev -> (not found)
     xserver-xorg-driver-dummy -> (not found)
     xserver-xorg-driver-vesa -> (not found)
     xserver-xorg-driver-cirrus -> (not found)
     xserver-xorg-video-radeonhd -> (not found)
     xserver-xfree86 -> (not found)
     xserver-xorg-video-openchrome -> (not found)
     xserver-xorg-input-multitouch -> (not found)
     xserver-xorg-video-newport -> (not found)
     xserver-xorg-video-radeon-dbg -> (not found)
     xserver-xorg-driver-all -> (not found)
     xserver-xorg-video-s3virge -> (not found)
     xserver-xorg-video-v4l -> (not found)
     xserver-xorg-driver-apm -> (not found)
     xserver-xorg-driver-ark -> (not found)
     xserver-xorg-video-mga -> (not found)
     xserver-xorg-video-radeonhd-dbg -> (not found)
     xserver-xorg-video-chips -> (not found)
     xserver-xorg-core -> (not found)
     xserver-xorg-input-mutouch -> (not found)
     xserver-xorg-video-mach64 -> (not found)
     xserver-xorg-video-msm -> (not found)
     xserver-xorg-video-nsc -> (not found)
     xserver-common -> (not found)
     xserver-xorg-video-geode -> (not found)
     xserver-xorg-video-r128-dbg -> (not found)
     xserver-xorg-video-trident -> (not found)
     xserver-xorg-video-i810-modesetting -> (not found)
     xserver-xorg-video-ati-dbg -> (not found)
     xserver-xorg-video-tga -> (not found)
     xserver-xorg-video-sis -> (not found)
     xserver-xorg-video-qxl -> (not found)
     xserver-xorg-video -> (not found)
     xserver-xorg-video-2 -> (not found)
     xserver-xorg-video-4 -> (not found)
     xserver-xorg-video-5 -> (not found)
     xserver-xorg-video-6 -> (not found)
     xserver-xorg-video-vga -> (not found)
     xserver-xorg-driver-mga -> (not found)
     xserver-xorg-video-via -> (not found)
     xserver-xorg-video-cyrix -> (not found)
     xserver-xorg-video-dummy -> (not found)
     xserver-xorg-video-1.0 -> (not found)
     xserver-xorg-video-1.9 -> (not found)
     xserver-xorg-video-siliconmotion -> (not found)
     xserver-xorg-input-vmmouse -> (not found)
     xserver-xorg-video-savage -> (not found)
     xserver-xorg-core-no-multiarch -> (not found)
     xserver-xorg-driver-tga -> (not found)
     xserver-xorg-driver-sis -> (not found)
     xserver-xorg-video-tdfx -> (not found)
     xserver-xorg-video-openchrome-dbg -> (not found)
     xserver-xorg-driver-glint -> (not found)
     xserver-xorg-video-qxl-dbg -> (not found)
     xserver-xorg-video-imstt -> (not found)
     xserver-xorg-input-2 -> (not found)
     xserver-xorg-input-4 -> (not found)
     xserver-xorg-driver-fbdev -> (not found)
     xserver-xorg-input-7 -> (not found)
     xserver-xorg-video-msm-dbg -> (not found)
     xserver-xorg-video-nvidia -> (not found)
     xserver-xorg-input-elographics -> (not found)
     xserver-xorg-video-intel -> (not found)
     xserver-xorg-driver-rendition -> (not found)
     xserver-xorg-input-all -> (not found)
     xserver-xorg-video-vmware -> (not found)
     xserver-xorg-video-r128 -> (not found)
     xserver-xorg-video-glamo -> (not found)
     xserver-xorg-input-evdev -> (not found)
     xserver-xorg-driver-i128 -> (not found)
     xserver-xorg-video-vesa -> (not found)
     xserver-xorg-input-joystick-dev -> (not found)
     xserver-xorg-driver-siliconmotion -> (not found)
     xserver-xorg-video-suncg14 -> (not found)
     xserver-xorg-input-kbd -> (not found)
     xserver-xorg-driver-s3virge -> (not found)
     xserver-xorg-driver-savage -> (not found)
     xserver-xorg-video-glide -> (not found)
     xserver-xorg-driver-neomagic -> (not found)
     xserver-xorg-driver-i740 -> (not found)
     xserver-xorg-driver-i810 -> (not found)
     xserver-xorg-video-s3 -> (not found)
     xserver-xorg -> (not found)
     xserver-xorg-video-glint -> (not found)
     xserver-xorg-dev -> (not found)
     xserver-xorg-video-nvidia-any -> (not found)
     xserver-xorg-input-void -> (not found)
     xserver-xorg-video-nv -> (not found)
     xserver-xorg-driver-trident -> (not found)
     xserver-xorg-driver-tseng -> (not found)
     xserver-xorg-video-voodoo -> (not found)
     xserver-xorg-video-fbdev -> (not found)
     xserver-xorg-input-wacom -> (not found)
     xserver-xorg-video-nouveau -> (not found)
     xserver-xorg-video-intel-modesetting -> (not found)
     xserver-xorg-input-aiptek -> (not found)
     xserver-xorg-input-penmount -> (not found)
     xserver-xorg-video-nouveau-dbg -> (not found)
     xserver-xorg-video-neomagic -> (not found)
     xserver-xorg-driver-vmware -> (not found)
     xserver-xephyr -> (not found)
     xserver-xorg-input-mouse -> (not found)
     xserver-xorg-input-2.1 -> (not found)
     xserver-xorg-core-dbg -> (not found)
     xserver-xorg-input-mtrack -> (not found)
     xserver-xorg-input-synaptics-dev -> (not found)
     xserver-xorg-video-mach64-dbg -> (not found)
     xserver-xorg-video-sisusb -> (not found)
     xserver-xorg-video-riva128 -> (not found)
     xserver-xspice -> (not found)
     xserver-xorg-video-suncg3 -> (not found)
     xserver-xorg-video-suncg6 -> (not found)
     xserver-xorg-driver-voodoo -> (not found)
     xserver-xorg-video-tseng -> (not found)
     xserver-xorg-video-geode-dbg -> (not found)
     xserver-xorg-video-radeon -> (not found)
     xserver-xorg-video-sunbw2 -> (not found)
     xserver-xorg-video-cirrus -> (not found)
     xserver-xorg-input -> (not found)
     xserver-xorg-video-omapfb -> (not found)
     xserver-xorg-video-sunffb -> (not found)
     xserver-xorg-video-intel-dbg -> (not found)
     xserver-xorg-input-joystick -> (not found)
     xserver-xorg-input-evdev-dev -> (not found)
     xserver-xorg-input-tslib -> (not found)
     xserver-xorg-video-omap3 -> (not found)
     xserver-xorg-driver-tdfx -> (not found)
     xserver-xorg-input-synaptics -> (not found)
     xserver-xorg-video-rendition -> (not found)
     xserver-xorg-video-i128 -> (not found)
     xserver-xorg-driver-chips -> (not found)
     xserver-xorg-video-sunleo -> (not found)
     xserver-xorg-video-ivtv -> (not found)
-*- -*- -*- -*- -*-
   sources.list
-*- -*- -*- -*- -*-
deb http://ftp.fr.debian.org/debian stable main contrib non-free
deb http://security.debian.org/ stable/updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian stable main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free
deb http://ftp.fr.debian.org/debian testing main contrib non-free
deb-src http://ftp.fr.debian.org/debian testing main contrib non-free
deb http://mirror.home-dn.net/debian-multimedia testing main
deb-src http://mirror.home-dn.net/debian-multimedia testing main
-*- -*- -*- -*- -*-
 /etc/lsb_release
-*- -*- -*- -*- -*-
- none

-- System Information:
Debian Release: wheezy/sid
  APT prefers testing
  APT policy: (500, 'testing'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-2-amd64 (SMP w/4 CPU cores)
Locale: LANG=fr_FR.utf8, LC_CTYPE=fr_FR.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages lsb-release depends on:
ii  python     2.7.2-10
ii  python2.6  2.6.7-4
ii  python2.7  2.7.3~rc2-2.1

Versions of packages lsb-release recommends:
ii  apt  0.9.3

Versions of packages lsb-release suggests:
pn  lsb  <none>

-- no debconf information

-- debsums errors found:
debsums: changed file /usr/share/pyshared/lsb_release.py (from lsb-release package)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.