Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 337669 - Xft or Xrender causing high processor usage
Summary: Xft or Xrender causing high processor usage
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: AMD64 Linux
: High normal (vote)
Assignee: Gentoo Linux bug wranglers
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-09-16 17:27 UTC by Matthew Walker
Modified: 2010-09-20 23:03 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Matthew Walker 2010-09-16 17:27:26 UTC
Several days ago, after a round of extensive updates and large emerge runs, I noticed that the X process was using 50%+ of a processor when I wasn't doing anything. I did some digging, and tracked it down to my instance of conky. After fiddling with it for a few hours, I determined that if I turned off XFT, it worked perfectly without undo processor usage. In the process, I discovered that my terminals would use up a lot of processor if they were doing any updates as well. I don't have any easy way to disable XFT for them, so I haven't been able to test if it's the same issue, but I suspect it is. 

I've finished a complete emerge --depclean and emerge -e world, on the off chance that something was slightly broken somewhere, but it hasn't made any difference at all. What should I try next? What additional troubleshooting would you reccomend?

Reproducible: Always

Steps to Reproduce:
1. Boot box, log into KDE, watch conky load and show the X process using over 50% of one processor.
2. Kill conky, check with top on the console. See that X is now using < 5% of one processor.
3. Reconfigure conky to not use Xft.
4. Relaunch conky, and see that it's no longer causing a spike in CPU usage.
Actual Results:  
Unusually high CPU usage.

Expected Results:  
Normal levels of CPU usage. ;)

mwalkerlinux ~ # emerge --info 
Portage 2.1.9.5 (default/linux/amd64/10.0, gcc-4.4.4, glibc-2.12.1-r1, 2.6.35-gentoo-r4 x86_64) 
================================================================= 
System uname: Linux-2.6.35-gentoo-r4-x86_64-Pentium-R-_Dual-Core_CPU_E5400_@_2.70GHz-with-gentoo-2.0.1 
Timestamp of tree: Tue, 14 Sep 2010 13:50:02 +0000 
ccache version 2.4 [enabled] 
app-shells/bash:     4.1_p7 
dev-java/java-config: 2.1.11 
dev-lang/python:     2.6.5-r3, 3.1.2-r4 
dev-util/ccache:     2.4-r8 
dev-util/cmake:      2.8.1-r2 
sys-apps/baselayout: 2.0.1 
sys-apps/openrc:     0.6.3 
sys-apps/sandbox:    2.3-r1 
sys-devel/autoconf:  2.13, 2.67 
sys-devel/automake:  1.7.9-r2, 1.8.5-r4, 1.9.6-r3, 1.10.3, 1.11.1 
sys-devel/binutils:  2.20.1-r1 
sys-devel/gcc:       4.4.4-r1 
sys-devel/gcc-config: 1.4.1 
sys-devel/libtool:   2.2.10 
sys-devel/make:      3.81-r2 
virtual/os-headers:  2.6.35 (sys-kernel/linux-headers) 
ACCEPT_KEYWORDS="amd64 ~amd64" 
ACCEPT_LICENSE="*" 
CBUILD="x86_64-pc-linux-gnu" 
CFLAGS="-march=native -O2 -pipe" 
CHOST="x86_64-pc-linux-gnu" 
CONFIG_PROTECT="/etc /usr/share/X11/xkb /usr/share/config" 
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.3/ext-active/ /etc/php/cgi-php5.3/ext-active/ /etc/php/cli-php5.3/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c" 
CXXFLAGS="-march=native -O2 -pipe" 
DISTDIR="/usr/portage/distfiles" 
FEATURES="assume-digests ccache distlocks fixlafiles fixpackages news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch" 
GENTOO_MIRRORS="http://distfiles.gentoo.org" 
LANG="en_US.UTF-8" 
LDFLAGS="-Wl,-O1 -Wl,--as-needed" 
LINGUAS="en" 
MAKEOPTS="-j1" 
PKGDIR="/usr/portage/packages" 
PORTAGE_CONFIGROOT="/" 
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" 
PORTAGE_TMPDIR="/var/tmp" 
PORTDIR="/usr/portage" 
PORTDIR_OVERLAY="/var/lib/layman/mozilla /var/lib/layman/php /var/lib/layman/kde /usr/local/portage" 
SYNC="rsync://rsync.namerica.gentoo.org/gentoo-portage" 
USE="64bit X aac acl acpi aim alsa amd64 apache2 bash-completion berkdb bzip2 cairo cleartype cli cracklib crypt ctype cups curl cxx dbus dri embedded esd exif extras faac faad fam filter flac fontconfig fontforge foomaticdb fortran fuse gd gdbm git gpm hal hddtemp iconv icu idn inotify iostats ipod ipv6 jpeg json kde kde4 kdepim kdm lame lastfm lastfmradio latex lcms ldap libnotify lm_sensors mdnsresponder-compat meanwhile mmx mng modules mp3 mpd msn mudflap multilib mysql mysqli ncurses nls nptl nptlonly nsplugin nvidia ogg opengl openmp oscar pam pango pcntl pcre pdf perl php png ppds pppd prediction python qt3support qt4 rdesktop rdp readline samba semantic-desktop session simplexml smp sockets spell sql sse sse2 sse3 ssl startup-notification subversion svg sysfs tcpd theora threads tiff tk truetype udev unicode vim vim-syntax vnc vorbis webkit wicd xft xinerama xml xorg xscreensaver xulrunner yahoo zeroconf zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="nv nvidia" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" 
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS 

