[Akonadi] [Bug 334218] synchronizations of large folders with filesystem contents hogs a Sandybridge core for minutes stat()ing every file in it

Martin Steigerwald Martin at Lichtvoll.de
Sat May 3 13:39:44 BST 2014


https://bugs.kde.org/show_bug.cgi?id=334218

--- Comment #10 from Martin Steigerwald <Martin at Lichtvoll.de> ---
Sergio, I tried:

107     QStringList listNew() const
108     {
109         static int count = 0; count++;
110         static int elapsed = 0;
111 
112         QDir d( path + QString::fromLatin1( "/new" ) );
113         d.setSorting(QDir::NoSort);
114 
115         QTime t;
116         t.start();
117         QStringList list = d.entryList( QDir::Files );
118         elapsed += t.elapsed();
119         kDebug() <<  "PERF: listNew NoSort " << count << elapsed << "\n";
120         return list;
121 
122         //return d.entryList( QDir::Files );
123     }
124 
125     QStringList listCurrent() const                                         
126     {
127         static int count = 0; count++;
128         static int elapsed = 0;
129 
130         QDir d( path + QString::fromLatin1( "/cur" ) );
131         d.setSorting(QDir::NoSort);
132 
133         QTime t;
134         t.start();
135         QStringList list = d.entryList( QDir::Files );
136         elapsed += t.elapsed();
137         kDebug() <<  "PERF: listCurrent NoSort " << count << elapsed <<
"\n";
138         return list;
139 
140         //return d.entryList( QDir::Files );
141     }

as well as your

-        std::cout <<  "PERF: listNew NoSort " << count << elapsed << "\n";
+        kDebug() <<  "PERF: listNew NoSort " << count << elapsed << "\n";

I see no output on konsole or in ~/.xsession-errors even with full debug
enabled in kdebugdialog before starting akonadi again.

Additionally I look at the callgrind files again and I still think they are
quite different.

The nodirsorting callgrind-vcard.26128.1 has:
- QDir::entryList
- QAlgorithmsPrivate::qSortHelper
- QAlgorithmsPrivate::qSortHelper
- QDirSortItemComparator::operator
- QString::compare

as first 5 out of first 6 entries. And none of it has a very long bar.

Yet the old callgrind-vcard.28282.1  has

- QAlgorithmsPrivat::qSortHelper, lr 145684.95, lr per call  as the first of
the entries and it has a very long outstanding bar. This very long outstanding
bar is basically gone in the new callgrind run. Just look at each

Just look at these two files with kcachegrind to me they look quite different
in the old the sort stuff is dominating everything else by a factor of 10 at
least, in the new it looks way more balanced.

So somewhere QDir may still sort something, but not at the original place
anymore. At least thats my bet on looking at the data. I wonder whether
something else is using QDir as well and did not disable sorting and we see
this now.

-- 
You are receiving this mail because:
You are the assignee for the bug.



More information about the Kdepim-bugs mailing list