[PATCH 0/3] KVM: dirty logging optimization - double buffering

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch series just change the way we allocate dirty bitmaps but don't
change timing related issues.

 - Changelog
  I have not changed anything about patch 1 and 2 since I got
  "looks good" comment from Marcelo. Just rebased.

  Patch 3 has become simpler by rebasing on top of this series.

Thanks,
  Takuya



[Test result for VGA updates]

 - without this patch series
               |  kvm_vm_ioctl_get_dirty_log() {
               |    mutex_lock() {
    0.229 us   |      _cond_resched();
    0.781 us   |    }
               |    vmalloc() {
    ...             ...
    ...             ...
  + 34.898 us  |    }
    0.229 us   |    memset();
               |    T.1684() {
               |      __kmalloc() {
    0.188 us   |        _cond_resched();
    1.075 us   |        memset();
    1.991 us   |      }
    2.450 us   |    }
               |    synchronize_srcu_expedited() {
    ...             ...
    ...             ...
  ! 108.113 us |    }
    0.259 us   |    kfree();
    0.215 us   |    _raw_spin_lock();
               |    kvm_mmu_slot_remove_write_access() {
               |      kvm_flush_remote_tlbs() {
               |        make_all_cpus_request() {
    0.202 us   |          _raw_spin_lock();
    0.643 us   |        }
    1.048 us   |      }
    2.081 us   |    }
               |    copy_to_user() {
    0.304 us   |      _cond_resched();
    0.733 us   |    }
               |    vfree() {
    ...             ...
    ...             ...
    6.456 us   |    }
    0.334 us   |    mutex_unlock();
  ! 159.649 us |  }


 - with this patch series
               |  kvm_vm_ioctl_get_dirty_log() {
               |    mutex_lock() {
    0.300 us   |      _cond_resched();
    0.789 us   |    }
    0.237 us   |    memset();
               |    T.1686() {
               |      __kmalloc() {
    0.207 us   |        _cond_resched();
    1.086 us   |        memset();
    1.981 us   |      }
    2.408 us   |    }
               |    synchronize_srcu_expedited() {
    ...             ...
    ...             ...
  + 88.786 us  |    }
    0.244 us   |    kfree();
    0.221 us   |    _raw_spin_lock();
               |    kvm_mmu_slot_remove_write_access() {
               |      kvm_flush_remote_tlbs() {
               |        make_all_cpus_request() {
    0.206 us   |          _raw_spin_lock();
    0.647 us   |        }
    1.048 us   |      }
    2.056 us   |    }
               |    copy_to_user() {
    0.263 us   |      _cond_resched();
    0.688 us   |    }
    0.202 us   |    mutex_unlock();
  + 98.356 us  |  }

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux