mirror of https://github.com/BOINC/boinc.git
119 lines
2.9 KiB
Plaintext
119 lines
2.9 KiB
Plaintext
|
Global view
|
||
|
Projects
|
||
|
Applications
|
||
|
Scheduling server
|
||
|
Database
|
||
|
Project back end (interacts with scheduler via DB, files)
|
||
|
web server
|
||
|
Data servers
|
||
|
Clients
|
||
|
core client, applications, files
|
||
|
single download
|
||
|
preferences
|
||
|
|
||
|
|
||
|
Abstractions
|
||
|
projects
|
||
|
applications
|
||
|
Workunits -> input file descriptors -> files
|
||
|
Results -> output file descriptors -> files
|
||
|
|
||
|
file descriptors can give name/FD
|
||
|
files can have various properties
|
||
|
files up/downloaded to servers; may be "sticky"
|
||
|
client-generated scratch files; may be "sticky"
|
||
|
some files originate on servers and are sent to clients;
|
||
|
some files originate on client and are deleted after the WU
|
||
|
some files originate on client and become input for later WUs
|
||
|
some files originate on client and are uploaded (and maybe kept)
|
||
|
|
||
|
Results are generated in advance
|
||
|
(alternative: let clients fill in template)
|
||
|
|
||
|
Properties of workunits
|
||
|
disk/RAM max needs
|
||
|
IOPs/FLOPs/memBW needs
|
||
|
|
||
|
File transfer requests
|
||
|
|
||
|
Result sequences
|
||
|
|
||
|
Examples
|
||
|
SETI@home case: generate multiple results; generate more as needed
|
||
|
CP.com case: result sequences
|
||
|
normal case
|
||
|
interrupted/restarted case
|
||
|
access to large output files
|
||
|
|
||
|
How things work on the scheduling server
|
||
|
WUs and results described by XML files (has file, resource info)
|
||
|
user preferences described by XML files
|
||
|
file transfer requests described by XML files
|
||
|
DB keeps track of
|
||
|
apps
|
||
|
hosts
|
||
|
platforms
|
||
|
users
|
||
|
app versions
|
||
|
core versions
|
||
|
WUs
|
||
|
all input files available?
|
||
|
results
|
||
|
unsent/sent/completed/error/timed out
|
||
|
|
||
|
Host measurements
|
||
|
CPU: #cpus, int, FP, mem BW
|
||
|
mem: total, cache, swap
|
||
|
disk: total, free
|
||
|
network: bandwidth up/down. IP address history
|
||
|
on fraction
|
||
|
connected fraction
|
||
|
|
||
|
How we keep track of different hosts
|
||
|
RPC seqno
|
||
|
|
||
|
The scheduling server algorithm
|
||
|
|
||
|
Project back end: examples
|
||
|
|
||
|
How things work in the client
|
||
|
FSM model
|
||
|
network stack
|
||
|
processor slots
|
||
|
|
||
|
account file, client state file
|
||
|
|
||
|
main loop of client
|
||
|
|
||
|
When does the client ask for work?
|
||
|
hi/lo water marks
|
||
|
server backoff requests
|
||
|
failed connection backoff
|
||
|
|
||
|
What are user preferences?
|
||
|
max RAM to use while user active
|
||
|
confirm before connect?
|
||
|
don't compute while on batteries
|
||
|
min time between disk I/O
|
||
|
max disk space to use (absolute, or % of free)
|
||
|
list of projects
|
||
|
% of resources (disk, CPU)
|
||
|
hours to communicate/compute
|
||
|
max #bytes to upload each day
|
||
|
max #bytes to download each day
|
||
|
|
||
|
How are preferences adjusted?
|
||
|
Web interface
|
||
|
XML file
|
||
|
(extensible set of preferences w/o server change)
|
||
|
|
||
|
How a users starts up
|
||
|
|
||
|
How a user adds/removes projects
|
||
|
|
||
|
How a project starts up
|
||
|
|
||
|
Security mechanisms
|
||
|
|
||
|
Result validation and credit
|