|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 4/4] tools: add total/local memory bandwith monitoring
On 06/01/15 10:09, Chao Peng wrote:
> On Mon, Jan 05, 2015 at 12:39:42PM +0000, Wei Liu wrote:
>> On Tue, Dec 23, 2014 at 04:54:39PM +0800, Chao Peng wrote:
>> [...]
>>> +static int libxl__psr_cmt_get_mem_bandwidth(libxl__gc *gc, uint32_t domid,
>>> + xc_psr_cmt_type type, uint32_t socketid, uint32_t *bandwidth)
>>> +{
>>> + uint64_t sample1, sample2;
>>> + uint32_t upscaling_factor;
>>> + int rc;
>>> +
>>> + rc = libxl__psr_cmt_get_l3_monitoring_data(gc, domid,
>>> + type, socketid, &sample1);
>>> + if (rc < 0)
>>> + return ERROR_FAIL;
>>> +
>>> + usleep(10000);
>>> +
>>> + rc = libxl__psr_cmt_get_l3_monitoring_data(gc, domid,
>>> + type, socketid, &sample2);
>>> + if (rc < 0)
>>> + return ERROR_FAIL;
>>> +
>>> + if (sample2 < sample1) {
>>> + LOGE(ERROR, "event counter overflowed between two samplings");
>>> + return ERROR_FAIL;
>>> + }
>>> +
>> What's the likelihood of counter overflows? Can we handle this more
>> gracefully? Say, retry (with maximum retry cap) when counter overflows?
> The likelihood is very small here. Hardware guarantees the counter will
> not overflow in one second even under maximum platform bandwidth conditions.
> And we only sleep 0.01 second here.
>
> I'd like to adopt your suggestion to retry another time once that happens.
> But only one retry and it should correct the overflow.
>
> Thanks,
> Chao
You have no possible way of guaranteeing that the actual elapsed time
between the two samples is less than 1 second. On a very heavily loaded
system, even regular task scheduling could cause an actual elapsed time
of more than one second in that snippet of code.
~Andrew
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |