Re: [PATCH] CodeSamples/formal/herd: Remove dependency to memory model in cross-klitmus

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2017/11/28 16:31:13 -0800, Paul E. McKenney wrote:
> On Wed, Nov 29, 2017 at 12:24:32AM +0900, Akira Yokosawa wrote:
>> On 2017/11/26 10:40:24 -0800, Paul E. McKenney wrote:
>>> On Thu, Nov 23, 2017 at 12:17:57PM +0900, Akira Yokosawa wrote:
>>>> >From 62491d966a645d08ffc6bb0c5bae9f725458cbec Mon Sep 17 00:00:00 2001
>>>> From: Akira Yokosawa <akiyks@xxxxxxxxx>
>>>> Date: Thu, 23 Nov 2017 12:07:18 +0900
>>>> Subject: [PATCH] CodeSamples/formal/herd: Remove dependency to memory model in cross-klitmus
>>>>
>>>> Target "cross-klitmus" does not depend on memory model.
>>>> Remove the implicit dependency of "cd $(LKMM_DIR)" from the recipe.
>>>>
>>>> Fixes: ef76630632df ("CodeSamples/formal/herd: Add Makefile and utility script")
>>>> Signed-off-by: Akira Yokosawa <akiyks@xxxxxxxxx>
>>>
>>> I applied and pushed both, the first just before the release and the one
>>> below as the first commit after the release.
>>>
>>> I also attached the (very crude) scripts that I use to collect herd
>>> performance data, just in case they are useful.
>>
>> Well, I have no idea how to use absperf-reduce.sh.
>> It's partly because I'm not good at awk, but I can't figure out what kind of
>> input and arguments the script assumes.
> 
> Good point...
> 
>> Can you show me an example?
>>
>> I know absperf.sh runs each litmus test 10 times with timeout of 15 minutes.
>>
>> I'd be happy to integrate the collection feature into formal/herd/Makefile,
>> once I know what is expected.
> 
> So you run absperf.sh and feed its output into absperf-reduce.sh as
> its standard input.
> 
> I normally dump the absperf.sh to a file and then run absperf-reduce.sh
> on that file.  The output is the litmus-test name followed by the
> average, minimum, and maximum runtimes for that litmus test.
> 
> One oddity is that both scripts expect the scripts to be in the
> directory litmus-tests/absperf -- this is hard-coded into absperf.sh's
> for-loop and into the first pattern of absperf-reduce.sh's awk script
> (the "/^litmus-tests/ {" line).

Ah, this is the key point I could not figure out.
Now I can run the scripts using short litmus tests.

We also need memory model files in the current directory.

So the current scheme in CodeSamples/formal/herd/ of "cd memory-model; herd7 ..."
conflicts with the above assumption.

Let me think what approach is suitable for perfbook's CodeSamples.
This may take a while.

       Thanks, Akira

> 
> So here is how the absperf-reduce.sh script operates, in the likely
> event that you would prefer to just rewrite it (which would be fine
> by me):
> 
> o	Each awk statement block is preceded by a pattern, and
> 	contains a "{}"-enclosed sequence of statements.  These
> 	statements are executed only when the pattern matches the
> 	current line.  The special pattern "END" executes after
> 	the input has been consumed and processed.
> 
> o	The "/^litmus-tests/" matches lines beginning with "litmus-tests".
> 	These lines are those "echo"ed by absperf.sh.  This check
> 	relies on the fact that herd7 doesn't output lines beginning
> 	with "litmus-tests", which is admittedly a very fragile
> 	approach.
> 
> 	Upon match, the variable "curtest" is set to the first word
> 	on the current line (which is the litmus-test pathname)
> 	and the variable "testrun" is set to zero to say that we
> 	do not yet have any evidence that the test ran to completion.
> 
> o	The "/^Test/" is output by herd7, and indicates that the
> 	litmus test actually completed.  So we set "testran" to 1.
> 
> o	The "/maxresident)k/" matches output from /bin/time.  If
> 	herd7 ran, the following lines parse the /bin/time output,
> 	and accumulate the number of runs, the total time, and
> 	the minimum and maximum time in awk associative arrays.
> 
> 	(In awk, 'a["efwefew"]++' is a perfectly valid expression,
> 	and it increments the element of "a" indexed by the string
> 	"efwefew".  I am pretty sure that most scripting languages
> 	do this these days, but it was pretty surprising back when
> 	awk came out with it.)
> 
> o	The "END" loops through all elements of the array, with
> 	the variable "i" taking on each index of that array in
> 	turn.  The print statement thus prints the litmus test
> 	name along with its statistics.
> 
> I then hand-edited the output to make various tables in email and Table
> 12.3 in perfbook.
> 
> Why awk?  Back when I was starting scripting languages, it was the only
> one availalble on UNIX.  This would have been some time in the 1980s.
> It is very unlikely to be the best choice for someone starting out
> today.  ;-)
> 
> 							Thanx, Paul
> 
> 

--
To unsubscribe from this list: send the line "unsubscribe perfbook" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux