Current make too much sleep because
if (now - last_pause_ns > SLICE_TIME) {
last_pause_ns = now;
block_job_sleep_ns(&s->common, QEMU_CLOCK_REALTIME, SLICE_TIME);
so, we sleep SLICE_TIME, then at next iteration if lastpause("SLICE_TIME") > SLICE_TIME, we sleep again.
So, it almost always sleep at each iteration.
This patch set the sleep value to SLICE_TIME/10.
I have benched it, I have very scanning speed without impacting vm performance.
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
if (now - last_pause_ns > SLICE_TIME) {
last_pause_ns = now;
- block_job_sleep_ns(&s->common, QEMU_CLOCK_REALTIME, 0);
-+ block_job_sleep_ns(&s->common, QEMU_CLOCK_REALTIME, SLICE_TIME);
++ block_job_sleep_ns(&s->common, QEMU_CLOCK_REALTIME, SLICE_TIME/10);
}
if (block_job_is_cancelled(&s->common)) {