mirror of https://github.com/BOINC/boinc.git
159 lines
4.6 KiB
Plaintext
159 lines
4.6 KiB
Plaintext
|
- 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
|