mirror of https://github.com/BOINC/boinc.git
*** empty log message ***
svn path=/trunk/boinc/; revision=11451
This commit is contained in:
parent
e00f89c6ba
commit
5830ec6e4c
|
@ -12026,3 +12026,11 @@ David 2 Nov 2006
|
|||
|
||||
clientgui/
|
||||
ViewResources.cpp
|
||||
|
||||
David 2 Nov 2006
|
||||
- Added a function GLOBAL_PREFS::write_subset()
|
||||
that writes XML for a selected subset of prefs
|
||||
(for simple GUI prefs dialog)
|
||||
|
||||
lib/
|
||||
prefs.C,h
|
||||
|
|
|
@ -21,9 +21,9 @@ An <b>account manager</b> is a web site that simplifies
|
|||
participating in BOINC, especially if you are new to BOINC,
|
||||
or if you have several computers,
|
||||
participate in several projects, or like to learn about new projects.
|
||||
The account manager concept was conceived by
|
||||
<a href=http://gridrepublic.org>GridRepublic</a>,
|
||||
and developed jointly by GridRepublic and BOINC.
|
||||
The account manager concept was conceived and
|
||||
developed jointly by <a href=http://gridrepublic.org>GridRepublic</a>
|
||||
and BOINC.
|
||||
The following account managers are available:
|
||||
<ul>
|
||||
";
|
||||
|
@ -55,7 +55,7 @@ echo "
|
|||
</tr>
|
||||
<tr>
|
||||
<td valign=top>
|
||||
Attach to a project with a mouse click.
|
||||
Attach to a project with one mouse click.
|
||||
If you have multiple computers,
|
||||
all of them will be attached.
|
||||
</td>
|
||||
|
@ -63,7 +63,7 @@ echo "
|
|||
Attach to a project by bringing up the 'Attach Project Wizard'
|
||||
in the BOINC Manager, and entering the URL and
|
||||
your email address and password.
|
||||
You must do this separately at each or your computers.
|
||||
You must do this separately at each of your computers.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -13,20 +13,19 @@ Examples include:
|
|||
";
|
||||
list_start();
|
||||
list_item("<a href=gui_rpc.php>Client GUIs</a>",
|
||||
"These allow an application to control a local
|
||||
or remove core client."
|
||||
"Application that control a local or remote core client."
|
||||
);
|
||||
list_item("<a href=stats.php>Credit statistics web sites</a>",
|
||||
"Daily feeds of statistics data from BOINC projects
|
||||
let you create web sites showing leaderboards."
|
||||
"Web sites showing credit information
|
||||
(project totals, user/team/country leaderboards)
|
||||
based on daily XML feeds of statistics data from BOINC projects."
|
||||
);
|
||||
list_item("<a href=acct_mgt.php>Account managers</a>",
|
||||
"These interfaces support web sites that
|
||||
let BOINC users manage their accounts."
|
||||
"Web sites that let BOINC users create and manage accounts
|
||||
on multiple projects."
|
||||
);
|
||||
list_item("<a href=server_status.php>Server status web sites</a>",
|
||||
"These interfaces support web sites showing the
|
||||
server status of BOINC projects."
|
||||
"Web sites showing the server status of BOINC projects."
|
||||
);
|
||||
list_item("<a href=web_rpc.php>Web RPCs</a>",
|
||||
"These interfaces let a program or web site
|
||||
|
@ -84,10 +83,11 @@ The following medium-to-large development projects are available:
|
|||
</ul>
|
||||
<li> Core client:
|
||||
<ul>
|
||||
<li> Rewrite the CPU scheduler and work fetch policies
|
||||
to match the design document (John McLeod is working on this).
|
||||
<li> After the above is done,
|
||||
write a simulator for the CPU scheduler and work fetch policies.
|
||||
<li> Extend general preferences to allow users to
|
||||
specify different time-of-day restrictions for different days of the week.
|
||||
<li>
|
||||
Write a simulator for the CPU scheduler and work fetch policies
|
||||
(Derrick Kondo is working on this).
|
||||
|
||||
<li> Log result start/ends (for use by 3rd-party software like BoincView).
|
||||
|
||||
|
@ -101,10 +101,10 @@ with file deletion according to project policy.
|
|||
Change the Statistics tab to use a single graph
|
||||
with lines of different colors or styles for different projects.
|
||||
|
||||
<li> Show progress bars for file transfers and in-progress results.
|
||||
<li> Show progress bars for file transfers and in-progress results
|
||||
(this requires changing the container class from Spreadsheet to Grid).
|
||||
|
||||
<li> Show pie charts for disk usage
|
||||
<li> Sortable columns in Work tab.
|
||||
<li> Sortable columns in the Work tab.
|
||||
</ul>
|
||||
|
||||
|
||||
|
|
|
@ -21,8 +21,10 @@ The 'fuzzy comparison' approach does not work for such applications.
|
|||
<h2>Eliminating discrepancies</h2>
|
||||
<p>
|
||||
One approach is to eliminate numerical discrepancies.
|
||||
Some notes on how to do this for Fortran programs
|
||||
are <a href=fortran_numerics.txt>here</a>
|
||||
Some notes on how to do this for Fortran programs are given in a paper,
|
||||
<a href=MOM1MP01.pdf>Massive Tracking on Heterogeneous Platforms</a>
|
||||
and in an earlier <a href=fortran_numerics.txt>text document</a>,
|
||||
both courtesy of Eric McIntosh,
|
||||
|
||||
<h2>Homogeneous redundancy</h2>
|
||||
<p>
|
||||
|
|
92
lib/prefs.C
92
lib/prefs.C
|
@ -309,4 +309,96 @@ int GLOBAL_PREFS::write(MIOFILE& f) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
// write a subset of the global preferences,
|
||||
// as selected by the mask of bools
|
||||
//
|
||||
int GLOBAL_PREFS::write_subset(MIOFILE& f, GLOBAL_PREFS_MASK& mask) {
|
||||
f.printf("<global_preferences>\n");
|
||||
if (mask.run_on_batteries) {
|
||||
f.printf(" <run_on_batteries>%d</run_on_batteries>\n",
|
||||
run_on_batteries?1:0
|
||||
);
|
||||
}
|
||||
if (mask.run_if_user_active) {
|
||||
f.printf(" <run_if_user_active>%d</run_if_user_active>\n",
|
||||
run_if_user_active?1:0
|
||||
);
|
||||
}
|
||||
if (mask.start_hour) {
|
||||
f.printf(" <start_hour>%d</start_hour>\n", start_hour);
|
||||
}
|
||||
if (mask.end_hour) {
|
||||
f.printf(" <end_hour>%d</end_hour>\n", end_hour);
|
||||
}
|
||||
if (mask.net_start_hour) {
|
||||
f.printf(" <net_start_hour>%d</net_start_hour>\n", net_start_hour);
|
||||
}
|
||||
if (mask.net_end_hour) {
|
||||
f.printf(" <net_end_hour>%d</net_end_hour>\n", net_end_hour);
|
||||
}
|
||||
if (mask.leave_apps_in_memory) {
|
||||
f.printf(" <leave_apps_in_memory>%d</leave_apps_in_memory>\n",
|
||||
leave_apps_in_memory?1:0
|
||||
);
|
||||
}
|
||||
if (mask.confirm_before_connecting) {
|
||||
f.printf(" <confirm_before_connecting>%d</confirm_before_connecting>\n",
|
||||
confirm_before_connecting?1:0
|
||||
);
|
||||
}
|
||||
if (mask.hangup_if_dialed) {
|
||||
f.printf(" <hangup_if_dialed>%d</hangup_if_dialed>\n",
|
||||
hangup_if_dialed?1:0
|
||||
);
|
||||
}
|
||||
if (mask.dont_verify_images) {
|
||||
f.printf(" <dont_verify_images>%d</dont_verify_images>\n",
|
||||
dont_verify_images?1:0
|
||||
);
|
||||
}
|
||||
if (mask.work_buf_min_days) {
|
||||
f.printf(" <work_buf_min_days>%f</work_buf_min_days>\n", work_buf_min_days);
|
||||
}
|
||||
if (mask.max_cpus) {
|
||||
f.printf(" <max_cpus>%d</max_cpus>\n", max_cpus);
|
||||
}
|
||||
if (mask.cpu_scheduling_period_minutes) {
|
||||
f.printf(" <cpu_scheduling_period_minutes>%f</cpu_scheduling_period_minutes>\n", cpu_scheduling_period_minutes);
|
||||
}
|
||||
if (mask.disk_interval) {
|
||||
f.printf(" <disk_interval>%f</disk_interval>\n", disk_interval);
|
||||
}
|
||||
if (mask.disk_max_used_gb) {
|
||||
f.printf(" <disk_max_used_gb>%f</disk_max_used_gb>\n", disk_max_used_gb);
|
||||
}
|
||||
if (mask.disk_max_used_pct) {
|
||||
f.printf(" <disk_max_used_pct>%f</disk_max_used_pct>\n", disk_max_used_pct);
|
||||
}
|
||||
if (mask.disk_min_free_gb) {
|
||||
f.printf(" <disk_min_free_gb>%f</disk_min_free_gb>\n", disk_min_free_gb);
|
||||
}
|
||||
if (mask.vm_max_used_frac) {
|
||||
f.printf(" <vm_max_used_pct>%f</vm_max_used_pct>\n", vm_max_used_frac*100);
|
||||
}
|
||||
if (mask.ram_max_used_busy_frac) {
|
||||
f.printf(" <ram_max_used_busy_pct>%f</ram_max_used_busy_pct>\n", ram_max_used_busy_frac*100);
|
||||
}
|
||||
if (mask.ram_max_used_idle_frac) {
|
||||
f.printf(" <ram_max_used_idle_pct>%f</ram_max_used_idle_pct>\n", ram_max_used_idle_frac*100);
|
||||
}
|
||||
if (mask.idle_time_to_run) {
|
||||
f.printf(" <idle_time_to_run>%f</idle_time_to_run>\n", idle_time_to_run);
|
||||
}
|
||||
if (mask.max_bytes_sec_up) {
|
||||
f.printf(" <max_bytes_sec_up>%f</max_bytes_sec_up>\n", max_bytes_sec_up);
|
||||
}
|
||||
if (mask.max_bytes_sec_down) {
|
||||
f.printf(" <max_bytes_sec_down>%f</max_bytes_sec_down>\n", max_bytes_sec_down);
|
||||
}
|
||||
if (mask.cpu_usage_limit) {
|
||||
f.printf(" <cpu_usage_limit>%f</cpu_usage_limit>\n", cpu_usage_limit);
|
||||
}
|
||||
f.printf("</global_preferences>\n");
|
||||
}
|
||||
|
||||
const char *BOINC_RCSID_3fb442bb02 = "$Id$";
|
||||
|
|
30
lib/prefs.h
30
lib/prefs.h
|
@ -32,6 +32,35 @@
|
|||
// A scheduler reply message may contain a more recent set of preferences.
|
||||
//
|
||||
|
||||
// A struct with one bool per GLOBAL_PREFS field
|
||||
//
|
||||
struct GLOBAL_PREFS_MASK {
|
||||
bool run_on_batteries;
|
||||
bool run_if_user_active;
|
||||
bool start_hour; // 0..23; no restriction if start==end
|
||||
bool end_hour;
|
||||
bool net_start_hour; // 0..23; no restriction if start==end
|
||||
bool net_end_hour;
|
||||
bool leave_apps_in_memory;
|
||||
bool confirm_before_connecting;
|
||||
bool hangup_if_dialed;
|
||||
bool dont_verify_images;
|
||||
bool work_buf_min_days;
|
||||
bool max_cpus;
|
||||
bool cpu_scheduling_period_minutes;
|
||||
bool disk_interval;
|
||||
bool disk_max_used_gb;
|
||||
bool disk_max_used_pct;
|
||||
bool disk_min_free_gb;
|
||||
bool vm_max_used_frac;
|
||||
bool ram_max_used_busy_frac;
|
||||
bool ram_max_used_idle_frac;
|
||||
bool idle_time_to_run;
|
||||
bool max_bytes_sec_up;
|
||||
bool max_bytes_sec_down;
|
||||
bool cpu_usage_limit;
|
||||
};
|
||||
|
||||
// The following structure is a parsed version of the prefs file
|
||||
//
|
||||
struct GLOBAL_PREFS {
|
||||
|
@ -71,6 +100,7 @@ struct GLOBAL_PREFS {
|
|||
int parse_override(XML_PARSER&, const char* venue, bool& found_venue);
|
||||
int parse_file(const char* filename, const char* venue, bool& found_venue);
|
||||
int write(MIOFILE&);
|
||||
int write_subset(MIOFILE&, GLOBAL_PREFS_MASK&);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue