taking this long to write out ~9Mb is a bit odd
QUITE a bit, yes. My known.met is ~5MB and took 4s to save, with optimize off.
Are you building with optimize on btw? If not you should try that. You can build with debug AND optimize at the same time.
What's probably happening:
- background hashing finishes, posts event
- foreground event queue processes event and starts writing known.met
- background hashing finishes, posts event
- background hashing finishes, posts event
- background hashing finishes, posts event
- foreground event queue finishes writing known.met
- foreground event queue does other important things
- background hashing finishes, posts event
- foreground event queue processes event and starts writing known.met
...
So events stack up and up, because background hashes faster than foreground can process.
Oh, and each foreground event will block (because knownFileListMutex is locked), and so spawn a new event handler instance.

The core of the problem is - why does writing take so long? Is your system thrashing (continuously swapping aMule's memory in and out) ?