qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Yang Hongyang <yanghy@cn.fujitsu.com>
To: zhanghailiang <zhang.zhanghailiang@huawei.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: Li Zhijian <lizhijian@cn.fujitsu.com>,
	"jan.kiszka@siemens.com" <jan.kiszka@siemens.com>,
	Jason Wang <jasowang@redhat.com>,
	"Dong, Eddie" <eddie.dong@intel.com>,
	peter.huangpeng@huawei.com,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	Gonglei <arei.gonglei@huawei.com>,
	"stefanha@redhat.com" <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [POC] colo-proxy in qemu
Date: Fri, 31 Jul 2015 09:31:10 +0800	[thread overview]
Message-ID: <55BACFDE.1070004@cn.fujitsu.com> (raw)
In-Reply-To: <55BACF20.6000509@huawei.com>

On 07/31/2015 09:28 AM, zhanghailiang wrote:
> On 2015/7/31 9:08, Yang Hongyang wrote:
>>
>>
>> On 07/31/2015 01:53 AM, Dr. David Alan Gilbert wrote:
>>> * Yang Hongyang (yanghy@cn.fujitsu.com) wrote:
>>>>
>>>>
>>>> On 07/30/2015 09:59 PM, Dr. David Alan Gilbert wrote:
>>>>> * zhanghailiang (zhang.zhanghailiang@huawei.com) wrote:
>>>>>> On 2015/7/30 20:30, Dr. David Alan Gilbert wrote:
>>>>>>> * Gonglei (arei.gonglei@huawei.com) wrote:
>>>>>>>> On 2015/7/30 19:56, Dr. David Alan Gilbert wrote:
>>>>>>>>> * Jason Wang (jasowang@redhat.com) wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 07/30/2015 04:03 PM, Dr. David Alan Gilbert wrote:
>>>>>>>>>>> * Dong, Eddie (eddie.dong@intel.com) wrote:
>>>>>>>>>>>>>> A question here, the packet comparing may be very tricky. For
>>>>>>>>>>>>>> example,
>>>>>>>>>>>>>> some protocol use random data to generate unpredictable id or
>>>>>>>>>>>>>> something else. One example is ipv6_select_ident() in Linux. So COLO
>>>>>>>>>>>>>> needs a mechanism to make sure PVM and SVM can generate same random
>>>>>>>>>>>>> data?
>>>>>>>>>>>>> Good question, the random data connection is a big problem for
>>>>>>>>>>>>> COLO. At
>>>>>>>>>>>>> present, it will trigger checkpoint processing because of the
>>>>>>>>>>>>> different random
>>>>>>>>>>>>> data.
>>>>>>>>>>>>> I don't think any mechanisms can assure two different machines
>>>>>>>>>>>>> generate the
>>>>>>>>>>>>> same random data. If you have any ideas, pls tell us :)
>>>>>>>>>>>>>
>>>>>>>>>>>>> Frequent checkpoint can handle this scenario, but maybe will cause the
>>>>>>>>>>>>> performance poor. :(
>>>>>>>>>>>>>
>>>>>>>>>>>> The assumption is that, after VM checkpoint, SVM and PVM have
>>>>>>>>>>>> identical internal state, so the pattern used to generate random
>>>>>>>>>>>> data has high possibility to generate identical data at short time,
>>>>>>>>>>>> at least...
>>>>>>>>>>> They do diverge pretty quickly though; I have simple examples which
>>>>>>>>>>> reliably cause a checkpoint because of simple randomness in
>>>>>>>>>>> applications.
>>>>>>>>>>>
>>>>>>>>>>> Dave
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> And it will become even worse if hwrng is used in guest.
>>>>>>>>>
>>>>>>>>> Yes; it seems quite application dependent;  (on IPv4) an ssh connection,
>>>>>>>>> once established, tends to work well without triggering checkpoints;
>>>>>>>>> and static web pages also work well.  Examples of things that do cause
>>>>>>>>> more checkpoints are, displaying guest statistics (e.g. running top
>>>>>>>>> in that ssh) which is timing dependent, and dynamically generated
>>>>>>>>> web pages that include a unique ID (bugzilla's password reset link in
>>>>>>>>> it's front page was a fun one), I think also establishing
>>>>>>>>> new encrypted connections cause the same randomness.
>>>>>>>>>
>>>>>>>>> However, it's worth remembering that COLO is trying to reduce the
>>>>>>>>> number of checkpoints compared to a simple checkpointing world
>>>>>>>>> which would be aiming to do a checkpoint ~100 times a second,
>>>>>>>>> and for compute bound workloads, or ones that don't expose
>>>>>>>>> the randomness that much, it can get checkpoints of a few seconds
>>>>>>>>> in length which greatly reduces the overhead.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Yes. That's the truth.
>>>>>>>> We can set two different modes for different scenarios. Maybe Named
>>>>>>>> 1) frequent checkpoint mode for multi-connections and randomness scenarios
>>>>>>>> and 2) non-frequent checkpoint mode for other scenarios.
>>>>>>>>
>>>>>>>> But that's the next plan, we are thinking about that.
>>>>>>>
>>>>>>> I have some code that tries to automatically switch between those;
>>>>>>> it measures the checkpoint lengths, and if they're consistently short
>>>>>>> it sends a different message byte to the secondary at the start of the
>>>>>>> checkpoint, so that it doesn't bother running.   Every so often it
>>>>>>> then flips back to a COLO checkpoint to see if the checkpoints
>>>>>>> are still really fast.
>>>>>>>
>>>>>>
>>>>>> Do you mean if there are consistent checkpoint requests, not do checkpoint
>>>>>> but just send a special message to SVM?
>>>>>> Resume to common COLO mode until the checkpoint lengths is so not short ?
>>>>>
>>>>>    We still have to do checkpoints, but we send a special message to the
>>>>> SVM so that
>>>>> the SVM just takes the checkpoint but does not run.
>>>>>
>>>>>    I'll send the code after I've updated it to your current version; but it's
>>>>> quite rough/experimental.
>>>>>
>>>>> It works something like
>>>>>
>>>>>   -----------run PVM     run SVM
>>>>>       COLO     <long gap>
>>>>>       mode       miscompare
>>>>>                  checkpoint
>>>>>   -----------run PVM     run SVM
>>>>>       COLO     <short gap>
>>>>>       mode       miscompare
>>>>>                  checkpoint
>>>>>   -----------run PVM     run SVM
>>>>>       COLO     <short gap>
>>>>>       mode       miscompare         < After a few short runs
>>>>>                  checkpoint
>>>>>   -----------run PVM     SVM idle   \
>>>>>     Passive    <fixed delay>        |  - repeat 'n' times
>>>>>       mode       checkpoint         /
>>>>>   -----------run PVM     run SVM
>>>>>       COLO     <short gap>          < Still a short gap
>>>>>       mode       miscompare
>>>>>   -----------run PVM     SVM idle   \
>>>>>     Passive    <fixed delay>        |  - repeat 'n' times
>>>>>       mode       checkpoint         /
>>>>>   -----------run PVM     run SVM
>>>>>       COLO     <long gap>          < long gap now, stay in COLO
>>>>>       mode       miscompare
>>>>>                  checkpoint
>>>>>   -----------run PVM     run SVM
>>>>>       COLO     <long gap>
>>>>>       mode       miscompare
>>>>>                  checkpoint
>>>>>
>>>>> So it saves the CPU time on the SVM, and the comparison traffic, and is
>>>>> automatic at switching into the passive mode.
>>>>>
>>>>> It used to be more useful, but your minimum COLO run time that you
>>>>> added a few versions ago helps a lot in the cases where there are miscompares,
>>>>> and the delay after the miscompare before you take the checkpoint also helps
>>>>> in the case where the data is very random.
>>>>
>>>> This is great! This is exactly what we were thinking about, when random
>>>> scenario will fallback to MC/Remus like FT. Thank you very much!
>>>> I have a question, do you also modify colo-proxy kernel module? because
>>>> in the fixed checkpoint mode, I think we need to buffer the network
>>>> packets, and release them at checkpoint.
>>>
>>> Yes, we do need to buffer and release them at the end, but I've not modified
>>> colo-proxy so far.  Doesn't the current code on PMY already need to buffer
>>> packets
>>> that are generated after the first miscompare
>>
>> Yes, they are buffered,
>>
>>> and before the checkpoint and
>>> then release them at the checkpoint?
>>
>> but will be release only if the packets compare returns identical. so in order
>> to support this fallback mode, we need to modify it to release the packets at
>> the checkpoint, there won't be too much code though.
>>
>
> No, when do checkpoint, we will send all the residual queued packets.
> So it is already supported.

