[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-kimageshop
Subject: playing with mutrace
From: Boudewijn Rempt <boud () valdyas ! org>
Date: 2009-09-16 6:25:02
Message-ID: 200909160825.02847.boud () valdyas ! org
[Download RAW message or body]
Hi!
Lennart Poettering recently made a new tool, mutrace -- see \
http://0pointer.de/blog/projects/mutrace.html. Initially it didn't work with KDE \
apps but Lennart made it work, so I'm presenting here the first bit of mutrace output \
for Krita!
A bit of drawing, a gradient, the blur filter a second layer and a bit of drawing.
boud@valdiesalie:~/kde/src/svn/kdelibs/kdeui/icons> mutrace --hash-size=40000 krita \
mutrace: 0.1 sucessfully initialized for process krita (pid 9802). \
X Error: BadAtom (invalid Atom parameter) 5 \
Major opcode: 20 (X_GetProperty) \
Resource id: 0x0 \
Enchant dict for "en_US" 0x8f16d98 \
Enchant dict for "en_US" 0x8f16d98 \
Enchant dict for "en_US" 0x8f16d98 \
Enchant dict for "en_US" 0x8f16d98 \
Enchant dict for "en_US" 0x8f16d98 \
QLayout: Attempting to add QLayout "" to QWidget "KritaShape/KisToolBrushoption \
widget", which already has a layout
Object::connect: No such signal KoSliderCombo::valueChanged(int,bool) \
Object::connect: (receiver name: 'KritaFill/KisToolGradient') \
QLayout: Attempting to add QLayout "" to QWidget "KritaShape/KisToolLine", which \
already has a layout QObject::connect: \
Cannot connect KoMainWindow::restoringDone() to (null)::removeUnusedOptionWidgets() \
** (process:9802): WARNING **: 1 dictionaries weren't free'd.
mutrace: Showing statistics for process krita (pid 9802).
mutrace: 2756 mutexes used.
Mutex #289 (0x0x87fa018) first referenced by:
/usr/local/lib/libmutrace.so(pthread_mutex_init+0x124) [0xb80a42a4]
/usr/lib/libQtCore.so.4 [0xb7eadd63]
/usr/lib/libQtCore.so.4(_ZN6QMutexC1ENS_13RecursionModeE+0x37) [0xb7ea92c7]
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN14KisTileManagerC1Ev+0x71) \
[0xb7a99b91]
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN14KisTileManager8instanceEv+0x4e) \
[0xb7a9a0ae]
/home/boud/kde/inst/lib/libkritaimage.so.6 [0xb7a96523] \
/home/boud/kde/inst/lib/libkritaimage.so.6 [0xb7a96974] \
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN19KisTiledDataManagerC2EjPKh+0x81) \
[0xb7a92ae1]
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN14KisPaintDeviceC1E16KisWeakSharedPtrI7KisNodeEPK12KoColorSpaceRK7QString+0x1b6) \
[0xb7b1a806] \
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN13KisGroupLayerC1E16KisWeakSharedPtrI8KisImageERK7QStringh+0x24f) \
[0xb7aef9df]
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN8KisImage4initEP14KisUndoAdapteriiPK12KoColorSpace+0xee) \
[0xb7af5f3e]
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN8KisImageC1EP14KisUndoAdapteriiPK12KoColorSpaceRK7QString+0xea) \
[0xb7af62ca]
/home/boud/kde/inst/lib/libkritaui.so.6 [0xb7d72071] \
/home/boud/kde/inst/lib/libkritaui.so.6(_ZN7KisDoc27loadXMLERK13KoXmlDocumentP7KoStore+0x375) \
[0xb7cc1da5]
/home/boud/kde/inst/lib/libkomain.so.6(_ZN10KoDocument33loadNativeFormatFromStoreInternalEP7KoStore+0x38a) \
[0xb76d023a]
Mutex #1354 (0x0x808f92c) first referenced by:
/usr/local/lib/libmutrace.so(pthread_mutex_lock+0x58) [0xb80a4108]
/usr/lib/libglib-2.0.so.0(g_source_attach+0x97) [0xb56c3ae7]
/usr/lib/libQtCore.so.4(_ZN27QEventDispatcherGlibPrivateC2EP13_GMainContext+0xc8) \
[0xb7fcedf8]
/usr/lib/libQtGui.so.4 [0xb5bc0f3d] \
/usr/lib/libQtGui.so.4 [0xb5bc1023] \
/usr/lib/libQtGui.so.4(_ZN19QApplicationPrivate21createEventDispatcherEv+0x90) \
[0xb5b87640]
/usr/lib/libQtCore.so.4(_ZN16QCoreApplication4initEv+0xac) [0xb7fa64dc] \
/usr/lib/libQtCore.so.4(_ZN16QCoreApplicationC2ER23QCoreApplicationPrivate+0x47) \
[0xb7fa65e7]
/usr/lib/libQtGui.so.4(_ZN12QApplicationC2ERiPPcbi+0x5a) [0xb5b25b7a] \
/usr/lib/libkdeui.so.5(_ZN12KApplicationC2Eb+0x4e) [0xb69e0cbe] \
/home/boud/kde/inst/lib/libkomain.so.6(_ZN13KoApplicationC1Ev+0x2e) \
[0xb76b3d5e]
/home/boud/kde/inst/lib/libkdeinit4_krita.so(kdemain+0x16d) [0xb809f9ed] \
krita [0x80488b2] \
Mutex #1002 (0x0x8804180) first referenced by:
/usr/local/lib/libmutrace.so(pthread_mutex_init+0x124) [0xb80a42a4]
/usr/lib/libQtCore.so.4 [0xb7eadd63]
/usr/lib/libQtCore.so.4(_ZN6QMutexC1ENS_13RecursionModeE+0x37) [0xb7ea92c7]
/home/boud/kde/inst/lib/libkritaimage.so.6 [0xb7a9693f]
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN19KisTiledDataManagerC2EjPKh+0x81) \
[0xb7a92ae1]
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN14KisPaintDeviceC1E16KisWeakSharedPtrI7KisNodeEPK12KoColorSpaceRK7QString+0x1b6) \
[0xb7b1a806] \
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN13KisPaintLayerC1E12KisSharedPtrI8KisImageERK7QStringhPK12KoColorSpace+0x158) \
[0xb7b234c8]
/home/boud/kde/inst/lib/libkritaui.so.6 [0xb7d6c66d] \
/home/boud/kde/inst/lib/libkritaui.so.6 [0xb7d6f9b7] \
/home/boud/kde/inst/lib/libkritaui.so.6 [0xb7d70d81] \
/home/boud/kde/inst/lib/libkritaui.so.6 [0xb7d7212a] \
/home/boud/kde/inst/lib/libkritaui.so.6(_ZN7KisDoc27loadXMLERK13KoXmlDocumentP7KoStore+0x375) \
[0xb7cc1da5]
/home/boud/kde/inst/lib/libkomain.so.6(_ZN10KoDocument33loadNativeFormatFromStoreInternalEP7KoStore+0x38a) \
[0xb76d023a]
/home/boud/kde/inst/lib/libkomain.so.6(_ZN10KoDocument25loadNativeFormatFromStoreERK7QString+0xa6) \
[0xb76d0d46]
/home/boud/kde/inst/lib/libkomain.so.6(_ZN10KoDocument16loadNativeFormatERK7QString+0x1a1) \
[0xb76d1071]
Mutex #83 (0x0x9368274) first referenced by:
/usr/local/lib/libmutrace.so(pthread_mutex_lock+0x58) [0xb80a4108]
/usr/lib/libglib-2.0.so.0(g_source_attach+0x97) [0xb56c3ae7]
/usr/lib/libQtCore.so.4(_ZN27QEventDispatcherGlibPrivateC1EP13_GMainContext+0xc8) \
[0xb7fcf098]
/usr/lib/libQtCore.so.4(_ZN20QEventDispatcherGlibC1EP7QObject+0x3b) \
[0xb7fcf3ab]
/usr/lib/libQtCore.so.4 [0xb7eae3a4] \
/usr/lib/libQtCore.so.4 [0xb7eae549] \
/lib/libpthread.so.0 [0xb7e4c1b5] \
/lib/libc.so.6(clone+0x5e) [0xb58493be] \
Mutex #1968 (0x0x8505f50) first referenced by:
/usr/local/lib/libmutrace.so(pthread_mutex_init+0x124) [0xb80a42a4]
/usr/lib/libQtCore.so.4 [0xb7eadd63]
/usr/lib/libQtCore.so.4(_ZN6QMutexC1ENS_13RecursionModeE+0x37) [0xb7ea92c7]
/home/boud/kde/inst/lib/libkritaimage.so.6 [0xb7a9693f]
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN19KisTiledDataManager4readEP7KoStore+0x15b) \
[0xb7a9219b]
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN14KisPaintDevice4readEP7KoStore+0x37) \
[0xb7b19c37]
/home/boud/kde/inst/lib/libkritaui.so.6 [0xb7d6902e] \
/home/boud/kde/inst/lib/libkritaui.so.6 [0xb7d6ab8b] \
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN13KisPaintLayer6acceptER14KisNodeVisitor+0x18) \
[0xb7b20d38]
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN14KisNodeVisitor8visitAllEP7KisNodeb+0x57) \
[0xb7b18a87]
/home/boud/kde/inst/lib/libkritaui.so.6 [0xb7d68529] \
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN13KisGroupLayer6acceptER14KisNodeVisitor+0x18) \
[0xb7aece68]
/home/boud/kde/inst/lib/libkritaui.so.6 [0xb7d6d2a2] \
/home/boud/kde/inst/lib/libkritaui.so.6(_ZN7KisDoc215completeLoadingEP7KoStore+0xcd) \
[0xb7cc27fd]
/home/boud/kde/inst/lib/libkomain.so.6(_ZN10KoDocument33loadNativeFormatFromStoreInternalEP7KoStore+0x140) \
[0xb76cfff0]
Mutex #798 (0x0x88c40c8) first referenced by:
/usr/local/lib/libmutrace.so(pthread_mutex_init+0x124) [0xb80a42a4]
/usr/lib/libQtCore.so.4 [0xb7eadd63]
/usr/lib/libQtCore.so.4(_ZN6QMutexC1ENS_13RecursionModeE+0x37) [0xb7ea92c7]
/home/boud/kde/inst/lib/libkoresources.so.6(_ZN24KoResourceServerProviderC1Ev+0x6be) \
[0xb732831e]
/home/boud/kde/inst/lib/libkoresources.so.6(_ZN24KoResourceServerProvider8instanceEv+0x4e) \
[0xb732859e]
/home/boud/kde/inst/lib/kde4/karbondockersplugin.so [0xb12f7055] \
/home/boud/kde/inst/lib/kde4/karbondockersplugin.so [0xb12fc43b] \
/home/boud/kde/inst/lib/libkomain.so.6(_ZN12KoMainWindow16createDockWidgetEP13KoDockFactory+0x56f) \
[0xb76ecf9f]
/home/boud/kde/inst/lib/libkomain.so.6(_ZN6KoView16createDockWidgetEP13KoDockFactory+0x3f) \
[0xb771289f]
/home/boud/kde/inst/lib/libkomain.so.6(_ZN6KoViewC2EP10KoDocumentP7QWidget+0x448) \
[0xb7714528]
/home/boud/kde/inst/lib/libkritaui.so.6(_ZN8KisView2C1EP7KisDoc2P7QWidget+0x4b) \
[0xb7d409cb]
/home/boud/kde/inst/lib/libkritaui.so.6(_ZN7KisDoc218createViewInstanceEP7QWidget+0x3e) \
[0xb7cc0abe]
/home/boud/kde/inst/lib/libkomain.so.6(_ZN10KoDocument10createViewEP7QWidget+0x21) \
[0xb76c1081]
/home/boud/kde/inst/lib/libkomain.so.6(_ZN12KoMainWindow15setRootDocumentEP10KoDocument+0x353) \
[0xb76eed53]
/home/boud/kde/inst/lib/libkomain.so.6(_ZN10KoDocument17showStartUpWidgetEP12KoMainWindowb+0x27c) \
[0xb76cbc9c]
Mutex #2002 (0x0x8506688) first referenced by:
/usr/local/lib/libmutrace.so(pthread_mutex_init+0x124) [0xb80a42a4]
/usr/lib/libQtCore.so.4 [0xb7eadd63]
/usr/lib/libQtCore.so.4(_ZN6QMutexC1ENS_13RecursionModeE+0x37) [0xb7ea92c7]
/home/boud/kde/inst/lib/libkritaimage.so.6 [0xb7a9693f]
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN19KisTiledDataManager4readEP7KoStore+0x15b) \
[0xb7a9219b]
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN14KisPaintDevice4readEP7KoStore+0x37) \
[0xb7b19c37]
/home/boud/kde/inst/lib/libkritaui.so.6 [0xb7d6902e] \
/home/boud/kde/inst/lib/libkritaui.so.6 [0xb7d6ab8b] \
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN13KisPaintLayer6acceptER14KisNodeVisitor+0x18) \
[0xb7b20d38]
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN14KisNodeVisitor8visitAllEP7KisNodeb+0x57) \
[0xb7b18a87]
/home/boud/kde/inst/lib/libkritaui.so.6 [0xb7d68529] \
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN13KisGroupLayer6acceptER14KisNodeVisitor+0x18) \
[0xb7aece68]
/home/boud/kde/inst/lib/libkritaui.so.6 [0xb7d6d2a2] \
/home/boud/kde/inst/lib/libkritaui.so.6(_ZN7KisDoc215completeLoadingEP7KoStore+0xcd) \
[0xb7cc27fd]
/home/boud/kde/inst/lib/libkomain.so.6(_ZN10KoDocument33loadNativeFormatFromStoreInternalEP7KoStore+0x140) \
[0xb76cfff0]
Mutex #2583 (0x0x8051c18) first referenced by:
/usr/local/lib/libmutrace.so(pthread_mutex_lock+0x58) [0xb80a4108]
/usr/lib/libQtCore.so.4 [0xb7eadad7]
/usr/lib/libQtCore.so.4(_ZN6QMutex4lockEv+0x165) [0xb7ea91f5]
/usr/lib/libQtCore.so.4(_ZN11QMetaObject7connectEPK7QObjectiS2_iiPi+0x61) \
[0xb7fb4fc1]
/usr/lib/libQtCore.so.4(_ZN7QObject7connectEPKS_PKcS1_S3_N2Qt14ConnectionTypeE+0x3a2) \
[0xb7fb5472]
/home/boud/kde/inst/lib/libkritaui.so.6(_ZN12KisCmbIDListC1EP7QWidgetPKc+0xbb) \
[0xb7da557b]
/home/boud/kde/inst/lib/libkritalibpaintop.so.6(_ZN17KisSensorSelectorC1EP7QWidget+0x14b) \
[0xb212e72b]
/home/boud/kde/inst/lib/libkritalibpaintop.so.6(_ZN14KisCurveOptionC2ERK7QStringS2_b+0x1a5) \
[0xb2121805]
/home/boud/kde/inst/lib/libkritalibpaintop.so.6(_ZN24KisPressureOpacityOptionC1Ev+0x7d) \
[0xb212c55d]
/home/boud/kde/inst/lib/kde4/kritacomplexbrush.so [0xb20cd0ce] \
/home/boud/kde/inst/lib/kde4/kritacomplexbrush.so [0xb20cd4db] \
/home/boud/kde/inst/lib/kde4/kritacomplexbrush.so [0xb20ca1e9] \
/home/boud/kde/inst/lib/kde4/kritacomplexbrush.so [0xb20ca70c] \
Mutex #176 (0x0x9083570) first referenced by:
/usr/local/lib/libmutrace.so(pthread_mutex_init+0x124) [0xb80a42a4]
/usr/lib/libQtCore.so.4 [0xb7eadd63]
/usr/lib/libQtCore.so.4(_ZN6QMutexC1ENS_13RecursionModeE+0x37) [0xb7ea92c7]
/home/boud/kde/inst/lib/libkritaui.so.6(_ZN25KisResourceServerProviderC1Ev+0x317) \
[0xb7d23147]
/home/boud/kde/inst/lib/libkritaui.so.6(_ZN25KisResourceServerProvider8instanceEv+0x4e) \
[0xb7d2363e]
/home/boud/kde/inst/lib/libkritaui.so.6 [0xb7dc53b6] \
/home/boud/kde/inst/lib/libkritaui.so.6 [0xb7cb263d] \
/home/boud/kde/inst/lib/libkritaui.so.6 [0xb7cb3067] \
/home/boud/kde/inst/lib/libkritaui.so.6(_ZN8KisView29createGUIEv+0x1fd) \
[0xb7d3d07d]
/home/boud/kde/inst/lib/libkritaui.so.6(_ZN8KisView2C1EP7KisDoc2P7QWidget+0x4e8) \
[0xb7d40e68]
/home/boud/kde/inst/lib/libkritaui.so.6(_ZN7KisDoc218createViewInstanceEP7QWidget+0x3e) \
[0xb7cc0abe]
/home/boud/kde/inst/lib/libkomain.so.6(_ZN10KoDocument10createViewEP7QWidget+0x21) \
[0xb76c1081]
/home/boud/kde/inst/lib/libkomain.so.6(_ZN12KoMainWindow15setRootDocumentEP10KoDocument+0x353) \
[0xb76eed53]
/home/boud/kde/inst/lib/libkomain.so.6(_ZN10KoDocument17showStartUpWidgetEP12KoMainWindowb+0x27c) \
[0xb76cbc9c]
/home/boud/kde/inst/lib/libkomain.so.6(_ZN13KoApplication5startEv+0xcc2) \
[0xb76b4c52]
Mutex #2229 (0x0x804dea8) first referenced by:
/usr/local/lib/libmutrace.so(pthread_mutex_lock+0x58) [0xb80a4108]
/usr/lib/libQtCore.so.4 [0xb7eadad7]
/usr/lib/libQtCore.so.4(_ZN6QMutex4lockEv+0xfd) [0xb7ea918d]
/usr/lib/libQtCore.so.4(_ZN19QAbstractFileEngine6createERK7QString+0x248) \
[0xb7f245d8] /usr/lib/libQtCore.so.4 [0xb7f39510]
/usr/lib/libkdecore.so.5 [0xb6742246]
/usr/lib/libkdecore.so.5 [0xb673b7a0]
/usr/lib/libkdecore.so.5(_ZN8KLibraryC1ERK7QStringRK14KComponentDataP7QObject+0x36) \
[0xb673bb96]
/usr/lib/libkdecore.so.5(_ZN10KLibLoader7libraryERK7QString6QFlagsIN8QLibrary8LoadHintEE+0x68) \
[0xb673afc8]
/home/boud/kde/inst/lib/libkoplugin.so.6(_ZN14KoPluginLoader4loadERK7QStringS2_RKNS_13PluginsConfigE+0x1383) \
[0xb70c3703]
/home/boud/kde/inst/lib/libkritaimage.so.6(_ZN18KisPaintOpRegistry8instanceEv+0xc6) \
[0xb7aae8a6]
/home/boud/kde/inst/lib/libkritaui.so.6(_ZN11KisFactory213componentDataEv+0x225) \
[0xb7cc8475]
/home/boud/kde/inst/lib/libkritaui.so.6(_ZN11KisFactory2C1EP7QObject+0x51) \
[0xb7cc8d61]
mutrace: Showing 10 most contended mutexes:
Mutex # Locked Changed Cont. tot.Time[ms] avg.Time[ms] max.Time[ms] Flag
289 2728870 222349 143464 5590.908 0.002 5.469 x.--
1354 2445278 1009 315 5576.579 0.002 12.141 -.--
1002 4812 464 259 9.827 0.002 0.134 -.--
83 2743 110 46 6.286 0.002 0.022 -.--
1968 817 136 27 1.725 0.002 0.012 -.--
798 249 174 12 1.235 0.005 0.056 -.--
2002 2079 110 10 4.077 0.002 0.007 -.--
2583 341 219 8 1.198 0.004 0.060 -.--
176 41 31 5 0.157 0.004 0.011 -.--
2229 11 8 4 0.034 0.003 0.007 -.--
... ... ... ... ... ... ... ||||
/|||
State: x = dead, ! = inconsistent /||
Use: R = used in realtime thread /|
Type: r = RECURSIVE, e = ERRRORCHECK, a = ADAPTIVE /
Protocol: i = INHERIT, p = PROTECT
mutrace: Note that the flags column R is only valid in --track-rt mode!
mutrace: Total runtime is 61917.355 ms.
mutrace: WARNING: 99 internal hash collisions detected. Results might not be as \
reliable as they could be.
mutrace: Try to increase --hash-size=, which is currently at 40000.
I think this tool should be able to help us a lot! This is with the old tile engine, \
and as you can see the contention for the Great Big Krita Lock is really high and \
completely kills us. We knew it was bad of course, but now we've been able to measure \
it! I'm going to retry with the new tile engine now.
--
Boudewijn Rempt | http://www.valdyas.org
_______________________________________________
kimageshop mailing list
kimageshop@kde.org
https://mail.kde.org/mailman/listinfo/kimageshop
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic