boinc/TODO

159 lines
4.6 KiB
Plaintext
Raw Normal View History

- test environment-var mechanism
- design alpha/beta/prod mechanism for core and apps
Should have flag in host record
(maybe separate flags for core/app).
Project should control which hosts are alpha/beta.
Test.
- include shared memory allocation with key data values (current running projects, est. time, etc) to allow easier development of third party addons (Eric)
- test versioning mechanisms for core
message, deprecation
- test incompatible-core mechanism for apps
- test reporting of app errors
- test sticky files
- test checksumming of executables
- test on a multiprocessor
- mechanism for returning app stderr output to server? store in blob?
- define logging system on client
- proxy support
- put core client version in client state file
- add country, postal code to user
collect on login
- implement scheme for distributing scheduling server addresses
each project provides a URL for file with list of address,
and email address of "problems" contact
- 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
- review and complete documentation
- 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?
- 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?
- CPU accounting in the presence of checkpoint/restart
core client periodically gets CPU time, accumulates in state file
- hi/lo water mark scheme
- core client must estimate how much work it has left,
based on %done (if available) and time estimates
- 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?
- scalable/efficient server architecture: alternatives
use our own process framework, shared memory for result/WU lists
use fast CGI w/ shared mem
- add size to FILE_INFO
server, client sides
- implement checkpoint/restart for file transfers
use features of HTTP 1.1
- measure bandwidth on each network xfer
maintain exponential average, weighted by #bytes xferred
- measure hardware parameters: CPU speed, #CPUs, memory, disk
- define CPU benchmarks
- do this for other platforms
- Get info periodically rather than always at startup
- NET_XFER_SET:: do_select: prevent one stream from starving others
- 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
- implement WU/result sequences
- add the ability to store input data directly in WU,
and output directly in result (blob).
For projects with small data.
- implement file upload/download requests
- sched server should return total credit info (user, team?)
could display in default core client display
- edit user account
- team system