Changes between Version 25 and Version 26 of CreditNew
- Timestamp:
- Mar 25, 2010, 10:17:58 AM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
CreditNew
v25 v26 34 34 35 35 * Project neutrality: different projects should grant 36 about the same amount of credit per day for a given processor. 36 about the same amount of credit per host, 37 averaged over all hosts. 38 39 * Cheat-proof 37 40 38 41 It's easy to show that both goals can't be satisfied simultaneously. … … 412 415 === Database changes === 413 416 414 New table '''host_app ''':417 New table '''host_app_version''': 415 418 {{{ 416 419 int host_id; 417 int app_id; 418 int vnpfc_n; 419 double vnpfc_sum; 420 double vnpfc_exp_avg; 421 }}} 422 423 New table '''host_app_version''': 424 {{{ 425 int host_id; 426 int app_version_id; 427 int et_n; 428 double et_sum; 429 double et_exp_avg; 430 // some variable for recent error rate, 431 // replacing host.error_rate and host.max_results_day 432 // make sure that a host w/ 1 good and 1 bad GPU gets few GPU jobs 420 int app_version_id; // generalized for anon platform 421 AVERAGE pfc; 422 AVERAGE_VAR et; // elapsed time / wu.rsc_fpops_est 423 double host_scale_time; 424 bool scale_probation; 425 double error_rate; 426 int max_jobs_per_day; 427 int n_jobs_today; 428 AVERAGE_VAR turnaround; 433 429 }}} 434 430 435 431 New fields in '''app_version''': 436 432 {{{ 437 int pfc_n;438 double pfc_s um;439 double pfc_exp_avg;440 double pfc_scaling_factor;433 AVERAGE pfc; 434 double pfc_scale; 435 double expavg_credit; 436 double expavg_time; 441 437 }}} 442 438 443 439 New fields in '''app''': 444 440 {{{ 445 int vnpfc_n; 446 double vnpfc_sum; 447 double vnpfc_exp_avg; 448 }}} 449 450 === New request message fields === 451 452 === New reply message fields === 441 double min_avg_pfc; 442 bool host_scale_check; // whether to do scale probation 443 int max_jobs_in_progress; 444 int max_gpu_jobs_in_progress; 445 int max_jobs_per_rpc; 446 int max_jobs_per_day_init; 447 }}} 453 448 454 449 === Scheduler changes === 455 450 456 === Client changes === 451 * When dispatch anonymous app job, 452 set result.app_version_id to -2/-3/-4 depending on resource. 453 * update host_app_version.host_scale_time for 454 app versions for which jobs are being sent 455 and for which scale_probation is set. 457 456 458 457 === Validator changes === 459 458 460 === Server APIs for computing and granting credit === 461 462 == Compatibility == 463 464 465 459 * To reduce DB access, validator maintains a vector of app_versions. 460 This is appended to by assign_credit_set(). 461 At the start of every validator pass, the pfc and expavg_credit 462 fields of the app versions are saved. 463 Updates are accumulated, 464 and at the end of the validator pass (before sleep()) 465 the incremental changes are written to the DB. 466 This scheme works correctly even with multiple validators per app. 467 * The updating of app_versions is done in such a way that 468 we pick up changes to pfc_scale by the feeder. 469 * The app record is reread at the start of each scan, 470 in case its min_avg_pfc has been changed by the feeder. 471 * check_set() no longer returns credit (leave arg there for now) 472 * update host_app_version.scale_probation in is_valid() 473 * don't grant credit in is_valid() 474 * compute and grant credit in handle_wu() 475 476 === Feeder changes === 477 478 * If we're the "main feeder" (mod = 0, or mod not used), 479 update app_version.pfc_scale and app.min_avg_pfc every 10 minutes.