Re: [PATCH 0/5] migration: Modified 'migrate' QAPI command for migration

2023-01-18 Thread Claudio Fontana
On 1/18/23 06:52, Het Gala wrote:
> 
> On 17/01/23 4:22 pm, Claudio Fontana wrote:
>> Hi,
>>
>> On 12/26/22 06:33, Het Gala wrote:
>>> Current QAPI 'migrate' command design (for initiating a migration
>>> stream) contains information regarding different migrate transport mechanism
>>> (tcp / unix / exec), dest-host IP address, and binding port number in form 
>>> of
>>> a string. Thus the design does seem to have some design issues. Some of the
>>> issues, stated below are:
>>>
>>> 1. Use of string URIs is a data encoding scheme within a data encoding 
>>> scheme.
>>> QEMU code should directly be able to work with the results from QAPI,
>>> without resorting to do a second level of parsing (eg. socket_parse()).
>>> 2. For features / parameters related to migration, the migration tunables 
>>> needs
>>> to be defined and updated upfront. For example, 'migrate-set-capability'
>>> and 'migrate-set-parameter' is required to enable multifd capability and
>>> multifd-number of channels respectively. Instead, 'Multifd-channels' can
>>> directly be represented as a single additional parameter to 'migrate'
>>> QAPI. 'migrate-set-capability' and 'migrate-set-parameter' commands 
>>> could
>>> be used for runtime tunables that need setting after migration has 
>>> already
>>> started.
>> Is efficient and parallel migration to file of large VMs in scope for this 
>> design?
>>
>> Thanks,
>>
>> Claudio
> 
> This patch's design right now mainly focuses on revamping the design for 
> 'migrate' command.
> 
> In the upcomig patchset series in future, it will try to accomodate 
> multifd as a feature in the same QAPI command and try to build multiple 
> interface support on top of multifd feature. Main aim is to increase 
> network bandwidth for migration with help of multiple interface and multifd.
> 
> Regards,
> Het Gala.


Understand, hopefully we can make sure that we can have a design that allows 
also increasing disk bandwidth for direct migration to disk.

Currently upstream migration to fast disks of medium to large size VMs is badly 
bottlenecked by qemu/libvirt interfaces.

Just FYI for existing work if interested see:

https://www.mail-archive.com/libvir-list@redhat.com/msg230248.html (not 
upstreamable, but dramatically improves VM save/restore performance)

https://lists.gnu.org/archive/html/qemu-devel/2022-10/msg02870.html (attempt to 
address the issue in QEMU project itself via migrating to file:///).

Ciao,

C



Re: [PATCH 0/5] migration: Modified 'migrate' QAPI command for migration

2023-01-17 Thread Het Gala



On 17/01/23 4:22 pm, Claudio Fontana wrote:

Hi,

On 12/26/22 06:33, Het Gala wrote:

Current QAPI 'migrate' command design (for initiating a migration
stream) contains information regarding different migrate transport mechanism
(tcp / unix / exec), dest-host IP address, and binding port number in form of
a string. Thus the design does seem to have some design issues. Some of the
issues, stated below are:

1. Use of string URIs is a data encoding scheme within a data encoding scheme.
QEMU code should directly be able to work with the results from QAPI,
without resorting to do a second level of parsing (eg. socket_parse()).
2. For features / parameters related to migration, the migration tunables needs
to be defined and updated upfront. For example, 'migrate-set-capability'
and 'migrate-set-parameter' is required to enable multifd capability and
multifd-number of channels respectively. Instead, 'Multifd-channels' can
directly be represented as a single additional parameter to 'migrate'
QAPI. 'migrate-set-capability' and 'migrate-set-parameter' commands could
be used for runtime tunables that need setting after migration has already
started.

Is efficient and parallel migration to file of large VMs in scope for this 
design?

Thanks,

Claudio


This patch's design right now mainly focuses on revamping the design for 
'migrate' command.


In the upcomig patchset series in future, it will try to accomodate 
multifd as a feature in the same QAPI command and try to build multiple 
interface support on top of multifd feature. Main aim is to increase 
network bandwidth for migration with help of multiple interface and multifd.


Regards,
Het Gala.



