And in XML…


<!DOCTYPE lackeyml [
<!ELEMENT lackeyml (application?, (thread)*)>;
<!ATTLIST lackeyml version CDATA #FIXED "0.2">
<!ATTLIST lackeyml xmlns CDATA #FIXED "https://cartesianproduct.wordpress.com\">
<!ELEMENT application EMPTY>
<!ATTLIST application command CDATA #REQUIRED>
<!ELEMENT thread (instruction|store|load|modify)* >
<!ATTLIST thread tid CDATA #REQUIRED>
<!ELEMENT instruction EMPTY>
<!ATTLIST instruction address CDATA #REQUIRED>
<!ATTLIST instruction size CDATA #REQUIRED>
<!ELEMENT modify EMPTY>
<!ATTLIST modify address CDATA #REQUIRED>
<!ATTLIST modify size CDATA #REQUIRED>
<!ELEMENT store EMPTY>
<!ATTLIST store address CDATA #REQUIRED>
<!ATTLIST store size CDATA #REQUIRED>
<!ELEMENT load EMPTY>
<!ATTLIST load address CDATA #REQUIRED>
<!ATTLIST load size CDATA #REQUIRED>
]>

Incidentally, if you don’t know what any of this means, you do not need to worry. But if you are really interested then it is a DTD (Document Type Definition) for the XMLised output of Valgrind’s Lackey tool, as patched by me to also output thread (Posix pthread) data. The original – version 0.1 – DTD (which does not account for thread data) can be found in the lackey_xml git repository.

Need for speed


Perl oneliner: 75% CPU?
Image by richardmasoner via Flickr

I think – at least I hope – that I now have a good Groovy codebase for analysing my lackeyml files – but it also is slow.

The current run has been going for 2440 minutes of CPU time on a dual core Athlon (1.8GHz) box – and it is multithreaded so it is making better than normal use of resources. I estimate it has another 800 minutes of CPU time till completion, so I won’t see the output tonight – and I am left hoping that it doesn’t crash before then.

So, I have splashed out on renting a very high end server for a couple of months. Not up and running yet, but I am looking forward to it: I guess it might crush the 36 hours or so of wall clock time this run is taking to maybe 2 – 3 hours, but I will have to see.