Seti@Home optimized science apps and information

Optimized Seti@Home apps => Discussion Forum => Topic started by: Raistmer on 09 Oct 2010, 05:04:03 am

Title: ExtractTimes Perl script for easy performance info collection
Post by: Raistmer on 09 Oct 2010, 05:04:03 am
I wrote some Perl script that will parse client_info.xml file and extract valuable performance info from it.
Currently supported apps are:
1 - AKv8 MB
2- ATI MB
3- ATI AP
4 -CPU AP
5 - x32f CUDA MB

For AP it will extract blanking % along with elapsed and CPU times, for MB - AR of task.
Script and example of its result in attached file.
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Urs Echternacht on 09 Oct 2010, 06:11:22 pm
Debug session of your perl script running on linux. Looks like it hangs somewhen :
main::(ExtractTimes.pl:1):      $path="client_state.xml";
  DB<0> n
main::(ExtractTimes.pl:2):      $results="Times.txt";
  DB<0> n
main::(ExtractTimes.pl:5):      open (IN, $path); 
  DB<0> n
main::(ExtractTimes.pl:6):      open (RES, ">".$results);
  DB<0> n
main::(ExtractTimes.pl:7):      print RES "Task name"."\t"."Parameter"."\t"."Result Type"."\t"."Revision"."\t"."ElapsedTime"."\t"."CPUTime"."\n";
  DB<0> n
main::(ExtractTimes.pl:9):      while (<IN>) {   
  DB<0> n
main::(ExtractTimes.pl:10):                     if( /<result>/ ){
  DB<0> n
main::(ExtractTimes.pl:10):                     if( /<result>/ ){
  DB<0> n
main::(ExtractTimes.pl:10):                     if( /<result>/ ){
  DB<0> n
main::(ExtractTimes.pl:10):                     if( /<result>/ ){
  DB<0> n
main::(ExtractTimes.pl:10):                     if( /<result>/ ){
...
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Raistmer on 09 Oct 2010, 06:15:52 pm
hangs ? :)
Well, try to copy client_state.xml in different locaation before running script. If script re-created while it accessed by script some undefined behavior possible.
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Urs Echternacht on 09 Oct 2010, 06:21:51 pm
hangs ? :)
Well, try to copy client_state.xml in different locaation before running script. If script re-created while it accessed by script some undefined behavior possible.
Ok, done like you suggested, but still same outcome its not getting beyond line 10.
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Raistmer on 09 Oct 2010, 06:35:00 pm
And it should? ;)
There are many other lines in client_state.xml before first <result> tag approaches...
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Urs Echternacht on 09 Oct 2010, 06:53:46 pm
And it should? ;)
There are many other lines in client_state.xml before first <result> tag approaches...
It works after 109  tags with first <result>
Will try to add a section to detect opt CPU AP results also.
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Urs Echternacht on 09 Oct 2010, 07:23:52 pm
   if( /Windows x86 rev (.*), Don't Panic!/ || /Linux 64 bit, rel.  Rev (.*)/ || /Linux 32 bit, rel.  Rev (.*)/){#uje: CPU opt AP detection
          $ResultType=4;
          $Revision=$1;
          next;
        }

Adding this section seems to work at least on Windows and Linux so far. Other OSs can easily be added. New ResultType 4: CPU opt AP

Please test yourself.
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Raistmer on 09 Oct 2010, 07:49:05 pm
I have no CPU AP :)
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Urs Echternacht on 09 Oct 2010, 08:11:36 pm
I have no CPU AP :)

For a test you could copy one result section into your local copy of client_state.xml derived from someone elses seti@home account.
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Raistmer on 10 Oct 2010, 02:52:33 am
:)
Let "someone else's" be your, post client_state, please, for test.
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Jason G on 10 Oct 2010, 03:21:18 am
Suggestion, just in case you forgot:  Do it by private means.  There's secret stuff in those files  ;)
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Urs Echternacht on 10 Oct 2010, 01:48:34 pm
:)
Let "someone else's" be your, post client_state, please, for test.
Where did i say "that"? That is an interpretation of my words!
I said modify "your local copy" of the client_state for a test using some result info.
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Raistmer on 11 Oct 2010, 09:52:37 am
Not interpolation, perhaps just wrong reading :)
Ok I understood your idea now.
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Ghost0210 on 11 Oct 2010, 02:43:29 pm
Or if anyone wants a .Net app I've got one that does the same (except haven't figured out how to get the ATI AP blanking % yet)
But will retrieve all the same info for Cuda MB, ATI MB and ATI AP, that I can make available
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Raistmer on 11 Oct 2010, 02:46:33 pm
Or if anyone wants a .Net app I've got one that does the same (except haven't figured out how to get the ATI AP blanking % yet)
But will retrieve all the same info for Cuda MB, ATI MB and ATI AP, that I can make available
Then post it here too, if it's not proprietary code ;)
blanking % can be retrieved form app stderr, just as AR value for MB task.
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Ghost0210 on 11 Oct 2010, 03:12:04 pm
lol, not proprietry code, just my only special blend of amateurish coding ;D But seems to work well enough for what i need.
It's a 'click once application' as VS 2010 Express doesn't allow to publish in any other way
So extract the files, run the setup.exe and it will create a start menu item for you.
Will also create a config.xml file in your %appdata%\roaming\Result Reader directory, which the app reads on load so you don't have to keep entering the file locations

Have only tested on Vista x64 and Win 7 x64 so would like to know if it works on any other OS
(was build with .NET Framework 4 Client Profile (x86 and x64) so these may be required)
If any one wants the source please shout and I'll get them to you
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Raistmer on 11 Oct 2010, 03:18:28 pm
LoL, you find interesting way to encourage .NET 4 update ;D
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Raistmer on 17 Oct 2010, 05:34:02 pm
Script updated, added Urs' CPU AP detection, x32 CUDA MB detection and columns rearranged for easy Copy&Paste into spreadsheet.
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Ghost0210 on 18 Oct 2010, 01:33:46 pm
Script updated, added Urs' CPU AP detection, x32 CUDA MB detection and columns rearranged for easy Copy&Paste into spreadsheet.


And not to be outdone by Rasitmer ;D
Also updated my app -
new features:
1. Tracks Tasks by Status (Ready to Start, Ready to Report, Uploading and Suspended) and by count
2. Reads Client_State to get current DCF - also allows reset of DCF value to 1.000000
3. Creates Result File for all uploading and ready to report tasks
4. Checks server status (running or down)
5. Checks tasks ready to send on server (if database is up)
6. Can send email with above info (via smtp)

Copy install files to installation location and run 'setup.exe' please enter a 'Version #' in settings tab or you will get no results

.Net 4 required again

Known Issues: On multi-project host DCF value may be the last projects DCF from the client_state file, and not garuanteed to be Seti's. This has been fixed in a test build, will update attached build once I'm sure it works - Should now be fixed
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Raistmer on 18 Oct 2010, 02:49:17 pm
Ough... setup required 1619MB space on your hard drive but only 121 MB are currently available  :o
M$ knows how to fill space  :P
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Raistmer on 19 Oct 2010, 03:28:06 pm
Main purpose for writing this data collection tool:

(http://img191.imageshack.us/img191/4914/mbtasks.th.png) (http://img191.imageshack.us/i/mbtasks.png/)

This graph shows times for different SETI MB apps.

ATI GPU is HD4870, NV GPU is 9600GSO.
While NV outperforms ATI on mid and high ARs, this ATI GPU clearly wins by elapsed time (CPU consumption still bigger) on VLARs.
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Ghost0210 on 19 Oct 2010, 04:09:06 pm

ATI GPU is HD4870, NV GPU is 9600GSO.
While NV outperforms ATI on mid and high ARs, this ATI GPU clearly wins by elapsed time (CPU consumption still bigger) on VLARs.


Seeing the same here with my GPU's (GTX465 running 2 tasks at a time, and a HD5670 running 1 at a time)
VHAR and mid-range tasks the nv card outperforms the ATI by quite some margin - ~6 mins for vhar ~25 for mid range compared to ATI of ~15 for vhar and ~90 mins for mid range
But the ATI does a vlar in ~105 minutes - can't give accurate times for the nv card and a vlar as have tried this recently but it was taking about the same as a cpu vlar of around ~135 minutes
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: kevin6912 on 21 Oct 2010, 08:45:33 am

Script and example of its result in attached file.


Raistmer,

The "Example of its result" is missing from ExtractTimes_V2.rar file.

Thanks,
Kevin
Title: Re: ExtractTimes Perl script for easy performance info collection
Post by: Raistmer on 21 Oct 2010, 11:06:15 am
And do you really need it? ;)
Ok, will attach smth when will do next data collection from my host.