Re: [PATCH 0/5] migration: Modified 'migrate' QAPI command for migration

2023-01-17 Thread Claudio Fontana
Hi,

On 12/26/22 06:33, Het Gala wrote:
> Current QAPI 'migrate' command design (for initiating a migration
> stream) contains information regarding different migrate transport mechanism
> (tcp / unix / exec), dest-host IP address, and binding port number in form of
> a string. Thus the design does seem to have some design issues. Some of the
> issues, stated below are:
> 
> 1. Use of string URIs is a data encoding scheme within a data encoding scheme.
>QEMU code should directly be able to work with the results from QAPI,
>without resorting to do a second level of parsing (eg. socket_parse()).
> 2. For features / parameters related to migration, the migration tunables 
> needs
>to be defined and updated upfront. For example, 'migrate-set-capability'
>and 'migrate-set-parameter' is required to enable multifd capability and
>multifd-number of channels respectively. Instead, 'Multifd-channels' can
>directly be represented as a single additional parameter to 'migrate'
>QAPI. 'migrate-set-capability' and 'migrate-set-parameter' commands could
>be used for runtime tunables that need setting after migration has already
>started.

Is efficient and parallel migration to file of large VMs in scope for this 
design?

Thanks,

Claudio

> 
> The current patchset focuses on solving the first problem of multi-level
> encoding of URIs. The patch defines 'migrate' command as a QAPI discriminated
> union for the various transport backends (like socket, exec and rdma), and on
> basis of transport backends, different migration parameters are defined.
> 
> (uri) string -->  (channel) Channel-type
> Transport-type
> Migration parameters based on transport type
> 
> -
> 
> Author Het Gala (5):
>   migration: Updated QAPI format for 'migrate' qemu monitor command
>   migration: HMP side changes for modified 'migrate' QAPI design
>   migration: Avoid multiple parsing of uri in migration code flow
>   migration: Modified 'migrate-incoming' QAPI and HMP side changes on
> the destination interface.
>   migration: Established connection for listener sockets on the dest
> interface
> 
>  migration/migration.c | 133 +--
>  migration/socket.c|  31 +
>  migration/socket.h|   5 +-
>  monitor/hmp-cmds.c| 101 -
>  qapi/migration.json   | 143 --
>  softmmu/vl.c  |   2 +-
>  6 files changed, 344 insertions(+), 71 deletions(-)
> 




Re: [PATCH 0/5] migration: Modified 'migrate' QAPI command for migration

2023-01-08 Thread Het Gala


On 02/01/23 12:48 pm, Het Gala wrote:


On 26/12/22 11:03 am, Het Gala wrote:

Current QAPI 'migrate' command design (for initiating a migration
stream) contains information regarding different migrate transport 
mechanism
(tcp / unix / exec), dest-host IP address, and binding port number in 
form of
a string. Thus the design does seem to have some design issues. Some 
of the

issues, stated below are:

1. Use of string URIs is a data encoding scheme within a data 
encoding scheme.
    QEMU code should directly be able to work with the results from 
QAPI,
    without resorting to do a second level of parsing (eg. 
socket_parse()).
2. For features / parameters related to migration, the migration 
tunables needs
    to be defined and updated upfront. For example, 
'migrate-set-capability'
    and 'migrate-set-parameter' is required to enable multifd 
capability and
    multifd-number of channels respectively. Instead, 
'Multifd-channels' can
    directly be represented as a single additional parameter to 
'migrate'
    QAPI. 'migrate-set-capability' and 'migrate-set-parameter' 
commands could
    be used for runtime tunables that need setting after migration 
has already

    started.

The current patchset focuses on solving the first problem of multi-level
encoding of URIs. The patch defines 'migrate' command as a QAPI 
discriminated
union for the various transport backends (like socket, exec and 
rdma), and on

basis of transport backends, different migration parameters are defined.

(uri) string -->  (channel) Channel-type
 Transport-type
 Migration parameters based on transport 
type


I hope all of you had nice a lovely christmas :) and wish you all a 
beautiful new year!!


Just a gentle reminder for patch review.
This patchset series focuses on the idea of modifying qemu 'migration' 
QAPI syntax into a well defined data structure.
Hoping for suggestions and active discussions on the patchset series 
from all the maintainers.

