This is a quick note:
1, I did a reboot of my Vista desktop (Core2 Quad Q6600, 8GB memory), then immediately test run my BWA-MT on 3.2 million paired reads (bwa.exe sampe -t 4 -P ...). It runs happily in 587 seconds. The
same test I did before on not so fresh situation (i.e. booted about two weeks ago, having SQL Server 05 and 08 running, bunch of IE9 open, Visual Studio 2010 up and down, etc. etc.), it took 1 hour.
The point is: BWA likes memory, especially the MT SAMPE with -P, it will try to lock huge chunk of pages, if that fail, it will give pressure to the OS and almost everything will begin to return their allocations (i.e. paging out to the page file), but, not
everything, buddies like SQL Server, may only willing to give you 4KB/second back, on that speed, you can imagine the rest. (BTW, SQL Server behaves like this is by design, because what it is giving back, is its buffer page that supposed to serve your next
query very fast, it will be insane to give up everything whenever the OS is under pressure.)
So, always baseline on a fresh boot, so that you know what the speed should be. And when you feel it's running slow, better reboot and try again other than wait.
2, For those interested, you can use Task Manager -> Processes to keep an eye on BWA, from menu View -> Select Columns, choose these: CPU Time, Working Set (Memory), Peak Working Set (Memory), Page Faults, Thread, I/O Read Bytes, I/O Write Bytes.