boinc/TODO

169 lines
4.8 KiB
Plaintext

HIGH-PRIORITY (must be done to support SETI@home)
- test versioning mechanisms for core
send messages if either
1) some WU couldn't be sent because core is too old
2) no WUs could be sent because core is too old
- test incompatible-core mechanism for apps
same as above?
- test reporting of app errors
- test checksumming of executables
- proxy support
- implement scheme for distributing scheduling server addresses
each project provides a URL for file with list of scheduler address,
and email address of "problems" contact
- implement and test hi/lo water mark scheme
- core client must estimate how much work it has left,
based on %done (if available) and time estimates
- CPU accounting in the presence of checkpoint/restart
core client periodically gets CPU time, accumulates in state file
- scalable/efficient server architecture: alternatives
use our own process framework, shared memory for result/WU lists
use fast CGI w/ shared mem
- measure hardware parameters: CPU speed, #CPUs, memory, disk
- define CPU benchmarks
- do this for other platforms
- Get info periodically rather than always at startup
- core client / app trigger file interface
core->app
init:
app preferences
name of graphics shared-mem seg
recommended graphics size
recommended frame rate
recommended checkpoint period
dynamic:
whether to do graphics
exit
app->core
init:
actual graphics size
dynamic:
% done
I just checkpointed
- implement graphics system
Basic idea: core client passes shared-memory segment name to app,
recommended size and frame rate.
App creates pixmap + dirty flag in shared mem,
renders to it, sets dirty flag.
Core client (or screensaver) maps shared mem.
When dirty, blit pixmap to screen
- X11 version
It's not clear whether X11 allows you to draw into memory.
Does everything have to go through server?
- Win32-based version
- The API by which the app draws into shared-mem pixmap should
be platform-independent.
In the first pass we can use our own library based on Win32 primitives.
In principle we should be able to use any library
capable of offscreen drawing.
OpenGL version?
- GUI and screensaver around core client
design default (core client) display
screensaver options
move around screen?
system tray icon behavior
- get idle-only behavior without screensaver
- Network retry policies
can't download file: when to give up? how to retry?
exponential backoff
can't upload file: when to give up/retry?
can't connect to sched server
error return from sched server
- sched server should return total credit info (user, team?)
could display in default core client display
- edit user account
- team system
--------------------------
MEDIUM-PRIORITY (must be done for CM)
- review and complete documentation
- test sticky files
- test multiple-file applications
change add.C to support multi-file applications
- implement WU/result sequences
--------------------------
LOW-PRIORITY
- implement checkpoint/restart for file transfers
use features of HTTP 1.1
Return an error to server if transfer fails
(store in DB in server)
- implement and test the batch mechanism
- test environment-var mechanism
- test alpha/beta/prod for apps
- test on a multiprocessor
- define logging system on client
- server-side estimates of WU time requirements
- DB entry for WU has int/FP/RAM/disk/net
- server sends only feasible WUs
- limit by RAM, disk
- test
- implement file upload/download requests
- preferences
finish PHP web interface
specific preferences:
disk usage
% of free space?
all except X GB?
X GB?
minimum checkpoint interval
max bytes upload/download per day
implement in client
hours/days to communicate/compute
implement in client
control over priorities?
- define a notion of "app preferences": arbitrary XML edited on server,
passed to app client.
This could be used to e.g. select a color scheme for graphics
Could pass entire prefs?
- NET_XFER_SET:: do_select: prevent one stream from starving others
- add the ability to store input data directly in WU,
and output directly in result (blob).
For projects with small data.
--------------------------
DONE (may need test)
- mechanism for returning app stderr output to server? store in blob?
- add size to FILE_INFO
server, client sides
- measure bandwidth on each network xfer
maintain exponential average, weighted by #bytes xferred