Quassel startup slow on Kubuntu 14.04

I recently upgraded from Kubuntu 13.10 to 14.04. It generally went smoothly. I only had an issue with Thunderbird crashing into bug 985986 and then Quassel starting up extremely slowly like 4-6 minutes until I can see and send messages.

I’ve been using Quassel for years and my database (sqlite) had grown to 750M. Since I was told on #quassel that sqlite doesn’t perform well with that big databases I assumed that was it. I made a copy of my database and deleted older messages (in backlog table) from one and newer ones from another. This way I have an archive if I want some information out of it but it isn’t available as scrollback all the time when I don’t need it. I then tried using Quassel again with a database less than 300M. It was still slow (around 30s) to startup.

Today I tried downgrading quassel from 0.10.0 to 0.9.1 that I used in 13.10. That did not help, Quassel remained slow. I then tried downgrading sqlite3 (libsqlite3-0 and sqlite3 packages) from 3.8.2 to 3.7.17. That sped up Quassel to normal few seconds it takes to fetch messages from ZNC. I then upgraded Quassel to 0.10 again and it remained fast. I also tried upgrading sqlite to Utopic packages with 3.8.5 but that was slow as well.

So it seems that for the queries Quassel executes on startup (of which I have no idea what they are) there’s been a regression in sqlite3 between versions 3.7.17 and 3.8.2. Using sqlite3 from Saucy works as a workaround.

Less polling, more battery

As written in previous post I got the driver for Omnikey 4040 cardreader to work eventually. I also noticed two other things later.

First, you’re not supposed to remove the reader while operating system is running. It completely freezes kernel, it doesn’t panic but nothing responds either. Not even the magic REISUB sequence.

Second, it polls really often. Powertop reports about 80-90 wakeups for [kernel core] cm4040_do_poll (cm4040_do_poll). That’s more than you want for something that doesn’t have to be super-responsive and that you don’t use most of the time. Apparently having the source code of the driver it’s easy to fix. Now, if you’re familiar with drivers then what I’m going to suggest is probably not a proper but rather a hack fix but it has the advantage of working ;). So in the driver code there’s a line which reads:

#define POLL_PERIOD msecs_to_jiffies(10)

I simply edited it to read:

#define POLL_PERIOD msecs_to_jiffies(250)

Any bigger value like 500 made the reader less responsive than I considered reasonable. With that value Powertop now reports 4 wakeups which is indeed roughly 25 times less and only about 1.3% of wakeups with few other apps running.

Edit: some picky applications time out with 250. I needed to change it to 100 so that smartcard login with rdesktop would work.

Customer support!

People mostly write about customer support when it’s crappy. This is an exception.

I was getting tired of having smartcard reader that connects to USB, the wire is absolutely annoying and it’s so easy to forget it at home when leaving. So I bought an Omnikey 4040 that connects to PCMCIA. First try was fail, Flex computer shop sold me wrong reader and I didn’t notice until I got home. They were totally fine to replace it though :).

Next I tried setting it up. Another fail. There seems to be a kernel driver which didn’t work. I then filed a support request with HID Global Corporation. Two weeks later they sent me driver code that compiles for my kernel (2.6.32) and works too.

I then put it to another test. Tried to sign a document with new still in development phase id-card software from Smartlink. Signing hanged application. Oh, well, it’s not announced stable anyway. However web-based signing actually worked with a website that is known to be tricky.

When you look at the picture you’ll notice that id-card software warns that the site isn’t using up-to-date API when accessing card and you’ll also see that the document signed is wrong, I only signed a local txt file. But, it actually works on linux and quite well, which is awesome!

Edit: Correction: It didn’t really hang, it just takes longer than expected to respond :).