Am 15.05.2015 um 08:59 schrieb Christian Borntraeger: > Am 14.05.2015 um 18:03 schrieb Alexander Yarygin: >> After the commit 9b536adc ("block: acquire AioContext in >> bdrv_drain_all()") the aio_poll() function got called for every >> BlockDriverState, in assumption that every device may have its own >> AioContext. The bdrv_drain_all() function is called in each >> virtio_reset() call, which in turn is called for every virtio-blk >> device on initialization, so we got aio_poll() called >> 'length(device_list)^2' times. >> >> If we have thousands of disks attached, there are a lot of >> BlockDriverStates but only a few AioContexts, leading to tons of >> unnecessary aio_poll() calls. For example, startup times with 1000 disks >> takes over 13 minutes. >> >> This patch changes the bdrv_drain_all() function allowing it find shared >> AioContexts and to call aio_poll() only for unique ones. This results in >> much better startup times, e.g. 1000 disks do come up within 5 seconds. >> >> Cc: Christian Borntraeger <borntrae...@de.ibm.com> >> Cc: Cornelia Huck <cornelia.h...@de.ibm.com> >> Cc: Kevin Wolf <kw...@redhat.com> >> Cc: Paolo Bonzini <pbonz...@redhat.com> >> Cc: Stefan Hajnoczi <stefa...@redhat.com> >> Signed-off-by: Alexander Yarygin <yary...@linux.vnet.ibm.com> > > Applying on top of 2.3 I can verify the speedup. > Tested-by: Christian Borntraeger <borntrae...@de.ibm.com>
Hmmm. When I enable iothreads for all of these devices I get hangs. So lets defer my Tested-by until I understand that :-(