Move LSM switches back into application threads: the checkpoint thread can fall arbitrarily far behind.
Wait indefinitely in pthread_join: 60 seconds may not be long enough for some I/O-intensive operations like checkpoints to complete.
Delay inserts so that writing chunks to disk doesn't fall too far behind.
Make the LSM merge stall calculation match the new sleep time.
Preload the cache with internal pages from checkpoints.