=> So it seems that it is spending the time in OS._gdk_pixbuf_scale_simple.
3.) gdk_pixbuf_scale_simple is provided by libgdk_pixbuf-2.0.so
4.) I've verified the differences between the builds of gdk-pixbuf-2.28.0 for oneiric and precise/raring and found no problematic difference.
I've verified the differences between the gdk-pixbuf-2.24.1 (oneiric version) and gdk-pixbuf-2.28.0 (raring) and also found nothing.
5.) However, gdk_pixbuf_scale_simple function calls gdk_pixbuf_scale...but wait, this function should be performed by hardware (and not CPU), right?
=> That led me to another investigation.
6.) SWT library
org/eclipse/swt/graphics/Device.java
has boolean named useXRender
It seems that there is some difference in libXrender (oneiric version and all newer versions)
- Oneiric version sets device.useXRender (boolean) flag to TRUE
- All other newer version sets it to FALSE
=> I've verified this with a simple Java program which was using libXrender1.so from Ubuntu Oneiric (11.10) and from Ubuntu Raring (13.04).
When Oneiric's version was used => Device.useXRender flag was set to TRUE.
When newer version of the same library was put on the LD_LIBRARY_PATH => Device.useXRender flag was set to FALSE.
Strange...still need more investigation what's going on :-(...
I still don't have a solution but here are my latest findings about this issue:
1.) WID process uses following files: WID62/configura tion/org. eclipse. osgi/bundles/ 2282/1/ .cp/libswt- cairo-gtk- 3453.so WID62/configura tion/org. eclipse. osgi/bundles/ 2282/1/ .cp/libswt- atk-gtk- 3453.so WID62/configura tion/org. eclipse. osgi/bundles/ 2282/1/ .cp/libswt- pi-gtk- 3453.so WID62/configura tion/org. eclipse. osgi/bundles/ 2282/1/ .cp/libswt- gtk-3453. so SDPShared/ plugins/ org.eclipse. swt_3.4. 2.v3453a. jar SDPShared/ plugins/ org.eclipse. swt.gtk. linux.x86_ 3.4.1.v3453a. jar
lsof -p <PID> | grep swt
eclipse 7819 rstribrn mem REG 8,7 40736 1058233 /opt/IBM/
eclipse 7819 rstribrn mem REG 8,7 23060 1058235 /opt/IBM/
eclipse 7819 rstribrn mem REG 8,7 352276 1058234 /opt/IBM/
eclipse 7819 rstribrn mem REG 8,7 11360 1058230 /opt/IBM/
eclipse 7819 rstribrn 102r REG 8,7 17000 3424093 /opt/IBM/
eclipse 7819 rstribrn 112r REG 8,7 2066776 3421737 /opt/IBM/
lsof -p <PID> | grep gtk i386-linux- gnu/gtk- 2.0/2.10. 0/printbackends /libprintbacken d-cups. so i386-linux- gnu/gtk- 2.0/2.10. 0/printbackends /libprintbacken d-file. so WID62/configura tion/org. eclipse. osgi/bundles/ 2282/1/ .cp/libswt- cairo-gtk- 3453.so WID62/configura tion/org. eclipse. osgi/bundles/ 2282/1/ .cp/libswt- atk-gtk- 3453.so i386-linux- gnu/gtk- 2.0/2.10. 0/immodules/ im-ibus. so WID62/configura tion/org. eclipse. osgi/bundles/ 2282/1/ .cp/libswt- pi-gtk- 3453.so WID62/configura tion/org. eclipse. osgi/bundles/ 2282/1/ .cp/libswt- gtk-3453. so i386-linux- gnu/gtk- 2.0/2.10. 0/engines/ libmurrine. so i386-linux- gnu/libgtk- x11-2.0. so.0.2400. 17 i386-linux- gnu/libcanberra -gtk.so. 0.1.9 i386-linux- gnu/gtk- 2.0/modules/ libcanberra- gtk-module. so WID62/plugins/ org.eclipse. equinox. launcher. gtk.linux. x86_1.0. 101.R34x_ v20080805/ eclipse_ 1115.so SDPShared/ plugins/ org.eclipse. swt.gtk. linux.x86_ 3.4.1.v3453a. jar
eclipse 14813 rstribrn mem REG 8,1 80704 15754 /usr/lib/
eclipse 14813 rstribrn mem REG 8,1 18068 4218 /usr/lib/
eclipse 14813 rstribrn mem REG 8,7 40736 1058233 /opt/IBM/
eclipse 14813 rstribrn mem REG 8,7 23060 1058235 /opt/IBM/
eclipse 14813 rstribrn mem REG 8,1 26512 6241 /usr/lib/
eclipse 14813 rstribrn mem REG 8,7 352276 1058234 /opt/IBM/
eclipse 14813 rstribrn mem REG 8,7 11360 1058230 /opt/IBM/
eclipse 14813 rstribrn mem REG 8,1 219296 31730 /usr/lib/
eclipse 14813 rstribrn mem REG 8,1 4617044 931729 /usr/lib/
eclipse 14813 rstribrn mem REG 8,1 17948 926032 /usr/lib/
eclipse 14813 rstribrn mem REG 8,1 22156 529 /usr/lib/
eclipse 14813 rstribrn mem REG 8,7 133193 790237 /opt/IBM/
eclipse 14813 rstribrn 182r REG 8,7 2066776 3421737 /opt/IBM/
lsof -p <PID> | grep gdk i386-linux- gnu/gdk- pixbuf- 2.0/2.10. 0/loaders/ libpixbufloader -svg.so i386-linux- gnu/gdk- pixbuf- 2.0/2.10. 0/loaders/ libpixbufloader -png.so i386-linux- gnu/gdk- pixbuf- 2.0/2.10. 0/loaders/ libpixbufloader -gif.so i386-linux- gnu/gdk- pixbuf- 2.0/2.10. 0/loaders/ libpixbufloader -bmp.so i386-linux- gnu/libgdk- x11-2.0. so.0.2400. 17 i386-linux- gnu/libgdk_ pixbuf- 2.0.so. 0.2800. 0
eclipse 14813 rstribrn mem REG 8,1 5604 1454545 /usr/lib/
eclipse 14813 rstribrn mem REG 8,1 18044 1458116 /usr/lib/
eclipse 14813 rstribrn mem REG 8,1 26176 1457839 /usr/lib/
eclipse 14813 rstribrn mem REG 8,1 13768 1457834 /usr/lib/
eclipse 14813 rstribrn mem REG 8,1 712732 924837 /usr/lib/
eclipse 14813 rstribrn mem REG 8,1 137196 924851 /usr/lib/
2.) kill -3 <PID> 20130429. 181810. 32056.0005. txt 0x09288400, j9thread_ t:0x0926C02C, java/lang/ Thread: 0x98B60020, state:R, prio=6 swt/internal/ gtk/OS. _gdk_pixbuf_ scale_simple( Native Method) swt/internal/ gtk/OS. gdk_pixbuf_ scale_simple( OS.java: 3154(Compiled Code)) swt/graphics/ GC.scale( GC.java: 1105(Compiled Code)) swt/graphics/ GC.drawImage( GC.java: 884(Compiled Code)) swt/graphics/ GC.drawImage( GC.java: 873(Compiled Code)) swt/graphics/ GC.drawImage( GC.java: 759(Compiled Code)) swt/graphics/ ImageData. fillGradientRec tangle( ImageData. java:3597( Compiled Code)) swt/graphics/ GC.fillGradient Rectangle( GC.java: 1833(Compiled Code)) draw2d/ SWTGraphics. fillGradient( SWTGraphics. java:515( Compiled Code)) draw2d/ Graphics. fillGradient( Graphics. java:412( Compiled Code)) wbit/bpel/ ui/editparts/ borders/ GradientBorder. paintGradient( Bytecode PC:18(Compiled Code)) wbit/bpel/ ui/editparts/ figures/ GradientFigure. paintClientArea (Bytecode PC:28(Compiled Code)) draw2d/ Figure. paint(Figure. java:1051( Compiled Code)) draw2d/ Figure. paintChildren( Figure. java:1087( Compiled Code)) draw2d/ Figure. paintClientArea (Figure. java:1119( Compiled Code)) draw2d/ Figure. paint(Figure. java:1051( Compiled Code)) draw2d/ Figure. paintChildren( Figure. java:1087( Compiled Code)) draw2d/ Figure. paintClientArea (Figure. java:1119( Compiled Code))
javacore.
3XMTHREADINFO "main" J9VMThread:
3XMTHREADINFO1 (native thread ID:0x7D38, native priority:0x6, native policy:UNKNOWN)
3XMTHREADINFO2 (native stack address range from:0xFF27A000, to:0xFFA7A000, size:0x800000)
3XMTHREADINFO3 Java callstack:
4XESTACKTRACE at org/eclipse/
4XESTACKTRACE at org/eclipse/
4XESTACKTRACE at org/eclipse/
4XESTACKTRACE at org/eclipse/
4XESTACKTRACE at org/eclipse/
4XESTACKTRACE at org/eclipse/
4XESTACKTRACE at org/eclipse/
4XESTACKTRACE at org/eclipse/
4XESTACKTRACE at org/eclipse/
4XESTACKTRACE at org/eclipse/
4XESTACKTRACE at com/ibm/
4XESTACKTRACE at com/ibm/
4XESTACKTRACE at org/eclipse/
4XESTACKTRACE at org/eclipse/
4XESTACKTRACE at org/eclipse/
4XESTACKTRACE at org/eclipse/
4XESTACKTRACE at org/eclipse/
4XESTACKTRACE at org/eclipse/
2CLTEXTCLLIB Loader org/eclipse/ osgi/internal/ baseadaptor/ DefaultClassLoa der(0x993A33C8) WID62/configura tion/org. eclipse. osgi/bundles/ 2282/1/ .cp/libswt- gtk-3453. so WID62/configura tion/org. eclipse. osgi/bundles/ 2282/1/ .cp/libswt- pi-gtk- 3453.so WID62/configura tion/org. eclipse. osgi/bundles/ 2282/1/ .cp/libswt- atk-gtk- 3453.so WID62/configura tion/org. eclipse. osgi/bundles/ 2282/1/ .cp/libswt- cairo-gtk- 3453.so
3CLTEXTLIB /opt/IBM/
3CLTEXTLIB /opt/IBM/
3CLTEXTLIB /opt/IBM/
3CLTEXTLIB /opt/IBM/
=> So it seems that it is spending the time in OS._gdk_ pixbuf_ scale_simple.
3.) gdk_pixbuf_ scale_simple is provided by libgdk_ pixbuf- 2.0.so
4.) I've verified the differences between the builds of gdk-pixbuf-2.28.0 for oneiric and precise/raring and found no problematic difference.
I've verified the differences between the gdk-pixbuf-2.24.1 (oneiric version) and gdk-pixbuf-2.28.0 (raring) and also found nothing.
5.) However, gdk_pixbuf_ scale_simple function calls gdk_pixbuf_ scale.. .but wait, this function should be performed by hardware (and not CPU), right?
=> That led me to another investigation.
6.) SWT library swt/graphics/ Device. java
org/eclipse/
has boolean named useXRender
It seems that there is some difference in libXrender (oneiric version and all newer versions)
- Oneiric version sets device.useXRender (boolean) flag to TRUE
- All other newer version sets it to FALSE
=> I've verified this with a simple Java program which was using libXrender1.so from Ubuntu Oneiric (11.10) and from Ubuntu Raring (13.04).
When Oneiric's version was used => Device.useXRender flag was set to TRUE.
When newer version of the same library was put on the LD_LIBRARY_PATH => Device.useXRender flag was set to FALSE.
Strange...still need more investigation what's going on :-(...