All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hailiang Zhang <zhang.zhanghailiang@huawei.com>
To: Jason Wang <jasowang@redhat.com>,
	Zhang Chen <zhangchen.fnst@cn.fujitsu.com>,
	qemu-devel@nongnu.org
Cc: xuquan8@huawei.com, xiecl.fnst@cn.fujitsu.com,
	dgilbert@redhat.com, lizhijian@cn.fujitsu.com
Subject: Re: [Qemu-devel] [PATCH 02/15] colo-compare: implement the process of checkpoint
Date: Tue, 18 Apr 2017 14:58:10 +0800	[thread overview]
Message-ID: <58F5B902.8030105@huawei.com> (raw)
In-Reply-To: <f7f4639d-7a08-5120-27f8-346011dc754f@redhat.com>

On 2017/4/18 11:55, Jason Wang wrote:
>
> On 2017年04月17日 19:04, Hailiang Zhang wrote:
>> Hi Jason,
>>
>> On 2017/4/14 14:38, Jason Wang wrote:
>>> On 2017年04月14日 14:22, Hailiang Zhang wrote:
>>>> Hi Jason,
>>>>
>>>> On 2017/4/14 13:57, Jason Wang wrote:
>>>>> On 2017年02月22日 17:31, Zhang Chen wrote:
>>>>>> On 02/22/2017 11:42 AM, zhanghailiang wrote:
>>>>>>> While do checkpoint, we need to flush all the unhandled packets,
>>>>>>> By using the filter notifier mechanism, we can easily to notify
>>>>>>> every compare object to do this process, which runs inside
>>>>>>> of compare threads as a coroutine.
>>>>>> Hi~ Jason and Hailiang.
>>>>>>
>>>>>> I will send a patch set later about colo-compare notify mechanism for
>>>>>> Xen like this patch.
>>>>>> I want to add a new chardev socket way in colo-comapre connect to Xen
>>>>>> colo, for notify
>>>>>> checkpoint or failover, Because We have no choice to use this way
>>>>>> communicate with Xen codes.
>>>>>> That's means we will have two notify mechanism.
>>>>>> What do you think about this?
>>>>>>
>>>>>>
>>>>>> Thanks
>>>>>> Zhang Chen
>>>>> I was thinking the possibility of using similar way to for colo
>>>>> compare.
>>>>> E.g can we use socket? This can saves duplicated codes more or less.
>>>> Since there are too many sockets used by filter and COLO, (Two unix
>>>> sockets and two
>>>>    tcp sockets for each vNIC), I don't want to introduce more ;) , but
>>>> i'm not sure if it is
>>>> possible to make it more flexible and optional, abstract these
>>>> duplicated codes,
>>>> pass the opened fd (No matter eventfd or socket fd ) as parameter, for
>>>> example.
>>>> Is this way acceptable ?
>>>>
>>>> Thanks,
>>>> Hailiang
>>> Yes, that's kind of what I want. We don't want to use two message
>>> format. Passing a opened fd need management support, we still need a
>>> fallback if there's no management on top. For qemu/kvm, we can do all
>>> stuffs transparent to the cli by e.g socketpair() or others, but the key
>>> is to have a unified message format.
>> After a deeper investigation, i think we can re-use most codes, since
>> there is no
>> existing way to notify xen (no ?), we still needs notify chardev
>> socket (Be used to notify xen, it is optional.)
>> (http://patchwork.ozlabs.org/patch/733431/ "COLO-compare: Add Xen
>> notify chardev socket handler frame")
> Yes and actually you can use this for bi-directional communication. The
> only differences is the implementation of comparing.
>
>> Besides, there is an existing qmp comand 'xen-colo-do-checkpoint',
> I don't see this in master?

Er, it has been merged already, please see migration/colo.c, void qmp_xen_colo_do_checkpoint(Error **errp);

>> we can re-use it to notify
>> colo-compare objects and other filter objects to do checkpoint, for
>> the opposite direction, we use
>> the notify chardev socket (Only for xen).
> Just want to make sure I understand the design, who will trigger this
> command? Management?

The command will be issued by XEN (xc_save ?), the original existing xen-colo-do-checkpoint
command now only be used to notify block replication to do checkpoint, we can re-use it for filters too.

> Can we just use the socket?

I don't quite understand ...
Just as the codes showed bellow, in this scenario,
XEN notifies colo-compare and fiters do checkpoint by using qmp command,
and colo-compare notifies XEN about net inconsistency event by using the new socket.

>> So the codes will be like:
>> diff --git a/migration/colo.c b/migration/colo.c
>> index 91da936..813c281 100644
>> --- a/migration/colo.c
>> +++ b/migration/colo.c
>> @@ -224,7 +224,19 @@ ReplicationStatus
>> *qmp_query_xen_replication_status(Error **errp)
>>
>>   void qmp_xen_colo_do_checkpoint(Error **errp)
>>   {
>> +    Error *local_err = NULL;
>> +
>>       replication_do_checkpoint_all(errp);
>> +    /* Notify colo-compare and other filters to do checkpoint */
>> +    colo_notify_compares_event(NULL, COLO_CHECKPOINT, &local_err);
>> +    if (local_err) {
>> +        error_propagate(errp, local_err);
>> +        return;
>> +    }
>> +    colo_notify_filters_event(COLO_CHECKPOINT, &local_err);
>> +    if (local_err) {
>> +        error_propagate(errp, local_err);
>> +    }
>>   }
>>
>>   static void colo_send_message(QEMUFile *f, COLOMessage msg,
>> diff --git a/net/colo-compare.c b/net/colo-compare.c
>> index 24e13f0..de975c5 100644
>> --- a/net/colo-compare.c
>> +++ b/net/colo-compare.c
>> @@ -391,6 +391,9 @@ static void colo_compare_inconsistent_notify(void)
>>   {
>>       notifier_list_notify(&colo_compare_notifiers,
>>                   migrate_get_current());

KVM will use this notifier/callback way, and in this way, we can avoid the redundant socket.

>> +    if (s->notify_dev) {
>> +       /* Do something, notify remote side through notify dev */
>> +    }
>>   }

If we have a notify socket configured, we will send the message about net inconsistent event.

>>
>>   void colo_compare_register_notifier(Notifier *notify)
>>
>> How about this scenario ?
> See my reply above, and we need unify the message format too. Raw string
> is ok but we'd better have something like TLV or others.

Agreed, we need it to be more standard.

Thanks,
Hailiang

> Thanks
>
>>> Thoughts?
>>>
>>> Thanks
>>>
>>>>> Thanks
>>>>>
>>>>>
>>>>> .
>>>>>
>>> .
>>>
>>
>>
>
> .
>

  reply	other threads:[~2017-04-18  6:58 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-22  3:42 [Qemu-devel] [PATCH 00/15] COLO: integrate colo frame with block replication and net compare zhanghailiang
2017-02-22  3:42 ` [Qemu-devel] [PATCH 01/15] net/colo: Add notifier/callback related helpers for filter zhanghailiang
2017-04-07 15:46   ` Dr. David Alan Gilbert
2017-04-10  7:26     ` Hailiang Zhang
2017-02-22  3:42 ` [Qemu-devel] [PATCH 02/15] colo-compare: implement the process of checkpoint zhanghailiang
2017-02-22  9:31   ` Zhang Chen
2017-02-23  1:02     ` Hailiang Zhang
2017-02-23  5:49       ` Zhang Chen
2017-04-14  5:57     ` Jason Wang
2017-04-14  6:22       ` Hailiang Zhang
2017-04-14  6:38         ` Jason Wang
2017-04-17 11:04           ` Hailiang Zhang
2017-04-18  1:32             ` Zhang Chen
2017-04-18  3:55             ` Jason Wang
2017-04-18  6:58               ` Hailiang Zhang [this message]
2017-04-20  5:15                 ` Jason Wang
2017-04-21  8:10                   ` Hailiang Zhang
2017-02-22  3:42 ` [Qemu-devel] [PATCH 03/15] colo-compare: use notifier to notify packets comparing result zhanghailiang
2017-02-22  3:42 ` [Qemu-devel] [PATCH 04/15] COLO: integrate colo compare with colo frame zhanghailiang
2017-04-07 15:59   ` Dr. David Alan Gilbert
2017-02-22  3:42 ` [Qemu-devel] [PATCH 05/15] COLO: Handle shutdown command for VM in COLO state zhanghailiang
2017-02-22 15:35   ` Eric Blake
2017-02-23  1:15     ` Hailiang Zhang
2017-02-22  3:42 ` [Qemu-devel] [PATCH 06/15] COLO: Add block replication into colo process zhanghailiang
2017-02-22  3:42 ` [Qemu-devel] [PATCH 07/15] COLO: Load PVM's dirty pages into SVM's RAM cache temporarily zhanghailiang
2017-04-07 17:06   ` Dr. David Alan Gilbert
2017-04-10  7:31     ` Hailiang Zhang
2017-02-22  3:42 ` [Qemu-devel] [PATCH 08/15] ram/COLO: Record the dirty pages that SVM received zhanghailiang
2017-02-23 18:44   ` Dr. David Alan Gilbert
2017-02-22  3:42 ` [Qemu-devel] [PATCH 09/15] COLO: Flush PVM's cached RAM into SVM's memory zhanghailiang
2017-02-22  3:42 ` [Qemu-devel] [PATCH 10/15] qmp event: Add COLO_EXIT event to notify users while exited from COLO zhanghailiang
2017-02-22  3:42 ` [Qemu-devel] [PATCH 11/15] savevm: split save/find loadvm_handlers entry into two helper functions zhanghailiang
2017-02-22  3:42 ` [Qemu-devel] [PATCH 12/15] savevm: split the process of different stages for loadvm/savevm zhanghailiang
2017-04-07 17:18   ` Dr. David Alan Gilbert
2017-04-10  8:26     ` Hailiang Zhang
2017-04-20  9:09       ` Dr. David Alan Gilbert
2017-04-21  6:50         ` Hailiang Zhang
2017-02-22  3:42 ` [Qemu-devel] [PATCH 13/15] COLO: Separate the process of saving/loading ram and device state zhanghailiang
2017-02-22  3:42 ` [Qemu-devel] [PATCH 14/15] COLO: Split qemu_savevm_state_begin out of checkpoint process zhanghailiang
2017-02-22  3:42 ` [Qemu-devel] [PATCH 15/15] COLO: flush host dirty ram from cache zhanghailiang
2017-04-07 17:39   ` Dr. David Alan Gilbert
2017-04-10  7:13     ` Hailiang Zhang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=58F5B902.8030105@huawei.com \
    --to=zhang.zhanghailiang@huawei.com \
    --cc=dgilbert@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=lizhijian@cn.fujitsu.com \
    --cc=qemu-devel@nongnu.org \
    --cc=xiecl.fnst@cn.fujitsu.com \
    --cc=xuquan8@huawei.com \
    --cc=zhangchen.fnst@cn.fujitsu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.