BOINC スケジューリング・サーバのプロトコル |
Last modified 7:09 PM UTC, June 09 2004 |
コア・クライアントはスケジューリング・サーバと HTTP で通信します。 以下に示すのはプロトコルの「核心」部分であり、変化しないものと考えるべきです。 これによって、どんな版のコア・クライアントでも、 どの版のスケジューリング・サーバとでも会話ができるようになります。 さらに、スケジューリング・サーバは、必要に応じて、 そのクライアントがすでに期限切れのものだ、とそのクライアント自身へ 伝えることもできます。 [核心部分の]要求の形は以下の例のとおりです:
<scheduler_request>
<platform>intel-linux</platform>
<core_client_major_version>1</core_client_major_version>
<core_client_minor_version>1</core_client_minor_version>
... other elements
</scheduler_request>
この中で、'platform' と version number
訳注1
要素が、この要求を出したコア・クライアントの版を示しています。
応答の形は、以下の例のとおりです:
<scheduler_reply>
[ <message priority='low'> arbitrary text </message> ... ]
[ <request_delay>3600</request_delay> ]
[ <redirect>URL</redirect> ]
... other elements
</scheduler_reply>
message 要素のそれぞれは、各参加者へのメッセージです。
応答メッセージは、複数の message 要素を含むことができます。
request_delay 要素は、クライアントに対し、 指定した秒数がたつまでは次の要求を出すな、と指示します。
redirect 要素は、 このプロジェクト用のスケジューリング・サーバ の URL を運びます。 もしこれが含まれていたら、コア・クライアントはこのプロジェクトに関して 保持しているスケジューリング・サーバ一覧を、置き換えるべきです。 応答は、複数の redirect 要素を含むことができます。
残りの部分のプロトコルは、時間がたつにつれて進化するでしょう。 要求メッセージには以下の例にある要素を含みます。
<prefs_mod_time>0</prefs_mod_time>
<authenticator>3f7b90793a0175ad0bda68684e8bd136</authenticator>
<hostid>1</hostid>
<work_req_seconds>1000</work_req_seconds>
<host_info>
<timezone>28800</timezone>
<domain_name>localhost.localdomain</domain_name>
<ip_addr>127.0.0.1</ip_addr>
<conn_frac>0.000000</conn_frac>
<on_frac>0.000000</on_frac>
<p_ncpus>1</p_ncpus>
<p_vendor>GenuineIntel</p_vendor>
<p_model>Pentium</p_model>
<p_fpops>0.000000</p_fpops>
<p_iops>0.000000</p_iops>
<p_membw>0.000000</p_membw>
<p_calculated>0.000000</p_calculated>
<os_name>Linux</os_name>
<os_version>2.2.14-5.0</os_version>
<m_nbytes>197427200.000000</m_nbytes>
<m_cache>131072.000000</m_cache>
<m_swap>178012160.000000</m_swap>
<d_total>22108344320.000000</d_total>
<d_free>18332545024.000000</d_free>
<n_bwup>0.000000</n_bwup>
<n_bwdown>0.000000</n_bwdown>
</host_info>
<result>
<name>uc_wu_0</name>
<client_state>4</client_state>
<final_cpu_time>0.020000</final_cpu_time>
<stderr_out>
The following fields are used to report errors to the server, They
are not present if there is no error while downloading, computing
or uploading files for this result.
[ <message> some text describing the error </message>] ]
The state of the active_task assigned to compute this result at
the time of the error
[ <active_task_state>0</active_task_state> ]
The exit_status of the application running the computation for the result
[ <exit_status>0</exit_status> ]
The signal raised by the application if any.
[ <signal>0</signal> ]
If the error corresponds to downloading input files for the
work_unit for this result, then:
<download_error>
<file_name>input</file_name>
<error_code>-114</error_code>
</download_error>
If the error corresponds to uploading outfiles for this results
then:
<upload_error>
<file_name>output</file_name>
<error_code>-114</error_code>
</upload_error>
the std_err output of the application, if any, goes here.
</stderr_out>
<file_info>
<file_name>uc_wu_0_0</file_name>
<md5_cksum>3f7b90793a0175ad0bda68684e8bd136</md5_cksum>
<nbytes>54691.0000000</nbytes>
<max_nbytes>1000000.00000</max_nbytes>
<url>http://localhost/hamid_cgi/test/file_upload_handler</url>
</file_info>
</result>
応答メッセージには以下の例にある要素を含みます。
<request_delay>10</request_delay>
<message priority='low'>no work available</message>
<code_sign_key>
1024
ec8b7f60fa494ce65d70afa98f91f2ab08fb5fac3931a27524e0eb954d587846
29e94ce79d61f4d4bc4f9660578a06e941ca271646f11ef4d2be67f4a155e0a9
9908b6c814d08f0f59e9dc85afcc9d65f89a33d329d963e3fd359351ee25ca7f
71c3bd49a88ae609152559984b3fd7cdc4937d416a43c3357a59e7ed6cf3d30d
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000010001
.
</code_sign_key>
<prefs_mod_time>123123</prefs_mod_time>
<preferences>
<low_water_days>1.2</low_water_days>
<high_water_days>2.5</high_water_days>
<disk_max_used_gb>0.4</disk_max_used_gb>
<disk_max_used_pct>50</disk_max_used_pct>
<disk_min_free_gb>0.4</disk_min_free_gb>
<project>
<master_url>http://localhost.localdomain</master_url>
<email_addr>david@localdomain</email_addr>
<authenticator>123892398</authenticator>
<resource_share>10</resource_share>
<project_specific>
<color-scheme>Tahiti Sunset</color-scheme>
</project_specific>
</project>
</preferences>
<result_ack>
<name>uc_wu_0</name>
</result_ack>