*** empty log message ***

svn path=/trunk/boinc/; revision=11451
This commit is contained in:
David Anderson 2006-11-02 20:38:47 +00:00
parent e00f89c6ba
commit 5830ec6e4c
6 changed files with 154 additions and 22 deletions

View File

@ -12026,3 +12026,11 @@ David 2 Nov 2006
clientgui/ clientgui/
ViewResources.cpp 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

View File

@ -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, participating in BOINC, especially if you are new to BOINC,
or if you have several computers, or if you have several computers,
participate in several projects, or like to learn about new projects. participate in several projects, or like to learn about new projects.
The account manager concept was conceived by The account manager concept was conceived and
<a href=http://gridrepublic.org>GridRepublic</a>, developed jointly by <a href=http://gridrepublic.org>GridRepublic</a>
and developed jointly by GridRepublic and BOINC. and BOINC.
The following account managers are available: The following account managers are available:
<ul> <ul>
"; ";
@ -55,7 +55,7 @@ echo "
</tr> </tr>
<tr> <tr>
<td valign=top> <td valign=top>
Attach to a project with a mouse click. Attach to a project with one mouse click.
If you have multiple computers, If you have multiple computers,
all of them will be attached. all of them will be attached.
</td> </td>
@ -63,7 +63,7 @@ echo "
Attach to a project by bringing up the 'Attach Project Wizard' Attach to a project by bringing up the 'Attach Project Wizard'
in the BOINC Manager, and entering the URL and in the BOINC Manager, and entering the URL and
your email address and password. 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> </td>
</tr> </tr>
<tr> <tr>

View File

@ -13,20 +13,19 @@ Examples include:
"; ";
list_start(); list_start();
list_item("<a href=gui_rpc.php>Client GUIs</a>", list_item("<a href=gui_rpc.php>Client GUIs</a>",
"These allow an application to control a local "Application that control a local or remote core client."
or remove core client."
); );
list_item("<a href=stats.php>Credit statistics web sites</a>", list_item("<a href=stats.php>Credit statistics web sites</a>",
"Daily feeds of statistics data from BOINC projects "Web sites showing credit information
let you create web sites showing leaderboards." (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>", list_item("<a href=acct_mgt.php>Account managers</a>",
"These interfaces support web sites that "Web sites that let BOINC users create and manage accounts
let BOINC users manage their accounts." on multiple projects."
); );
list_item("<a href=server_status.php>Server status web sites</a>", list_item("<a href=server_status.php>Server status web sites</a>",
"These interfaces support web sites showing the "Web sites showing the server status of BOINC projects."
server status of BOINC projects."
); );
list_item("<a href=web_rpc.php>Web RPCs</a>", list_item("<a href=web_rpc.php>Web RPCs</a>",
"These interfaces let a program or web site "These interfaces let a program or web site
@ -84,10 +83,11 @@ The following medium-to-large development projects are available:
</ul> </ul>
<li> Core client: <li> Core client:
<ul> <ul>
<li> Rewrite the CPU scheduler and work fetch policies <li> Extend general preferences to allow users to
to match the design document (John McLeod is working on this). specify different time-of-day restrictions for different days of the week.
<li> After the above is done, <li>
write a simulator for the CPU scheduler and work fetch policies. 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). <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 Change the Statistics tab to use a single graph
with lines of different colors or styles for different projects. 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 the Work tab.
<li> Sortable columns in Work tab.
</ul> </ul>

View File

@ -21,8 +21,10 @@ The 'fuzzy comparison' approach does not work for such applications.
<h2>Eliminating discrepancies</h2> <h2>Eliminating discrepancies</h2>
<p> <p>
One approach is to eliminate numerical discrepancies. One approach is to eliminate numerical discrepancies.
Some notes on how to do this for Fortran programs Some notes on how to do this for Fortran programs are given in a paper,
are <a href=fortran_numerics.txt>here</a> <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> <h2>Homogeneous redundancy</h2>
<p> <p>

View File

@ -309,4 +309,96 @@ int GLOBAL_PREFS::write(MIOFILE& f) {
return 0; 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$"; const char *BOINC_RCSID_3fb442bb02 = "$Id$";

View File

@ -32,6 +32,35 @@
// A scheduler reply message may contain a more recent set of preferences. // 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 // The following structure is a parsed version of the prefs file
// //
struct GLOBAL_PREFS { struct GLOBAL_PREFS {
@ -71,6 +100,7 @@ struct GLOBAL_PREFS {
int parse_override(XML_PARSER&, const char* venue, bool& found_venue); int parse_override(XML_PARSER&, const char* venue, bool& found_venue);
int parse_file(const char* filename, const char* venue, bool& found_venue); int parse_file(const char* filename, const char* venue, bool& found_venue);
int write(MIOFILE&); int write(MIOFILE&);
int write_subset(MIOFILE&, GLOBAL_PREFS_MASK&);
}; };
#endif #endif