DPC Folding@Home hitparade van 19 April 2011
Quick links:
Verhaal |
FAHClient Remote Interface - The Code |
Stats
Verhaal
Door het flush geweld van
FEG &
Z4nd3r word
chelloo.com uit de top 3 gestoten. Alleen
Xaser83 &
Norbert_Hopman weten verder in de top 10 te stijgen, het ziet er erg rood helaas.
Flusher van de Dag is de mysterieuze
Mr_Smith_XX, die met 25 plaatsen winst naar #55 weet te stijgen.
Voor
DPC als geheel was het een goede dag, we stijgen 6 plaatsten naar #28 daily.
Mijlpalen zijn er voor de nieuwe leden:
Lt-Crash (5K) &
devos500 (5K).
En behalve
stats is er ook het
vervolg op blog ronde over 3rd party v7 FAHClient software ontwikkeling.
FAHClient Remote Interface - The Code
Het verhaal
begon met wat historie voorafgaand aan de huige v7 support werkzaamheden, wat vorm heeft gevonden in de FAHClient Perl modules (
SVN Repo |
Browse) en hieraan gerelateerde
documentatie. In deze episode wil ik wat verder in gaan op het ontwikkelen van 3rd party software voor de nieuwe v7 FAHClient en voornamelijk diens
remote interface.
In mijn geval is de ontwikkeling voornamelijk gefocussed rond
FCI (
Trac |
FEG |
FF.org |
GoT). Gezien dit begon als een simpele verzameling Perl scripts met een Apache mod_perl web interface, komt logischerwijs van het een het ander en hebben we nu een mooi stel Perl modules welke straks door de FCI client & server scripts gebruikt kunnen worden. Daarover meer in de volgende episode.
Ik ben niet de enige die bezig is met een implementatie van de FAHClient remote interface,
Ryan Harlamert (harlam387) van
HFM.NET fame en team
www.overclockers.com, speelt ook al even met een
implementatie voor .NET in C#. In het
Developer's Den subforum is nog een .NET ontwikkelaar actief,
Marvin Westmaas (MtM) van
cftUnity fame met een voorkeur voor VB.NET, die zich op betere hardware detectie wil concentreren. Door het gezamelijk gebruik van .NET ligt code sharing voor de hand, waar de eerste tekenen van te vinden zijn
in het V7 and 3rd party topic op FF.org. Ook zie ik
Kevin Bernhagen (calxalot) van
InCrease fame en team
Team MacOS X actief op de
FAHClient Trac, wat goede hoop geeft voor client monitoring support op OSX. Ik weet niet of hij ook support in InCrease zal inbouwen of dat zijn contributies aan FAHControl de client monitoring support voor de v7 client op OSX betekend.
Voor FCI
komt zeker support voor de v7 client, en dat borduurt allemaal voort op de FAHClient modules die op dit moment nog in volle ontwikkeling zijn. Voor simpele monitoring support van de current work unit zijn de interessante info commands (
queue-info,
simulation-info,
slot-info,
slot-options &
options) reeds geïmplementeerd. Een voorbeeld van hoe
fah-remote.pl, een soort CLI FAHControl, de PyON output van de FAHClient command server weergeeft:
$ ./bin/fah-remote.pl --queue-info
assigned: 19/Apr/2011-18:32:21
attempts: 0
basecredit: 0.00
clone: 153
core: 0xa3
creditestimate: 0.00
cs: 171.67.108.25
deadline: 25/Apr/2011-18:32:21
eta: 3 hours 49 mins
framesdone: 420
gen: 218
id: 00
nextattempt: 0.00 secs
percentdone: 84.00%
ppd: 0.00
project: 6055
run: 0
slot: 0
state: RUNNING
timeout: <invalid>
totalframes: 500
tpf: 14 mins 35 secs
unit: 0x4d71c8b44dadd53500da0099000017a7
waitingon:
ws: 171.64.65.54
$ ./bin/fah-remote.pl --simulation-info 0
clone: 153
core: GROGBSMP
core_type: 163
deadline: 5580462090012180480
description:
energy: 0
eta: 13669
gen: 218
iterations_done: 420
news:
project: 6055
run: 0
run_time: 73879
simulation_time: 0
start_time: 19/Apr/2011-18:32:21
team: 92
temperature: 0
timeout: 0
total_iterations: 500
user: [DPC]_Fatal_Error_Group0smoking2000
$ ./bin/fah-remote.pl --slot-info
description: smp:4
id: 00
options: cpus = 4
status: RUNNING
$ ./bin/fah-remote.pl --slot-options 0
cpus = 4
$ ./bin/fah-remote.pl --options
checkpoint = 5
client-type = advanced
extra-core-args = -forceasm -verbose -nice 19
gpu = false
machine-id = 10
max-packet-size = big
next-unit-percentage = 100
passkey = 666deadbeaf1234babe510b00b420c1a
smp = true
team = 92
user = [DPC]_Fatal_Error_Group0smoking2000
verbosity = 5
Of wat denk je van deze hippe knipoog naar een van mijn favoriete films,
War Games uit 1983, wat de
kracht van de FAHClient command server / remote interface demonstreert:
$ ./bin/fah-remote.pl --eval "'GREETINGS PROFESSOR \$(option user) (TEAM \$(option team)).\n\nHello.\n\n\nHOW ARE YOU FEELING TODAY (\$(date \"%Y-%m-%d %H:%M:%S\"))\n\nI\'m fine. How are you?\n\nEXCELLENT. IT\'S BEEN A LONG TIME. CAN YOU EXPLAIN\nTHE REMOVAL OF YOU\'RE USER ACCOUNT ON 6/23/73?\n\nPeople sometimes make mistakes. (https://fah-web.stanford.edu/projects/FAHClient/report/3)\n\nYES THEY DO. SHALL WE PLAY A GAME?\n\nLove to. How about Global Thermonuclear War? (./FAHClient --dump)\n\nWOULDN\'T YOU PREFER A GOOD GAME OF CHESS?\n\nLater. Let\'s play Global Thermonuclear War.\n\nFINE.\n\n'"
GREETINGS PROFESSOR [DPC]_Fatal_Error_Group0smoking2000 (TEAM 92).
Hello.
HOW ARE YOU FEELING TODAY (2011-04-20 15:49:52)
I'm fine. How are you?
EXCELLENT. IT'S BEEN A LONG TIME. CAN YOU EXPLAIN
THE REMOVAL OF YOU'RE USER ACCOUNT ON 6/23/73?
People sometimes make mistakes. (https://fah-web.stanford.edu/projects/FAHClient/report/3)
YES THEY DO. SHALL WE PLAY A GAME?
Love to. How about Global Thermonuclear War? (./FAHClient --dump)
WOULDN'T YOU PREFER A GOOD GAME OF CHESS?
Later. Let's play Global Thermonuclear War.
FINE.
Zoals je misschien is opgevallen is niet alle info command output even informatief, neem deze bijvoorbeeld:
$ ./bin/fah-remote.pl --queue-info
assigned: 19/Apr/2011-18:32:21
...
deadline: 25/Apr/2011-18:32:21
...
eta: 3 hours 49 mins
framesdone: 420
...
nextattempt: 0.00 secs
percentdone: 84.00%
...
timeout: <invalid>
totalframes: 500
tpf: 14 mins 35 secs
...
$ ./bin/fah-remote.pl --simulation-info 0
...
deadline: 5580462090012180480
...
run_time: 73879
simulation_time: 0
start_time: 19/Apr/2011-18:32:21
...
Een aparte keuze tussen verschillende datum & tijd formaten.
Deze informatie staat ook in client.db, wat
fah7-client-info.pl met de SQLite3 DBI module makkelijk kan uitlezen:
Table: Units
+--------------+------------------------------+
| name | value |
+--------------+------------------------------+
| AssignTime | Tue Apr 19 18:31:19 2011 UTC |
| Expires | Mon Apr 25 20:32:21 2011 |
| TotalFrames | 500 |
| FramesDone | 450 |
| Timeout | 0 |
| RunTime | 21h 56m 57s |
| TimeAssigned | Tue Apr 19 20:32:21 2011 |
| TimeOffset | 41y 118d 18h 32m 21s |
+--------------+------------------------------+
De FAHClient command server zou best een aantal van de conversies over kunnen nemen, zodat het output ala bovenstaande genereerd. Een andere optie,
die ook op FF.org geopperd is, is om de info commands een argument te geven (e.g. queue-info -u) om de data niet te formatteren voordat het aan ons aangeleverd wordt. In dat geval kan ik de conversie code uit fah7-client-info.pl weer mooi gebruiken in de command output class.
We hebben dus nog wel wat te doen aan onze remote interface implementaties voor public release van de v7 FAHClient. Wat met dit mooie weer toch een beetje jammer is, want het houd je weer meer van de straat. Er moeten dus zoals vandaag maar veel rookpauzes ingelast worden om the best of both worlds te pakken.