A gentle reminder once again :)
This patchset could prove to the base of changing wire protocol around 
migration QAPIs. It could help in taking other decisions regarding 
restructuring around live migration code base in future.
Would be glad to have some feedback on the patches from the maintainers. 
Waiting for a positive response from the upstream community.


Regards, Het Gala


Re: [PATCH 0/5] migration: Modified 'migrate' QAPI command for migration

2023-01-01 Thread Het Gala



On 26/12/22 11:03 am, Het Gala wrote:

Current QAPI 'migrate' command design (for initiating a migration
stream) contains information regarding different migrate transport mechanism
(tcp / unix / exec), dest-host IP address, and binding port number in form of
a string. Thus the design does seem to have some design issues. Some of the
issues, stated below are:

1. Use of string URIs is a data encoding scheme within a data encoding scheme.
QEMU code should directly be able to work with the results from QAPI,
without resorting to do a second level of parsing (eg. socket_parse()).
2. For features / parameters related to migration, the migration tunables needs
to be defined and updated upfront. For example, 'migrate-set-capability'
and 'migrate-set-parameter' is required to enable multifd capability and
multifd-number of channels respectively. Instead, 'Multifd-channels' can
directly be represented as a single additional parameter to 'migrate'
QAPI. 'migrate-set-capability' and 'migrate-set-parameter' commands could
be used for runtime tunables that need setting after migration has already
started.

The current patchset focuses on solving the first problem of multi-level
encoding of URIs. The patch defines 'migrate' command as a QAPI discriminated
union for the various transport backends (like socket, exec and rdma), and on
basis of transport backends, different migration parameters are defined.

(uri) string -->  (channel) Channel-type
 Transport-type
 Migration parameters based on transport type


I hope all of you had nice a lovely christmas :) and wish you all a 
beautiful new year!!


Just a gentle reminder for patch review.
This patchset series focuses on the idea of modifying qemu 'migration' 
QAPI syntax into a well defined data structure.
Hoping for suggestions and active discussions on the patchset series 
from all the maintainers.



Regards,
Het Gala



[PATCH 0/5] migration: Modified 'migrate' QAPI command for migration

2022-12-25 Thread Het Gala
Current QAPI 'migrate' command design (for initiating a migration
stream) contains information regarding different migrate transport mechanism
(tcp / unix / exec), dest-host IP address, and binding port number in form of
a string. Thus the design does seem to have some design issues. Some of the
issues, stated below are:

1. Use of string URIs is a data encoding scheme within a data encoding scheme.
   QEMU code should directly be able to work with the results from QAPI,
   without resorting to do a second level of parsing (eg. socket_parse()).
2. For features / parameters related to migration, the migration tunables needs
   to be defined and updated upfront. For example, 'migrate-set-capability'
   and 'migrate-set-parameter' is required to enable multifd capability and
   multifd-number of channels respectively. Instead, 'Multifd-channels' can
   directly be represented as a single additional parameter to 'migrate'
   QAPI. 'migrate-set-capability' and 'migrate-set-parameter' commands could
   be used for runtime tunables that need setting after migration has already
   started.

The current patchset focuses on solving the first problem of multi-level
encoding of URIs. The patch defines 'migrate' command as a QAPI discriminated
union for the various transport backends (like socket, exec and rdma), and on
basis of transport backends, different migration parameters are defined.

(uri) string -->  (channel) Channel-type
Transport-type
Migration parameters based on transport type

-

Author Het Gala (5):
  migration: Updated QAPI format for 'migrate' qemu monitor command
  migration: HMP side changes for modified 'migrate' QAPI design
  migration: Avoid multiple parsing of uri in migration code flow
  migration: Modified 'migrate-incoming' QAPI and HMP side changes on
the destination interface.
  migration: Established connection for listener sockets on the dest
interface

 migration/migration.c | 133 +--
 migration/socket.c|  31 +
 migration/socket.h|   5 +-
 monitor/hmp-cmds.c| 101 -
 qapi/migration.json   | 143 --
 softmmu/vl.c  |   2 +-
 6 files changed, 344 insertions(+), 71 deletions(-)

-- 
2.22.3