I assume the reads in il_apply_log are fast and the wait occurs on the random writes. The current code runs at 1/N the max speed on an N disk setup. In my case there are 2 disks but I have other servers with many more and async IO would allow all of the disks to do IO at the same time. The other benefit of async IO is that lower levels of the system can reorder requests to reduce disk head movement.
But there are a couple of choices here. Right now the thread executing xt_flush_indices detects the case where this needs to be called and then calls xt_flush_indices. Can either of these tasks be moved to background thread?
I assume the reads in il_apply_log are fast and the wait occurs on the random writes. The current code runs at 1/N the max speed on an N disk setup. In my case there are 2 disks but I have other servers with many more and async IO would allow all of the disks to do IO at the same time. The other benefit of async IO is that lower levels of the system can reorder requests to reduce disk head movement.
But there are a couple of choices here. Right now the thread executing xt_flush_indices detects the case where this needs to be called and then calls xt_flush_indices. Can either of these tasks be moved to background thread?