[pve-devel] [PATCH] (partially) implement bwlimits

Thomas Lamprecht t.lamprecht at proxmox.com
Sat Mar 30 11:29:07 CET 2019


On 3/29/19 8:27 AM, Stoiko Ivanov wrote:
> This patch-series adds support for bandwidth limits to:
> * qemu-server for:
>   * online migration (including local volumes)
>   * offline migration (consisting of only local volumes)
>   * online clone_vm
>   * online move_vm_disk
> 
> * pve-container for:
>   * migration (only offline)
>   * clone_vm
>   * move_volume
> 
> AFAIS the following operations still ignore the bwlimits configured:
> * Migration with replicated volumes
> * replication (which has its 'rate' parameter per job, but probably should also
>   honor the 'migrate' bwlimit)
> * Qemu offline clone and move_vm_disk - this codepath currently uses
>   `qemu-img convert` (which has no rate-limiting parameter (yet)) and swapping
>   this for 'dd', 'pvesm export/import' would lose the ability of `qemu-img` to
>   preserve sparse-files (I quickly tested it with a lvmthin volume where
>   qemu-img kept it sparse) - I'd be grateful for a pointer if/how this could
>   work, or if I missed something!
> 
> Additionally my (quick and limited) tests showed that qemu's drive-mirror seems
> to have a discrepancy between the set 'speed' parameter and the actual speed
> (IIRC setting the speed to 10MB/s, consistently moved the data with 8MB/s),
> however I stuck to the documentation (speed parameter is in bytes/s).
> 
> The patch for pve-storage is a small fix for a conditional in
> get_bandwidth_limits, enabling us to pass 'undef', additionally to '[]', if
> we don't care about limits set on storages.
> 

most looks OK in general, a few nits and less actual issues in answers to
respective patches, I actually did not test much yet, so plain code review
only, please address issues and nits (at least if you do not oppose nits with
reasoning, which is naturally totally fine), if v2 survives testing I'll push
it out, thanks!

> pve-storage:
> Stoiko Ivanov (1):
>   Storage::get_bandwidth_limit: fix if condition
> 
>  PVE/Storage.pm | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> qemu-server: 
> Stoiko Ivanov (7):
>   bwlimit: honor bwlimit for migrate qmp call
>   bwlimit: add parameter to qemu_drive_mirror
>   bwlimit: add parameter to QemuMigrate::sync_disks
>   bwlimit: add parameter for QemuMigrate:phase2
>   add todo comment for bwlimits in clone_disk
>   bwlimit: add parameter to QemuServer:clone_disk
>   bwlimit: add parameter to API2 calls
> 
>  PVE/API2/Qemu.pm   | 28 ++++++++++++++++++++++++++--
>  PVE/QemuMigrate.pm | 22 +++++++++++++++++-----
>  PVE/QemuServer.pm  | 15 +++++++++++----
>  3 files changed, 54 insertions(+), 11 deletions(-)
> 
> pve-container:
> Stoiko Ivanov (3):
>   bwlimit: add parameter to LXC::Migrate
>   bwlimit: add parameter to rsync in copy_volume
>   bwlimit: add parameter to API2 calls
> 
>  src/PVE/API2/LXC.pm    | 30 +++++++++++++++++++++++++++---
>  src/PVE/LXC.pm         | 10 ++++++----
>  src/PVE/LXC/Migrate.pm |  5 ++++-
>  3 files changed, 37 insertions(+), 8 deletions(-)
> 





More information about the pve-devel mailing list