* Notmuch performance problems on OSX
@ 2010-01-14 15:30 Oliver Charles
2010-01-14 23:16 ` Carl Worth
2010-01-15 3:58 ` Olly Betts
0 siblings, 2 replies; 8+ messages in thread
From: Oliver Charles @ 2010-01-14 15:30 UTC (permalink / raw
To: notmuch
Actually, significant performance problems. Ho ho ho. (sorry)
I've installed the latest notmuch from Git at this time of writing,
along with Xapian from SVN head. However, just tagging a single thread
with only one message seems to take too long:
$ time notmuch tag +dissertation thread:7dc536441e6deade4256a46d46451221
real 0m0.812s
user 0m0.022s
sys 0m0.037s
And tagging all my messages is really horrible:
$ time notmuch tag +foobar tag:inbox
real 0m5.076s
user 0m3.688s
sys 0m0.105s
Here is what my notmuch binary links with:
$ otool -L /usr/local/bin/notmuch
/usr/local/bin/notmuch:
/usr/local/Cellar/gmime/2.4.0/lib/libgmime-2.4.2.dylib (compatibility
version 7.0.0, current version 7.0.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
/usr/local/Cellar/glib/2.20.5/lib/libgobject-2.0.0.dylib
(compatibility version 2001.0.0, current version 2001.5.0)
/usr/local/Cellar/glib/2.20.5/lib/libglib-2.0.0.dylib (compatibility
version 2001.0.0, current version 2001.5.0)
/usr/local/Cellar/gettext/0.17/lib/libintl.8.dylib (compatibility
version 9.0.0, current version 9.2.0)
/usr/local/Cellar/xapian-svn/HEAD/lib/libxapian-1.1.3.dylib
(compatibility version 4.0.0, current version 4.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
version 111.1.4)
That xapian-svn was built from svn HEAD right now, so I'm assuming it
contains the #250 fix (http://trac.xapian.org/changeset/13808)
Any ideas?
--
Oliver Charles / aCiD2
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Notmuch performance problems on OSX
2010-01-14 15:30 Notmuch performance problems on OSX Oliver Charles
@ 2010-01-14 23:16 ` Carl Worth
2010-01-18 18:35 ` Oliver Charles
2010-01-15 3:58 ` Olly Betts
1 sibling, 1 reply; 8+ messages in thread
From: Carl Worth @ 2010-01-14 23:16 UTC (permalink / raw
To: Oliver Charles, notmuch
[-- Attachment #1: Type: text/plain, Size: 2728 bytes --]
Hi Oliver, welcome to notmuch!
On Thu, 14 Jan 2010 15:30:48 +0000, Oliver Charles <oliver.g.charles@googlemail.com> wrote:
> I've installed the latest notmuch from Git at this time of writing,
> along with Xapian from SVN head. However, just tagging a single thread
> with only one message seems to take too long:
>
> $ time notmuch tag +dissertation thread:7dc536441e6deade4256a46d46451221
>
> real 0m0.812s
> user 0m0.022s
> sys 0m0.037s
Things work quite a bit faster than that on my machine:
$ time notmuch tag +foo id:5641883d1001140730l22832715ld6bdc95c9938d314@mail.gmail.com
real 0m0.024s
user 0m0.012s
sys 0m0.004s
But that could just be system differences.
> And tagging all my messages is really horrible:
>
> $ time notmuch tag +foobar tag:inbox
>
> real 0m5.076s
> user 0m3.688s
> sys 0m0.105s
For this operation, I can't really compare. How many messages are you
tagging? Here's that operation for me with 525 messages in my inbox:
$ time notmuch tag +foobar tag:inbox
real 0m1.551s
user 0m1.504s
sys 0m0.016s
> That xapian-svn was built from svn HEAD right now, so I'm assuming it
> contains the #250 fix (http://trac.xapian.org/changeset/13808)
Which I think means that things could have been even *much* slower
before. ;-)
The Xapian defect #250 was just one, initial (and obvious) performance
problem. [Though, as I mentioned in a previous thread, if you're using a
Xapian flint database, (look for .notmuch/xapian/iamflint), then you
won't get the benefit of the Xapian fix until you rebuild your notmuch
database from scratch with a current notmuch.]
Once you've verified that you've got the #250 fix functional, there
could still be lots of performance bugs. And it would be time to start
profiling.
Perhaps the "notmuch daemon" idea (which we've proposed earlier for
other reasons) could help reduce overhead from reading the database and
writing it back out again. So that might be one avenue to explore for
fixing things.
I have no idea what OS X does, but Linux keeps my notmuch database in
its buffer cache so I can do these operations without even touching
"disk" (which is actually an SSD anyway, which also helps). I just
tried, and was able to get the single-message tag operation to be 3
times slower by dropping the cache:
$ sudo sh -c "echo 3 > /proc/sys/vm/drop_caches "
$ time notmuch tag +foo id:5641883d1001140730l22832715ld6bdc95c9938d314@mail.gmail.com
real 0m0.062s
user 0m0.000s
sys 0m0.020s
But again, whatever the performance problem might be, the first step
would be to examine some profiles. (And I'm clueless, myself as to what
profiling tools might be available for OS X.)
-Carl
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Notmuch performance problems on OSX
2010-01-14 15:30 Notmuch performance problems on OSX Oliver Charles
2010-01-14 23:16 ` Carl Worth
@ 2010-01-15 3:58 ` Olly Betts
2010-02-16 3:53 ` Stewart Smith
1 sibling, 1 reply; 8+ messages in thread
From: Olly Betts @ 2010-01-15 3:58 UTC (permalink / raw
To: notmuch
On 2010-01-14, Oliver Charles wrote:
> I've installed the latest notmuch from Git at this time of writing,
> along with Xapian from SVN head. However, just tagging a single thread
> with only one message seems to take too long:
One difference between OS X and other systems is that OS X supports the
F_FULLSYNC ioctl, and other systems don't (currently, at least AFAIK)
and Xapian uses that if it is available to ensure that changes have
actually made it to disk:
http://trac.xapian.org/ticket/288
On other systems, it uses fdatasync() or fsync(), which typically just
ensure that the data has left the OS - it can sit in disk controller or
drive caches for potentially seconds longer. This call happens once
per table for every (explicit or implicit) flush on a database.
I can see an issue here which is that currently Xapian writes the base
file for the table, then syncs it, then does the next table. I bet it
would be more efficient to write them all and then sync them all,
especially with F_FULLSYNC.
I'll take a look at doing that, and have created a ticket for it:
http://trac.xapian.org/ticket/426
If after that this is still causing problems, it should probably be made
configurable what (if any) flushing is done. If you're on a UPS-backed
server, you probably don't need such paranoia.
Cheers,
Olly
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Notmuch performance problems on OSX
2010-01-14 23:16 ` Carl Worth
@ 2010-01-18 18:35 ` Oliver Charles
2010-02-09 20:46 ` Oliver Charles
0 siblings, 1 reply; 8+ messages in thread
From: Oliver Charles @ 2010-01-18 18:35 UTC (permalink / raw
To: Carl Worth; +Cc: notmuch
On Thu, Jan 14, 2010 at 11:16 PM, Carl Worth <cworth@cworth.org> wrote:
> Hi Oliver, welcome to notmuch!
>
> On Thu, 14 Jan 2010 15:30:48 +0000, Oliver Charles <oliver.g.charles@googlemail.com> wrote:
>> I've installed the latest notmuch from Git at this time of writing,
>> along with Xapian from SVN head. However, just tagging a single thread
>> with only one message seems to take too long:
>>
>> $ time notmuch tag +dissertation thread:7dc536441e6deade4256a46d46451221
>>
>> real 0m0.812s
>> user 0m0.022s
>> sys 0m0.037s
>
> Things work quite a bit faster than that on my machine:
>
> $ time notmuch tag +foo id:5641883d1001140730l22832715ld6bdc95c9938d314@mail.gmail.com
>
> real 0m0.024s
> user 0m0.012s
> sys 0m0.004s
>
> But that could just be system differences.
Possibly, though my machine is more than capable of what it's doing -
a Q6600 with 4gb RAM
>> And tagging all my messages is really horrible:
>>
>> $ time notmuch tag +foobar tag:inbox
>>
>> real 0m5.076s
>> user 0m3.688s
>> sys 0m0.105s
>
> For this operation, I can't really compare. How many messages are you
> tagging? Here's that operation for me with 525 messages in my inbox:
A few thousand (4k, I believe)
>> That xapian-svn was built from svn HEAD right now, so I'm assuming it
>> contains the #250 fix (http://trac.xapian.org/changeset/13808)
>
> Which I think means that things could have been even *much* slower
> before. ;-)
>
> The Xapian defect #250 was just one, initial (and obvious) performance
> problem. [Though, as I mentioned in a previous thread, if you're using a
> Xapian flint database, (look for .notmuch/xapian/iamflint), then you
> won't get the benefit of the Xapian fix until you rebuild your notmuch
> database from scratch with a current notmuch.]
I didn't know about this need to rebuild, but I tried that and didn't
have any more success sadly.
> Once you've verified that you've got the #250 fix functional, there
> could still be lots of performance bugs. And it would be time to start
> profiling.
>
> [...]
I'm pressed for time at the moment, but in a few weeks I might have
some time to investigate here...
--
Oliver Charles / aCiD2
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Notmuch performance problems on OSX
2010-01-18 18:35 ` Oliver Charles
@ 2010-02-09 20:46 ` Oliver Charles
2010-02-09 22:09 ` Olly Betts
0 siblings, 1 reply; 8+ messages in thread
From: Oliver Charles @ 2010-02-09 20:46 UTC (permalink / raw
To: Carl Worth; +Cc: notmuch
I just upgraded to xapian-core HEAD and notmuch master tip today, in
desparation to get away from GMail. Sadly it's still taking at least
0.7s to tag a single thread (with one message). I'm really eager to
solve this, could anyone give me any pointers on how I could go about
profiling it or finding the cause of this problem?
--
Oliver Charles / aCiD2
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Notmuch performance problems on OSX
2010-02-09 20:46 ` Oliver Charles
@ 2010-02-09 22:09 ` Olly Betts
2010-02-09 22:16 ` Oliver Charles
0 siblings, 1 reply; 8+ messages in thread
From: Olly Betts @ 2010-02-09 22:09 UTC (permalink / raw
To: notmuch
On 2010-02-09, Oliver Charles wrote:
> I just upgraded to xapian-core HEAD and notmuch master tip today, in
> desparation to get away from GMail. Sadly it's still taking at least
> 0.7s to tag a single thread (with one message). I'm really eager to
> solve this, could anyone give me any pointers on how I could go about
> profiling it or finding the cause of this problem?
The first thing to try is disabling use of F_FULLFSYNC. You'll need to
run this command in the xapian-core source tree to comment out the F_FULLFSYNC
code:
perl -pi -e 's/^#ifdef F_FULLFSYNC/#if 0/' backends/*/*_io.h
Then run "make" and "make install".
This makes you a bit more vulnerable to power failures, but no worse than
a typical Unix system. There's some background here:
http://lists.apple.com/archives/Darwin-dev/2005/Feb/msg00072.html
Assuming that helps, then (a) you have a workaround, and (b) we'll know for
sure it is F_FULLFSYNC to blame.
I've created a ticket for a change to Xapian which should help here, but
not had a chance to work on it yet:
http://trac.xapian.org/ticket/426
Cheers,
Olly
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Notmuch performance problems on OSX
2010-02-09 22:09 ` Olly Betts
@ 2010-02-09 22:16 ` Oliver Charles
0 siblings, 0 replies; 8+ messages in thread
From: Oliver Charles @ 2010-02-09 22:16 UTC (permalink / raw
To: Olly Betts; +Cc: notmuch
On Tue, Feb 9, 2010 at 10:09 PM, Olly Betts <olly@survex.com> wrote:
> On 2010-02-09, Oliver Charles wrote:
>> I just upgraded to xapian-core HEAD and notmuch master tip today, in
>> desparation to get away from GMail. Sadly it's still taking at least
>> 0.7s to tag a single thread (with one message). I'm really eager to
>> solve this, could anyone give me any pointers on how I could go about
>> profiling it or finding the cause of this problem?
>
> The first thing to try is disabling use of F_FULLFSYNC. You'll need to
> run this command in the xapian-core source tree to comment out the F_FULLFSYNC
> code:
>
> perl -pi -e 's/^#ifdef F_FULLFSYNC/#if 0/' backends/*/*_io.h
>
> Then run "make" and "make install".
$ time notmuch tag +inbox thread:6e66368b7887184c6d4c63653211b3f2
real 0m0.067s
user 0m0.036s
sys 0m0.028s
Now this looks a little bit more usable!
> Assuming that helps, then (a) you have a workaround, and (b) we'll know for
> sure it is F_FULLFSYNC to blame.
Looks like this is the case.
> I've created a ticket for a change to Xapian which should help here, but
> not had a chance to work on it yet:
>
> http://trac.xapian.org/ticket/426
I will add my info there and follow the ticket if I can.
--
Oliver Charles / aCiD2
(Olly, sorry about the double email - in all my excitement I didn't
hit reply all :))
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Notmuch performance problems on OSX
2010-01-15 3:58 ` Olly Betts
@ 2010-02-16 3:53 ` Stewart Smith
0 siblings, 0 replies; 8+ messages in thread
From: Stewart Smith @ 2010-02-16 3:53 UTC (permalink / raw
To: Olly Betts, notmuch
On Fri, 15 Jan 2010 03:58:50 +0000 (UTC), Olly Betts <olly@survex.com> wrote:
> One difference between OS X and other systems is that OS X supports the
> F_FULLSYNC ioctl, and other systems don't (currently, at least AFAIK)
> and Xapian uses that if it is available to ensure that changes have
> actually made it to disk:
>
> http://trac.xapian.org/ticket/288
>
> On other systems, it uses fdatasync() or fsync(), which typically just
> ensure that the data has left the OS - it can sit in disk controller or
> drive caches for potentially seconds longer. This call happens once
> per table for every (explicit or implicit) flush on a database.
At least if you OS and file system don't hate you (e.g. XFS on Linux),
then fsync() really does flush the drive cache.
Also keep in mind that the OSX file system (HFS+) was great for
1985. It's essentially single threaded :/
--
Stewart Smith
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2010-02-16 3:53 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-14 15:30 Notmuch performance problems on OSX Oliver Charles
2010-01-14 23:16 ` Carl Worth
2010-01-18 18:35 ` Oliver Charles
2010-02-09 20:46 ` Oliver Charles
2010-02-09 22:09 ` Olly Betts
2010-02-09 22:16 ` Oliver Charles
2010-01-15 3:58 ` Olly Betts
2010-02-16 3:53 ` Stewart Smith
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).