diff --git a/checkin_notes b/checkin_notes index ad647eb6ca..89cf5d567e 100755 --- a/checkin_notes +++ b/checkin_notes @@ -3954,3 +3954,20 @@ Rom 24 Apr 2007 win_build/ *.vcproj + +David 24 Apr 2007 + - Server: add new database field host.error_rate. + Stores a dynamic estimate of the fraction of the hosts's + results that fail validation (updated by the validator). + + client/ + sim.C + cs_prefs.C + db/ + boinc_db.C,h + html/ops/ + db_update.php + sched/ + handle_request.C + sched_msgs.h + validator.C diff --git a/client/cs_prefs.C b/client/cs_prefs.C index 0db4f26481..b148a1e4e0 100644 --- a/client/cs_prefs.C +++ b/client/cs_prefs.C @@ -407,7 +407,7 @@ void CLIENT_STATE::read_global_prefs() { (host_info.m_nbytes*global_prefs.ram_max_used_idle_frac)/MEGA ); msg_printf(NULL, MSG_INFO, - "Preferences: limit disk usage to %.2fGB", + "Preferences limit disk usage to %.2fGB", allowed_disk_usage()/GIGA ); // max_cpus, bandwidth limits may have changed diff --git a/client/sim.C b/client/sim.C index d57c9553c3..e1e6ee8d66 100644 --- a/client/sim.C +++ b/client/sim.C @@ -352,13 +352,14 @@ bool CLIENT_STATE::simulate_rpc(PROJECT* _p) { wup->rsc_fpops_est = ap->fpops_est; results.push_back(rp); double ops = ap->fpops.sample(); + if (ops < 0) ops = 0; rp->final_cpu_time = ops/net_fpops; rp->report_deadline = now + ap->latency_bound; sprintf(buf, "got job %s: CPU time %.2f, deadline %s
", rp->name, rp->final_cpu_time, time_to_string(rp->report_deadline) ); html_msg += buf; - p->work_request -= ap->fpops_est/net_fpops; + p->work_request -= p->duration_correction_factor*ap->fpops_est/net_fpops; } p->work_request = 0; request_schedule_cpus("simulate_rpc"); @@ -920,7 +921,7 @@ void parse_error(char* file, int retval) { } void help(char* prog) { - fprintf(stderr, "usage: %s [--duration X] [--delta X]\n", prog); + fprintf(stderr, "usage: %s [--duration X] [--delta X] [--dirs ...]\n", prog); exit(1); } diff --git a/db/boinc_db.C b/db/boinc_db.C index 07ef1e7618..9c46d7da8c 100644 --- a/db/boinc_db.C +++ b/db/boinc_db.C @@ -358,7 +358,8 @@ void DB_HOST::db_print(char* buf){ "credit_per_cpu_sec=%.15e, " "venue='%s', nresults_today=%d, " "avg_turnaround=%f, " - "host_cpid='%s', external_ip_addr='%s', max_results_day=%d ", + "host_cpid='%s', external_ip_addr='%s', max_results_day=%d, " + "error_rate=%f ", create_time, userid, rpc_seqno, rpc_time, total_credit, expavg_credit, expavg_time, @@ -376,7 +377,8 @@ void DB_HOST::db_print(char* buf){ credit_per_cpu_sec, venue, nresults_today, avg_turnaround, - host_cpid, external_ip_addr, max_results_day + host_cpid, external_ip_addr, max_results_day, + error_rate ); UNESCAPE(domain_name); UNESCAPE(serialnum); @@ -434,10 +436,12 @@ void DB_HOST::db_parse(MYSQL_ROW &r) { strcpy2(host_cpid, r[i++]); strcpy2(external_ip_addr, r[i++]); max_results_day = atoi(r[i++]); + error_rate = atof(r[i++]); } -// update fields that differ from the argument HOST. -// called from scheduler (handle_request.C) +// Update fields that differ from the argument HOST. +// Called from scheduler (handle_request.C), +// so only include fields modified by the scheduler. // int DB_HOST::update_diff(HOST& h) { char buf[LARGE_BLOB_SIZE], updates[LARGE_BLOB_SIZE], query[LARGE_BLOB_SIZE]; diff --git a/db/boinc_db.h b/db/boinc_db.h index e898f949f0..fc482c08db 100755 --- a/db/boinc_db.h +++ b/db/boinc_db.h @@ -280,6 +280,8 @@ struct HOST { char external_ip_addr[256]; // IP address seen by scheduler int max_results_day; // maximum # of results to send per day per CPU // this is dynamically adjusted to limit work sent to bad hosts + double error_rate; // dynamic estimate of fraction of results + // that fail validation // the following not stored in DB // diff --git a/db/schema.sql b/db/schema.sql index 3c1111f67c..b04720c937 100644 --- a/db/schema.sql +++ b/db/schema.sql @@ -6,8 +6,9 @@ html/ inc/ host.inc (host) - ops/ db_ops.inc + ops/ + db_update.php user/ create_account_action.php (user) team_create_action.php (team) @@ -167,6 +168,7 @@ create table host ( host_cpid varchar(254), external_ip_addr varchar(254), max_results_day integer not null, + error_rate double not null default 0, primary key (id) ) type=InnoDB; diff --git a/doc/boinc_news.php b/doc/boinc_news.php index 12cd491284..93265534cc 100644 --- a/doc/boinc_news.php +++ b/doc/boinc_news.php @@ -1,6 +1,17 @@ Flash-based BOINC tutorials + are now available in English and Slovak, + as well as Czech." +), +array("April 23, 2007", + "BOINCstats and BAM! are now available in the Czech language + (http://cz.boincstats.com). + Thanks to Zelvuska for the translation." +), array("April 17, 2007", "Desktopgrid.hu has been created by the Computer and Automation Research Institute diff --git a/doc/index.php b/doc/index.php index 52d53b0d0c..a2e885103f 100644 --- a/doc/index.php +++ b/doc/index.php @@ -68,7 +68,7 @@ function show_participate() { ".sprintf(tr(HOME_P3), "", "")."
".tr(HOME_DOWNLOAD)." - | ".tr(HOME_MORE_INFO)." + | ".tr(HOME_MORE_INFO)." | ".tr(HOME_WEB_SITES)." | ".tr(HOME_ADD_ONS)." | ".tr(HOME_SURVEY)." @@ -109,10 +109,10 @@ function show_other() { Other info