mwalkerlinux ~ # layman -l 
* kde                       [Git       ] (git://git.overlays.gentoo.org/proj/kde.git) 
* mozilla                   [Git       ] (git://git.overlays.gentoo.org/proj/mozilla.git) 
* php                       [Git       ] (git://git.overlays.gentoo.org/proj/php.git) 


mwalkerlinux ~ # cat /etc/X11/xorg.conf 
Section "ServerLayout" 
        Identifier      "X.org Configured" 
        Screen          0 "Screen0" 0 0 
        InputDevice     "Mouse0" "CorePointer" 
        InputDevice     "Keyboard0" "CoreKeyboard" 
EndSection 

Section "Files" 
        ModulePath "/usr/lib/xorg/modules" 
        FontPath "/usr/share/fonts/corefonts" 
        FontPath "/usr/share/fonts/terminus" 
        FontPath "/usr/share/fonts/arkpandora" 
        FontPath "/usr/share/fonts/Type1" 
        FontPath "/usr/share/fonts/ttf-bitstream-vera" 
        FontPath "/usr/share/fonts/lyx" 
        FontPath "/usr/share/fonts/dejavu" 
        FontPath "/usr/share/fonts/misc" 
        FontPath "/usr/share/fonts/urw-fonts" 
        FontPath "/usr/share/fonts/ProFont" 
        FontPath "/usr/share/fonts/inconsolata" 
        FontPath "/usr/share/fonts/TTF" 
        FontPath "/usr/share/fonts/100dpi/" 
        FontPath "/usr/share/fonts/75dpi/" 
EndSection 

Section "Module" 
        Load    "dbe" 
        Load    "glx" 
EndSection 

Section "ServerFlags" 
    Option         "Xinerama" "0" 
EndSection 

Section "InputDevice" 
    Identifier     "Keyboard0" 
    Driver         "kbd" 
EndSection 

Section "InputDevice" 
    Identifier     "Mouse0" 
    Driver         "mouse" 
    Option         "Protocol" "auto" 
    Option         "Device" "/dev/input/mice" 
    Option         "ZAxisMapping" "4 5 6 7" 
EndSection 

Section "Monitor" 
    Identifier     "Monitor0" 
    VendorName     "Sceptre" 
    ModelName      "X22" 
    HorizSync       30.0 - 83.0 
    VertRefresh     56.0 - 75.0 
EndSection 

Section "Device" 
        Identifier     "Device0" 
        Driver         "nvidia" 
        VendorName     "NVIDIA Corporation" 
        BoardName      "GeForce 8500 GT" 
        Option          "RenderAccel" "true" 
        Option          "AllowGLXWithComposite" "true" 
EndSection 

Section "Screen" 
    Identifier     "Screen0" 
    Device         "Device0" 
    Monitor        "Monitor0" 
    DefaultDepth    24 
    Option         "TwinView" "1" 
    Option         "TwinViewXineramaInfoOrder" "CRT-0" 
    Option         "metamodes" "CRT-0: nvidia-auto-select +1920+0, CRT-1: nvidia-auto-select +0+0" 
    SubSection     "Display" 
        Depth       24 
    EndSubSection 
EndSection 


mwalker@mwalkerlinux ~ $ xdpyinfo 
name of display:    :0.0 
version number:    11.0 
vendor string:    The X.Org Foundation 
vendor release number:    10900000 
X.Org version: 1.9.0 
maximum request size:  16777212 bytes 
motion buffer size:  256 
bitmap unit, bit order, padding:    32, LSBFirst, 32 
image byte order:    LSBFirst 
number of supported pixmap formats:    7 
supported pixmap formats: 
    depth 1, bits_per_pixel 1, scanline_pad 32 
    depth 4, bits_per_pixel 8, scanline_pad 32 
    depth 8, bits_per_pixel 8, scanline_pad 32 
    depth 15, bits_per_pixel 16, scanline_pad 32 
    depth 16, bits_per_pixel 16, scanline_pad 32 
    depth 24, bits_per_pixel 32, scanline_pad 32 
    depth 32, bits_per_pixel 32, scanline_pad 32 
keycode range:    minimum 8, maximum 255 
focus:  window 0x220004f, revert to PointerRoot 
number of extensions:    28 
    BIG-REQUESTS 
    Composite 
    DAMAGE 
    DOUBLE-BUFFER 
    DPMS 
    GLX 
    Generic Event Extension 
    MIT-SCREEN-SAVER 
    MIT-SHM 
    NV-CONTROL 
    NV-GLX 
    RANDR 
    RECORD 
    RENDER 
    SHAPE 
    SYNC 
    X-Resource 
    XC-MISC 
    XFIXES 
    XFree86-DGA 
    XFree86-VidModeExtension 
    XINERAMA 
    XINERAMA 
    XInputExtension 
    XKEYBOARD 
    XTEST 
    XVideo 
    XVideo-MotionCompensation 
default screen number:    0 
number of screens:    1 

screen #0: 
  dimensions:    3840x1080 pixels (966x283 millimeters) 
  resolution:    101x97 dots per inch 
  depths (7):    24, 1, 4, 8, 15, 16, 32 
  root window id:    0x15a 
  depth of root window:    24 planes 
  number of colormaps:    minimum 1, maximum 1 
  default colormap:    0x20 
  default number of colormap cells:    256 
  preallocated pixels:    black 0, white 16777215 
  options:    backing-store NO, save-unders NO 
  largest cursor:    64x64 
  current input event mask:    0xfac031 
    KeyPressMask             EnterWindowMask          LeaveWindowMask          
    KeymapStateMask          ExposureMask             StructureNotifyMask      
    SubstructureNotifyMask   SubstructureRedirectMask FocusChangeMask          
    PropertyChangeMask       ColormapChangeMask        
  number of visuals:    84 
  default visual id:  0x21 
  visual: 
    visual id:    0x21 
    class:    TrueColor 
    depth:    24 planes 
    available colormap entries:    256 per subfield 
    red, green, blue masks:    0xff0000, 0xff00, 0xff 
    significant bits in color specification:    8 bits 
***TRIM: Lots more 'visual:' sections***
Comment 1 Matthew Walker 2010-09-16 17:29:18 UTC
Forum thread here:

http://forums.gentoo.org/viewtopic-p-6426442.html
Comment 2 Matthew Walker 2010-09-20 23:03:46 UTC
Solved, with this advice from #nvidia on Freenode:

<Plagman_> Utoxin: X 1.9 introduced a change in behavior that resulted in the NVIDIA driver being unable to accelerate text rendering 
<Plagman_> this driver fixes it: http://www.nvnews.net/vbulletin/showthread.php?p=2318734 
<Plagman_> please install it and it should address your issue