lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 8 Mar 2016 09:49:13 +0100
From:	Peter Zijlstra <peterz@...radead.org>
To:	"Luck, Tony" <tony.luck@...el.com>
Cc:	Vikas Shivappa <vikas.shivappa@...ux.intel.com>,
	"Shivappa, Vikas" <vikas.shivappa@...el.com>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	"x86@...nel.org" <x86@...nel.org>, "hpa@...or.com" <hpa@...or.com>,
	"tglx@...utronix.de" <tglx@...utronix.de>,
	"mingo@...nel.org" <mingo@...nel.org>,
	"Shankar, Ravi V" <ravi.v.shankar@...el.com>,
	"Yu, Fenghua" <fenghua.yu@...el.com>,
	"Anvin, H Peter" <h.peter.anvin@...el.com>
Subject: Re: [PATCH 4/6] x86/mbm: Memory bandwidth monitoring event management

On Mon, Mar 07, 2016 at 11:27:26PM +0000, Luck, Tony wrote:
> >> +		bytes = mbm_current->interval_bytes * MSEC_PER_SEC;
> >> +		do_div(bytes, diff_time);
> >> +		mbm_current->bandwidth = bytes;
> >> +		mbm_current->interval_bytes = 0;
> >> +		mbm_current->interval_start = cur_time;
> >> +	}
> >>> +
> >> +	return mbm_current;
> >> +}
> >
> > How does the above time tracking deal with the event not actually having
> > been scheduled the whole time?
> 
> That's been the topic of a few philosophical debates ... what exactly are
> we trying to say when we report that a process has a "memory bandwidth"
> of, say, 1523 MBytes/s?  We need to know both the amount of data moved
> and to pick an interval to measure and divide by. Does it make a difference
> whether the process voluntarily gave up the cpu for some part of the interval
> (by blocking on I/O)? Or did the scheduler time-slice it out to run other jobs?
> 
> The above code gives the average bandwidth across the last interval
> (with a minimum interval size of 100ms to avoid craziness with rounding
> errors on exceptionally tiny intervals). Some folks apparently want to get
> a "rate" directly from perf.  I think many folks will find the "bytes" counters
> more helpful (where they control the sample interval with '-I" flag to perf
> utility).

So why didn't any of that make it into the Changelog? This is very much
different from any other perf driver, at the very least this debate
should have been mentioned and the choice defended.

Also, why are we doing the time tracking and divisions at all? Can't we
simply report the number of bytes transferred and let userspace sort out
the rest?

Userspace is provided the time the event was enabled, the time the event
was running and it can fairly trivially obtain walltime if it so desires
and then it can compute whatever definition of bandwidth it wants to
use.


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