Bug#292269: clock-applet: excessive CPU usage

Lee Revell Lee Revell <rlrevell@joe-job.com>, 292269@bugs.debian.org
Tue, 25 Jan 2005 21:03:27 -0500


Package: gnome-panel
Version: 2.8.2-1
Severity: normal


clock-applet consumes way more CPU than it should, about 0.3% on my
600Mhz machine.

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+ COMMAND   
3000 rlrevell  16   0 17920 8540 6636 S  0.3  1.9  0:29.79 clock-applet

I strace'd it and it does the following over and over:

open("/etc/localtime", O_RDONLY)        = 34
fstat64(34, {st_mode=S_IFREG|0644, st_size=1267, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xb72e0000
read(34, "TZif\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\4\0"...,
4096) = 1267
close(34)                               = 0
munmap(0xb72e0000, 4096)                = 0
ioctl(3, FIONREAD, [0])                 = 0
gettimeofday({1106704619, 598478}, NULL) = 0
poll([{fd=18, events=POLLIN}, {fd=3, events=POLLIN}, {fd=23,
events=POLLIN|POLLPRI}, {fd=25, events=POLLIN}, {fd=27,
events=POLLIN|POLLPRI}, {fd=28, events=POLLIN|POLLPRI}, {fd=29,
events=POLLIN|POLLPRI}, {fd=31, events=POLLIN|POLLPRI}, {fd=30,
events=POLLIN|POLLPRI}, {fd=32, events=POLLIN|POLLPRI}, {fd=33,
events=POLLIN|POLLPRI}], 11, 0) = 0
write(3, "5\20\4\0\335Y\240\1\34\0\240\1e\0\30\0;\3\5\0 \0\240\1"...,
328) = 328
ioctl(3, FIONREAD, [0])                 = 0
gettimeofday({1106704619, 603133}, NULL) = 0
poll([{fd=18, events=POLLIN}, {fd=3, events=POLLIN}, {fd=23,
events=POLLIN|POLLPRI}, {fd=25, events=POLLIN}, {fd=27,
events=POLLIN|POLLPRI}, {fd=28, events=POLLIN|POLLPRI}, {fd=29,
events=POLLIN|POLLPRI}, {fd=31, events=POLLIN|POLLPRI}, {fd=30,
events=POLLIN|POLLPRI}, {fd=32, events=POLLIN|POLLPRI}, {fd=33,
events=POLLIN|POLLPRI}], 11, 985) = 0
gettimeofday({1106704620, 589779}, NULL) = 0
time([1106704620])                      = 1106704620
time(NULL)                              = 1106704620
open("/usr/share/zoneinfo/Universal", O_RDONLY) = 34
fstat64(34, {st_mode=S_IFREG|0644, st_size=56, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xb72e0000
read(34, "TZif\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\1\0"...,
4096) = 56
close(34)                               = 0
munmap(0xb72e0000, 4096)                = 0
time([1106704620])                      = 1106704620

Why in the heck do you need to open, mmap, munmap, and close
/etc/localtime and /usr/share/zoneinfo/Universal every second?  There
has *got* to be a more efficient way.

Lee

-- System Information:
Debian Release: 3.1
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.6.11-rc1-RT-V0.7.35-01
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)

Versions of packages gnome-panel depends on:
ii  gnome-control-center     1:2.8.1-3       The GNOME Control Center for GNOME
ii  gnome-desktop-data       2.8.1-2         Common files for GNOME 2 desktop a
ii  gnome-panel-data         2.8.2-1         Common files for GNOME 2 panel
ii  gnome-session            2.8.1-5         The GNOME 2 Session Manager
ii  libart-2.0-2             2.3.16-6        Library of functions for 2D graphi
ii  libatk1.0-0              1.8.0-4         The ATK accessibility toolkit
ii  libbonobo2-0             2.8.0-4         Bonobo CORBA interfaces library
ii  libbonoboui2-0           2.8.0-2         The Bonobo UI library
ii  libc6                    2.3.2.ds1-20    GNU C Library: Shared libraries an
ii  libecal6                 1.0.3-2         Client library for evolution calen
ii  libedataserver3          1.0.3-2         Utily library for evolution data s
ii  libgconf2-4              2.8.1-4         GNOME configuration database syste
ii  libglade2-0              1:2.4.1-2       library to load .glade files at ru
ii  libglib2.0-0             2.6.1-3         The GLib library of C routines
ii  libgnome-desktop-2       2.8.1-2         Utility library for loading .deskt
ii  libgnome2-0              2.8.0-6         The GNOME 2 library - runtime file
ii  libgnomecanvas2-0        2.8.0-1         A powerful object-oriented display
ii  libgnomeui-0             2.8.0-3         The GNOME 2 libraries (User Interf
ii  libgnomevfs2-0           2.8.3-9         The GNOME virtual file-system libr
ii  libgtk2.0-0              2.4.14-2        The GTK+ graphical user interface 
ii  libice6                  4.3.0.dfsg.1-10 Inter-Client Exchange library
ii  liborbit2                1:2.10.2-1.1    libraries for ORBit2 - a CORBA ORB
ii  libpanel-applet2-0       2.8.2-1         Library for GNOME 2 Panel applets
ii  libpango1.0-0            1.6.0-3         Layout and rendering of internatio
ii  libpng12-0               1.2.8rel-1      PNG library - runtime
ii  libpopt0                 1.7-5           lib for parsing cmdline parameters
ii  libsm6                   4.3.0.dfsg.1-10 X Window System Session Management
ii  libstartup-notification0 0.7-1           library for program launch feedbac
ii  libwnck4                 2.8.1-3         Window Navigator Construction Kit 
ii  libx11-6                 4.3.0.dfsg.1-10 X Window System protocol client li
ii  libxext6                 4.3.0.dfsg.1-10 X Window System miscellaneous exte
ii  libxml2                  2.6.11-5        GNOME XML library
ii  xlibs                    4.3.0.dfsg.1-10 X Keyboard Extension (XKB) configu
ii  zlib1g                   1:1.2.2-4       compression library - runtime

-- no debconf information