06 Aug 2009

Success! Last weekend I started working on glue to help drizzle integrate closer with hudson using subunit and pyjunitxml.

This is now up and running – you can see test runs with details of the test output. The details are being read by hudson from the xml output which created by subunit2junitxml. But the drizzle test runner only needs to output subunit, which is somewhat simpler, as well as streaming.

06 Aug 2009

Dear evolution, Why are you taking 180 seconds (+- 20) to open mails ?

Dear user, I’m reading message metadata for every message in that folder, then for all the new mail that arrived while I was doing that.

Dear evolution, sqlite is good, not reading the entire maildirs in to filter mail, or open a folder, would be better.

iotop says:
 14797 be/4 robertc     4.30 M/s    0.00 B/s  0.00 %  0.00 % evolution

Dear user, I know, but I’m still the program I was before sqlite… what to do? (bugs have been filed, tuits are currently lacking).

Dear evolution, I see you have a large db, but perhaps its just your cache size?

$ ls -l /home/robertc/.evolution/mail/imap/robertc@localhost/folders.db
-rw-r--r-- 1 robertc robertc 953131008 2009-08-06 12:23 /home/robertc/.evolution/mail/imap/robertc@localhost/folders.db
$ sqlite3 /home/robertc/.evolution/mail/imap/robertc@localhost/folders.db
SQLite version
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> pragma default_cache_size
sqlite> pragma default_cache_size=50000

Dear user, oooo, that feels good.
2000 – the default, is 2MB of cache. evolution was using 535m of actual memory before, this gives it 25 times the cache size. My theory is that the still present read-all-message-info limitations in evolution were causing cache thrashing. (A DB doesn’t help at all unless one actually is looking at less data :).