Message ID | 1499406231-3877-2-git-send-email-zhangchen.fnst@cn.fujitsu.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 07/07/2017 01:43 PM, Zhang Chen wrote: > If colo-compare find out the first different packet at this situation, why not trigger the checkpoint, and then flush all primary packets and drop secondary packets? > that means > the following packet almost is different. we needn't do a lot > of checkpoint in this time, so we set the no-need-checkpoint > peroid, default just set 3 second. > > Signed-off-by: Zhang Chen <zhangchen.fnst@cn.fujitsu.com> > --- > net/colo-compare.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/net/colo-compare.c b/net/colo-compare.c > index 6d500e1..0f8e198 100644 > --- a/net/colo-compare.c > +++ b/net/colo-compare.c > @@ -40,6 +40,9 @@ > /* TODO: Should be configurable */ > #define REGULAR_PACKET_CHECK_MS 3000 > > +/* TODO: Should be configurable */ > +#define CHECKPOINT_MIN_TIME 3000 > + > /* > + CompareState ++ > | | > @@ -455,6 +458,7 @@ static void colo_compare_connection(void *opaque, void *user_data) > Packet *pkt = NULL; > GList *result = NULL; > int ret; > + static int64_t checkpoint_time_ms; > > while (!g_queue_is_empty(&conn->primary_list) && > !g_queue_is_empty(&conn->secondary_list)) { > @@ -494,7 +498,14 @@ static void colo_compare_connection(void *opaque, void *user_data) > */ > trace_colo_compare_main("packet different"); > g_queue_push_tail(&conn->primary_list, pkt); > - /* TODO: colo_notify_checkpoint();*/ > + > + if (pkt->creation_ms - checkpoint_time_ms > CHECKPOINT_MIN_TIME) { > + /* > + * TODO: Notify colo frame to do checkpoint. > + * colo_compare_inconsistent_notify(); > + */ > + checkpoint_time_ms = pkt->creation_ms; > + } > break; > } > }
On 07/07/2017 02:06 PM, Li Zhijian wrote: > > On 07/07/2017 01:43 PM, Zhang Chen wrote: >> If colo-compare find out the first different packet > > at this situation, why not trigger the checkpoint, and then flush all > primary packets and drop secondary packets? In this time we already do this job, but before this checkpoint to be done, a lot of checkpoint has been triggered. It is no sense do many checkpoint in very short time. So we just need do once checkpoint in this situation. Thanks Zhang Chen > > >> that means >> the following packet almost is different. we needn't do a lot >> of checkpoint in this time, so we set the no-need-checkpoint >> peroid, default just set 3 second. >> >> Signed-off-by: Zhang Chen <zhangchen.fnst@cn.fujitsu.com> >> --- >> net/colo-compare.c | 13 ++++++++++++- >> 1 file changed, 12 insertions(+), 1 deletion(-) >> >> diff --git a/net/colo-compare.c b/net/colo-compare.c >> index 6d500e1..0f8e198 100644 >> --- a/net/colo-compare.c >> +++ b/net/colo-compare.c >> @@ -40,6 +40,9 @@ >> /* TODO: Should be configurable */ >> #define REGULAR_PACKET_CHECK_MS 3000 >> +/* TODO: Should be configurable */ >> +#define CHECKPOINT_MIN_TIME 3000 >> + >> /* >> + CompareState ++ >> | | >> @@ -455,6 +458,7 @@ static void colo_compare_connection(void *opaque, >> void *user_data) >> Packet *pkt = NULL; >> GList *result = NULL; >> int ret; >> + static int64_t checkpoint_time_ms; >> while (!g_queue_is_empty(&conn->primary_list) && >> !g_queue_is_empty(&conn->secondary_list)) { >> @@ -494,7 +498,14 @@ static void colo_compare_connection(void >> *opaque, void *user_data) >> */ >> trace_colo_compare_main("packet different"); >> g_queue_push_tail(&conn->primary_list, pkt); >> - /* TODO: colo_notify_checkpoint();*/ >> + >> + if (pkt->creation_ms - checkpoint_time_ms > >> CHECKPOINT_MIN_TIME) { >> + /* >> + * TODO: Notify colo frame to do checkpoint. >> + * colo_compare_inconsistent_notify(); >> + */ >> + checkpoint_time_ms = pkt->creation_ms; >> + } >> break; >> } >> } >
diff --git a/net/colo-compare.c b/net/colo-compare.c index 6d500e1..0f8e198 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -40,6 +40,9 @@ /* TODO: Should be configurable */ #define REGULAR_PACKET_CHECK_MS 3000 +/* TODO: Should be configurable */ +#define CHECKPOINT_MIN_TIME 3000 + /* + CompareState ++ | | @@ -455,6 +458,7 @@ static void colo_compare_connection(void *opaque, void *user_data) Packet *pkt = NULL; GList *result = NULL; int ret; + static int64_t checkpoint_time_ms; while (!g_queue_is_empty(&conn->primary_list) && !g_queue_is_empty(&conn->secondary_list)) { @@ -494,7 +498,14 @@ static void colo_compare_connection(void *opaque, void *user_data) */ trace_colo_compare_main("packet different"); g_queue_push_tail(&conn->primary_list, pkt); - /* TODO: colo_notify_checkpoint();*/ + + if (pkt->creation_ms - checkpoint_time_ms > CHECKPOINT_MIN_TIME) { + /* + * TODO: Notify colo frame to do checkpoint. + * colo_compare_inconsistent_notify(); + */ + checkpoint_time_ms = pkt->creation_ms; + } break; } }
If colo-compare find out the first different packet that means the following packet almost is different. we needn't do a lot of checkpoint in this time, so we set the no-need-checkpoint peroid, default just set 3 second. Signed-off-by: Zhang Chen <zhangchen.fnst@cn.fujitsu.com> --- net/colo-compare.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)