forked from BOINC/boinc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
sched_config.h
226 lines (210 loc) · 8.12 KB
/
sched_config.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
// This file is part of BOINC.
// http://boinc.berkeley.edu
// Copyright (C) 2008 University of California
//
// BOINC is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License
// as published by the Free Software Foundation,
// either version 3 of the License, or (at your option) any later version.
//
// BOINC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with BOINC. If not, see <http://www.gnu.org/licenses/>.
#ifndef _SCHED_CONFIG_
#define _SCHED_CONFIG_
#include <regex.h>
#include <vector>
#include <cstdio>
#include "sched_limit.h"
using std::vector;
// constants related to consecutive_valid.
// These could be made configurable.
#define CONS_VALID_RELIABLE 10
// host is eligible to be considered "reliable"
#define CONS_VALID_HOST_SCALE 10
// host is eligible for host scaling of credit
#define CONS_VALID_UNREPLICATED 10
// host is eligible for single replication
// server configuration
// MISNAMED - should be SERVER_CONFIG,
// and should factor out scheduler-specific stuff into SCHED_CONFIG
//
struct SCHED_CONFIG {
char master_url[256];
char long_name[256];
char db_name[256];
char db_user[256];
char db_passwd[256];
char db_host[256];
char replica_db_name[256];
char replica_db_user[256];
char replica_db_passwd[256];
char replica_db_host[256];
int shmem_key;
char project_dir[256];
char key_dir[256];
char download_url[256];
char download_dir[256];
char upload_url[256];
char upload_dir[256];
int report_grace_period;
// grace period for reporting results;
// server's report deadline is client's deadline + this
double delete_delay;
bool msg_to_host;
bool non_cpu_intensive;
bool verify_files_on_app_start;
int homogeneous_redundancy;
bool hr_allocate_slots;
bool hr_class_static;
bool ignore_upload_certificates;
bool dont_generate_upload_certificates;
int uldl_dir_fanout; // fanout of ul/dl dirs; 0 if none
bool cache_md5_info;
int fuh_debug_level;
int reliable_priority_on_over;
// additional results generated after at least one result
// is over will have their priority boosted by this amount
int reliable_priority_on_over_except_error;
// additional results generated after at least one result is over
// (unless there is an error) will have their priority boosted
// by this amount
int reliable_on_priority;
// results with a priority equal or greater than this value
// will be sent to reliable hosts
bool distinct_beta_apps;
// allow users to select beta apps independently
bool ended;
// Project has ended - tell clients to detach
int shmem_work_items;
// number of work items in shared memory
int feeder_query_size;
// number of work items to request in each feeder query
char httpd_user[256];
// user name under which web server runs (default: apache)
bool enable_assignment;
bool enable_vda;
double vda_host_timeout;
bool enable_assignment_multi;
bool job_size_matching;
bool dont_send_jobs;
//////////// STUFF RELEVANT ONLY TO SCHEDULER FOLLOWS ///////////
vector<regex_t> *ban_cpu;
vector<regex_t> *ban_os;
int daily_result_quota; // max results per day is this * mult
char debug_req_reply_dir[256];
// keep sched_request and sched_reply in files in this directory
double default_disk_max_used_gb;
double default_disk_max_used_pct;
double default_disk_min_free_gb;
vector<int> dont_search_host_for_userid;
bool dont_store_success_stderr;
int file_deletion_strategy;
// select method of automatically deleting files from host
int gpu_multiplier; // mult is NCPUS + this*NGPUS
bool ignore_delay_bound;
bool locality_scheduling;
double locality_scheduler_fraction;
bool locality_scheduling_sorted_order;
int locality_scheduling_wait_period;
int locality_scheduling_send_timeout;
vector<regex_t> *locality_scheduling_workunit_file;
vector<regex_t> *locality_scheduling_sticky_file;
bool sched_old;
int max_download_urls_per_file;
int max_ncpus;
JOB_LIMITS max_jobs_in_progress;
int max_results_accepted;
// skip reported jobs beyond this limit
// (they'll get reported in the next RPC)
// This limits the memory usage of the scheduler;
// otherwise it can crash if the client is reporting thousands of jobs.
int max_wus_to_send; // max results per RPC is this * mult
int min_core_client_version;
int min_core_client_version_announced;
int min_core_client_upgrade_deadline;
int min_sendwork_interval;
double next_rpc_delay;
bool no_amd_k6;
// don't allow AMD K6 CPUs
bool no_vista_sandbox;
bool nowork_skip;
bool one_result_per_host_per_wu;
bool one_result_per_user_per_wu;
int reliable_max_avg_turnaround;
// max average turnaround for a host to be declared reliable
double reliable_max_error_rate;
// DEPRECATED
// max error rate for a host to be declared reliable
double reliable_reduced_delay_bound;
// Reduce the delay bounds for reliable hosts by this percent
char replace_download_url_by_timezone[256];
bool prefer_primary_platform;
// When selecting app versions,
// use the client's primary platform if a version exists.
// e.g. send 64-bit versions to 64-bit clients,
// rather than trying the 32-bit version to see if it's faster.
// Do this only if you're sure that the 64-bit versions are
// always faster than the corresponding 32-bit versions
double version_select_random_factor;
// in deciding what version is fastest,
// multiply projected FLOPS by a random var with mean 1 and this stddev.
int report_max;
bool request_time_stats_log;
bool resend_lost_results;
int sched_debug_level;
int scheduler_log_buffer;
char sched_lockfile_dir[256];
bool send_result_abort;
char symstore[256];
bool user_filter;
// send a job to a user only if wu.batch == user.id
// DEPRECATED: use assignment instead
bool workload_sim;
// Do workload simulation in deciding whether to send a result
bool estimate_flops_from_hav_pfc;
// Use host_app_version peak flop count rather than elapsed time
// to calculate projected_flops when choosing version.
bool credit_by_app;
// store per-app credit info in credit_user and credit_team
// time intervals
double maintenance_delay;
// if stop_sched is set, tell clients to delay this much
// scheduler log flags
//
bool debug_assignment;
bool debug_credit;
bool debug_edf_sim_detail; // show details of EDF sim
bool debug_edf_sim_workload; // show workload for EDF sim
bool debug_fcgi;
bool debug_client_files; // stuff related to sticky files on client
bool debug_handle_results;
bool debug_locality; // locality scheduling
bool debug_locality_lite; // locality scheduling Lite
bool debug_prefs;
bool debug_quota;
bool debug_request_details;
bool debug_request_headers;
bool debug_resend;
bool debug_send;
// job dispatch, high-level stuff, e.g. request params and jobs sent
bool debug_send_scan;
// job dispatch at the level of scans through array
bool debug_send_job;
// job dispatch: why individual jobs weren't sent (most verbose)
bool debug_user_messages;
bool debug_vda;
bool debug_version_select;
int parse(FILE*);
int parse_aux(FILE*);
int parse_file(const char *dir = 0);
int upload_path(const char*, char*);
int download_path(const char*, char*);
const char *project_path(const char *, ...);
};
extern SCHED_CONFIG config;
#endif