Great, my memory is wrong, sorry...

>
>>>
>>> Dave
>>>
>>>>
>>>>>
>>>>> Dave
>>>>>
>>>>>>
>>>>>> Thanks.
>>>>>>
>>>>>>> Dave
>>>>>>>
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> -Gonglei
>>>>>>>>
>>>>>>> --
>>>>>>> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
>>>>>>>
>>>>>>> .
>>>>>>>
>>>>>>
>>>>>>
>>>>> --
>>>>> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
>>>>> .
>>>>>
>>>>
>>>> --
>>>> Thanks,
>>>> Yang.
>>> --
>>> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
>>> .
>>>
>>
>
>
> .
>

-- 
Thanks,
Yang.

  reply	other threads:[~2015-07-31  1:31 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-20  6:42 [Qemu-devel] [POC] colo-proxy in qemu Li Zhijian
2015-07-20 10:32 ` Stefan Hajnoczi
2015-07-20 11:55   ` zhanghailiang
2015-07-20 13:12     ` Vasiliy Tolstov
2015-07-20 15:01       ` Stefan Hajnoczi
2015-07-21  1:59         ` zhanghailiang
2015-07-28 22:13           ` Samuel Thibault
2015-07-21  6:13         ` Jan Kiszka
2015-07-21  9:49           ` Stefan Hajnoczi
2015-07-27 10:13             ` Stefan Hajnoczi
2015-07-27 11:24               ` zhanghailiang
2015-07-27 11:31                 ` Samuel Thibault
2015-07-27 13:33               ` Jan Kiszka
2015-07-28 22:12                 ` Samuel Thibault
2015-07-29  7:36                   ` Jan Kiszka
2015-07-29  9:33                     ` [Qemu-devel] [PATCH] MAINTAINERS: Add Samuel Thibault as slirp maintainer Samuel Thibault
2015-08-06 10:10                       ` Stefan Hajnoczi
2015-08-06 12:29                         ` Fam Zheng
2015-08-07 10:19                           ` Stefan Hajnoczi
2015-08-07 10:34                             ` Fam Zheng
2015-07-20 12:02   ` [Qemu-devel] [POC] colo-proxy in qemu Li Zhijian
2015-07-24  2:04   ` Dong, Eddie
2015-07-24  2:12     ` Jason Wang
2015-07-24  8:04       ` Yang Hongyang
2015-07-27  3:24         ` Jason Wang
2015-07-27  3:54           ` Yang Hongyang
2015-07-27  4:49             ` Jason Wang
2015-07-27  5:51               ` Yang Hongyang
2015-07-27  7:37                 ` Jason Wang
2015-07-27  7:49                   ` Yang Hongyang
2015-07-27  8:06                     ` Jason Wang
2015-07-27  8:22                       ` Yang Hongyang
2015-07-27  7:53                 ` Jason Wang
2015-07-27  8:17                   ` Yang Hongyang
2015-07-27 18:33                   ` Dr. David Alan Gilbert
2015-07-27 10:40         ` Dr. David Alan Gilbert
2015-07-27 13:39           ` Yang Hongyang
2015-07-24  2:05 ` Dong, Eddie
2015-07-30  4:23 ` Jason Wang
2015-07-30  7:16   ` Gonglei
2015-07-30  7:47     ` Dong, Eddie
2015-07-30  8:03       ` Dr. David Alan Gilbert
2015-07-30  8:15         ` Jason Wang
2015-07-30 11:56           ` Dr. David Alan Gilbert
2015-07-30 12:10             ` Gonglei
2015-07-30 12:30               ` Dr. David Alan Gilbert
2015-07-30 12:42                 ` zhanghailiang
2015-07-30 13:59                   ` Dr. David Alan Gilbert
2015-07-30 15:17                     ` Yang Hongyang
2015-07-30 17:53                       ` Dr. David Alan Gilbert
2015-07-31  1:08                         ` Yang Hongyang
2015-07-31  1:28                           ` zhanghailiang
2015-07-31  1:31                             ` Yang Hongyang [this message]
2015-07-31  1:26                         ` zhanghailiang
  -- strict thread matches above, loose matches on Subject: below --
2015-11-10  5:26 [Qemu-devel] [POC]colo-proxy " Tkid
2015-11-10  7:35 ` Jason Wang
2015-11-10  8:30   ` zhanghailiang
2015-11-11  2:28     ` Jason Wang
2015-11-10  9:35   ` Tkid
2015-11-11  3:04     ` Jason Wang
2015-11-10  9:41   ` Dr. David Alan Gilbert
2015-11-11  3:09     ` Jason Wang
2015-11-11  9:03       ` Dr. David Alan Gilbert
2015-11-11  1:23   ` Dong, Eddie
2015-11-11  3:26     ` Jason Wang
2015-11-10 10:54 ` Dr. David Alan Gilbert
2015-11-11  2:46   ` Zhang Chen
2015-11-13 12:33     ` Dr. David Alan Gilbert

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=55BACFDE.1070004@cn.fujitsu.com \
    --to=yanghy@cn.fujitsu.com \
    --cc=arei.gonglei@huawei.com \
    --cc=dgilbert@redhat.com \
    --cc=eddie.dong@intel.com \
    --cc=jan.kiszka@siemens.com \
    --cc=jasowang@redhat.com \
    --cc=lizhijian@cn.fujitsu.com \
    --cc=peter.huangpeng@huawei.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=zhang.zhanghailiang@huawei.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).