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
|