All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Edmondson <dme@dme.org>
To: Zheng Chuan <zhengchuan@huawei.com>,
	quintela@redhat.com, eblake@redhat.com, dgilbert@redhat.com,
	berrange@redhat.com
Cc: zhang.zhanghailiang@huawei.com, qemu-devel@nongnu.org,
	xiexiangyou@huawei.com, alex.chen@huawei.com,
	ann.zhuangyanying@huawei.com, fangying1@huawei.com
Subject: Re: [PATCH v5 09/12] migration/dirtyrate: Implement get_sample_page_period() and block_sample_page_period()
Date: Thu, 27 Aug 2020 09:30:04 +0100	[thread overview]
Message-ID: <m2ft88jxtf.fsf@dme.org> (raw)
In-Reply-To: <c044b58d-a211-9494-70f1-2648c7891576@huawei.com>

On Thursday, 2020-08-27 at 16:01:37 +08, Zheng Chuan wrote:

> On 2020/8/26 18:17, David Edmondson wrote:
>> On Monday, 2020-08-24 at 17:14:37 +08, Chuan Zheng wrote:
>> 
>>> Implement get_sample_page_period() and set_sample_page_period() to
>>> sleep specific time between sample actions.
>>>
>>> Signed-off-by: Chuan Zheng <zhengchuan@huawei.com>
>>> ---
>>>  migration/dirtyrate.c | 24 ++++++++++++++++++++++++
>>>  migration/dirtyrate.h |  2 ++
>>>  2 files changed, 26 insertions(+)
>>>
>>> diff --git a/migration/dirtyrate.c b/migration/dirtyrate.c
>>> index bd398b7..d1c0a78 100644
>>> --- a/migration/dirtyrate.c
>>> +++ b/migration/dirtyrate.c
>>> @@ -28,6 +28,30 @@
>>>  static int CalculatingState = DIRTY_RATE_STATUS_UNSTARTED;
>>>  static struct DirtyRateStat DirtyStat;
>>>  
>>> +static int64_t set_sample_page_period(int64_t msec, int64_t initial_time)
>>> +{
>>> +    int64_t current_time;
>>> +
>>> +    current_time = qemu_clock_get_ms(QEMU_CLOCK_REALTIME);
>>> +    if ((current_time - initial_time) >= msec) {
>>> +        msec = current_time - initial_time;
>>> +    } else {
>>> +        g_usleep((msec + initial_time - current_time) * 1000);
>>> +    }
>>> +
>>> +    return msec;
>>> +}
>>> +
>>> +static int64_t get_sample_page_period(int64_t sec)
>>> +{
>>> +    if (sec <= MIN_FETCH_DIRTYRATE_TIME_SEC ||
>> 
>> Shouldn't the minimum value be allowed?
>> 
>> That is, this test should be "sec < MIN_FETCH_DIRTYRATE_TIME_SEC" and
>> MIN_FETCH_DIRTYRATE_TIME_SEC should be 1.
>> 
> Well, Actually we could measure dirtyrate within duration below 1s, like 0.5s.
> Howerver, I am reconsider that maybe taking 0.5s as MIN_FETCH_DIRTYRATE_TIME_SEC is better in case of someone to do nasty thing like setting
> a meaningless time duration which is close to 0:)

I think that a minimum of 1 second is fine. My concern is only that if
you say "the minimum is X" but then don't let me choose X, it seems
weird.

>>> +        sec > MAX_FETCH_DIRTYRATE_TIME_SEC) {
>>> +        sec = DEFAULT_FETCH_DIRTYRATE_TIME_SEC;
>>> +    }
>>> +
>>> +    return sec;
>>> +}
>>> +
>>>  static int dirtyrate_set_state(int *state, int old_state, int new_state)
>>>  {
>>>      assert(new_state < DIRTY_RATE_STATUS__MAX);
>>> diff --git a/migration/dirtyrate.h b/migration/dirtyrate.h
>>> index 41bc264..50a5636 100644
>>> --- a/migration/dirtyrate.h
>>> +++ b/migration/dirtyrate.h
>>> @@ -51,6 +51,8 @@
>>>  
>>>  /* Take 1s as default for calculation duration */
>>>  #define DEFAULT_FETCH_DIRTYRATE_TIME_SEC          1
>>> +#define MIN_FETCH_DIRTYRATE_TIME_SEC              0
>>> +#define MAX_FETCH_DIRTYRATE_TIME_SEC              60
>>>  
>>>  struct DirtyRateConfig {
>>>      uint64_t sample_pages_per_gigabytes; /* sample pages per GB */
>>> -- 
>>> 1.8.3.1
>> 
>> dme.
>> 

dme.
-- 
Hello? Is anybody home? Well, you don't know me, but I know you.


  parent reply	other threads:[~2020-08-27  8:31 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-24  9:14 [PATCH v5 00/12] *** A Method for evaluating dirty page rate *** Chuan Zheng
2020-08-24  9:14 ` [PATCH v5 01/12] migration/dirtyrate: setup up query-dirtyrate framwork Chuan Zheng
2020-08-24  9:14 ` [PATCH v5 02/12] migration/dirtyrate: add DirtyRateStatus to denote calculation status Chuan Zheng
2020-08-26  9:22   ` David Edmondson
2020-08-24  9:14 ` [PATCH v5 03/12] migration/dirtyrate: Add RamlockDirtyInfo to store sampled page info Chuan Zheng
2020-08-26  9:29   ` David Edmondson
2020-08-26  9:40     ` Zheng Chuan
2020-08-26 10:03       ` Zheng Chuan
2020-08-26 10:33     ` Dr. David Alan Gilbert
2020-08-26 10:53       ` David Edmondson
2020-08-24  9:14 ` [PATCH v5 04/12] migration/dirtyrate: Add dirtyrate statistics series functions Chuan Zheng
2020-08-24  9:14 ` [PATCH v5 05/12] migration/dirtyrate: move RAMBLOCK_FOREACH_MIGRATABLE into ram.h Chuan Zheng
2020-08-24  9:14 ` [PATCH v5 06/12] migration/dirtyrate: Record hash results for each sampled page Chuan Zheng
2020-08-26  9:56   ` David Edmondson
2020-08-26 12:30     ` Dr. David Alan Gilbert
2020-08-26 12:33       ` David Edmondson
2020-08-27  6:28       ` Zheng Chuan
2020-08-27  7:11         ` David Edmondson
2020-08-24  9:14 ` [PATCH v5 07/12] migration/dirtyrate: Compare page hash results for recorded " Chuan Zheng
2020-08-26 10:10   ` David Edmondson
2020-08-24  9:14 ` [PATCH v5 08/12] migration/dirtyrate: skip sampling ramblock with size below MIN_RAMBLOCK_SIZE Chuan Zheng
2020-08-26 10:12   ` David Edmondson
2020-08-24  9:14 ` [PATCH v5 09/12] migration/dirtyrate: Implement get_sample_page_period() and block_sample_page_period() Chuan Zheng
2020-08-26 10:17   ` David Edmondson
2020-08-27  8:01     ` Zheng Chuan
2020-08-27  8:12       ` Zheng Chuan
2020-08-27  8:30       ` David Edmondson [this message]
2020-08-24  9:14 ` [PATCH v5 10/12] migration/dirtyrate: Implement calculate_dirtyrate() function Chuan Zheng
2020-08-26 10:21   ` David Edmondson
2020-08-27  8:16     ` Zheng Chuan
2020-08-24  9:14 ` [PATCH v5 11/12] migration/dirtyrate: Implement qmp_cal_dirty_rate()/qmp_get_dirty_rate() function Chuan Zheng
2020-08-26 10:26   ` David Edmondson
2020-08-27  9:34     ` Zheng Chuan
2020-08-27 11:58       ` David Edmondson
2020-08-27 12:55         ` Zheng Chuan
2020-08-27 13:07           ` David Edmondson
2020-08-27 14:47             ` Zheng Chuan
2020-08-27 15:36               ` David Edmondson
2020-08-24  9:14 ` [PATCH v5 12/12] migration/dirtyrate: Add trace_calls to make it easier to debug Chuan Zheng
2020-08-24 16:50 ` [PATCH v5 00/12] *** A Method for evaluating dirty page rate *** no-reply
2020-08-25  1:40 Chuan Zheng
2020-08-25  1:40 ` [PATCH v5 09/12] migration/dirtyrate: Implement get_sample_page_period() and block_sample_page_period() Chuan Zheng

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=m2ft88jxtf.fsf@dme.org \
    --to=dme@dme.org \
    --cc=alex.chen@huawei.com \
    --cc=ann.zhuangyanying@huawei.com \
    --cc=berrange@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=eblake@redhat.com \
    --cc=fangying1@huawei.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=xiexiangyou@huawei.com \
    --cc=zhang.zhanghailiang@huawei.com \
    --cc=zhengchuan@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 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.