mirror of https://github.com/BOINC/boinc.git
Page:
CreditProposal
Pages
API Implementation
ATI Radeon
Account managers
AccountControl
AccountManagement
AccountManagers
Adaptive Replication
AdminAlphaTest
AdminApprovedProjects
AdminDepLibs
AdminDepLibsCurl
AdminDepLibsOpenSSL
AdminDepLibsSqlite
AdminDepLibsZlib
AdminInstallerMac
AdminInstallerUnix
AdminInstallerWin
AdminLocalize
AdminReleaseAndroid
AdminReleaseManagement
AdminRoles
AdminTasks
AdminWrappers
Advanced view
AlphaInstructions
AndroidBoinc
AndroidBoincImpl
AndroidBoincTesting
AndroidBoincTodo
AndroidBuildApp
AndroidBuildClient
AndroidBuildStatus
AndroidGuiDiscuss
Anonymous platform
AppCoprocessor
AppDebug
AppDebugAndroid
AppDebugWin
AppDev
AppFiltering
AppIntro
AppLibraries
AppMultiThread
AppPlan
AppPlanSpec
AppVersion
AppVersionNew
Apple Metal Support
AssignedWork
Assimilation introduction
Assimilators in C
Assimilators in scripting languages
AutoFlops
AutoUpdate
BOINC Client
BOINC Data directory
BOINC Help
BOINC Manager
BOINC Security
BOINC screensaver
BOINC apps (introduction)
BOINC community
BOINC events
BOINC overview
BOINC projects
BOINC software development
BOINConPhones
BackendLogic
BackendPrograms
BackendState
BackendUtilities
BadgeDoc
BadgesOld
BashCommandCompletion
BasicApi
BasicConcepts
BerkeleyTasks
BetaTest
BlackList
BoincBasics
BoincContributersCall
BoincDocker
BoincFiles
BoincGovernanceWorkingGroups
BoincIntro
BoincLite
BoincPapers
BoincPlatforms
BoincPmcPage
BoincPr
BoincProjectsCall
BoincSecurity
Boinccmd tool
BuildClientProcedure
BuildMacApp
Building BOINC on Unix
Building BOINC software
CamelCase
CancelJobs
CertSig
Changes to this Wiki
Choosing and joining projects
Client configuration
Client release notes
ClientAppConfig
ClientDataModel
ClientFiles
ClientFsm
ClientLogic
ClientOpaque
ClientSched
ClientSchedOctTen
ClientSchedOld
ClientSchedVersionFour
ClientSetupLogicWin
ClientSetupLogicWinFileLayout
ClientSetupLogicWinSix
ClientSetupLogicWinSixCleanup
ClientSetupWinSix
ClientSim
CloudServer
CodeSigning
CodingStyle
CommIntro
Command line job submission
CompileApp
CompileAppLinux
CompileAppWin
CompileClient
CompileWithWxWidgets
CompoundApps
Computation credit
Computing with BOINC
CondorBoinc
ConferenceList
Contact BOINC
ContributePage
Controlling BOINC remotely
CoreClient
CpuSched
Create a BOINC server (cookbook)
CreateProjectCookbook
Creating a skin for the BOINC Manager
Creating custom installers
CreditAlt
CreditGeneralized
CreditNew
CreditNotes
CreditOptions
CreditProposal
CreditStats
CrossProjectUserId
CudaApps
DataBase
DataFlow
DbDump
DbIds
DbPurge
DebugClientWin
DeleteFile
Deploy Linux apps using VirtualBox (cookbook)
DesignKeywords
DesktopGrid
DevMethodologies
DevProcess
DevProjects
DevProjects_New
DevQualityAssurance
Development_Workflow
DiagnosticsApi
DirHierarchy
DiskManagement
Docker and WSL
Docker app cookbook
Docker app implementation
Docker apps
Docker design alternatives
Docker universal app web interface
Docker universal app
DownloadInfo
DownloadOther
DrupalConversion
DrupalIntegration
EastCoast08
Editing computing preferences with the BOINC Manager
EmBoinc
EmailChangeNotification
EmailLists
Error handling (cookbook)
Error handling (introduction)
ErrorReference
Error_Abortingtask_Exceededdisklimit
Error_Cantdeletepreviousstatefile
Error_Givinguponupload
Error_Schedulerrequestfailed
ExampleApps
FileCompression
FileDeleter
FileList
FileUpload
FortranApps
Fossils
GPU computing
GPUApp
GSoC_13
GdprCompliance
GetFile
GetFileList
GitMigration
Global prefs override.xml
Going public
GpuSched
GpuSync
GpuWorkFetch
GraphicsApi
GraphicsApiOld
GraphicsApps
GraphicsHtml
GridIntegration
GuiRpc
GuiRpcProtocol
GuiUrls
HTMLGfx
HarzPics
Heat and energy considerations
Home
Homogeneous App Version
Homogeneous Redundancy
Host identification and merging
HostId
HostMeasurement
How BOINC works
HtmlOps
Initialization files
InstallDrupal
Installing BOINC on Debian or Ubuntu
Installing BOINC on EC2
Installing BOINC on Fedora
Installing BOINC on Gentoo
Installing BOINC on Ubuntu
Installing BOINC
Installing on Android
Installing on FreeBSD
Installing on Linux
Installing on MacOS
Installing on Windows
IntermediateUpload
JavaApps
Job processing (cookbook)
Job processing (introduction)
Job replication
JobEst
JobIn
JobIntro
JobKeywords
JobPinning
JobPrioritization
JobReplication
JobSched
JobSizeMatching
JobStage
JobStatus
JobSubmission
JobTemplates
KeySetup
LammpsRemote
LdapSupport
Linux file permissions
Linux DEB and RPM support
Linux installer
LocalityNew
LocalityScheduling
Locating stolen computers
LogExtension
LogRotate
LowLatency
MacBacktrace
MacBuild
MacDeveloper
MacDeveloperProjects
Maintain your BOINC project
MakeProject
ManagerImpl
ManagerMenus
MasterUrl
MediaWiki
MemoryManagement
Missing Linux shared libraries
MpiApps
MultiHost
MultiSize
MultiUser
MultiUserPriority
MysqlConfig
Network related problems
NetworkApps
NonCpuIntensive
Notifications
OpenCL Applications
OpenCL CPU applications
OpenId
OpenclCpu
OptionsApi
OrgGrid
OtherProjectDocs
PMC_Minutes
PMC_Minutes_2017_12_15
PMC_Minutes_2018_01_10
PageTemplates
PasswordHash
PayPalDonations
Per user file sandbox
PerAppCredit
PersFileXfer
PhpDb
PhysicalFileManagement
PlanClassFunc
PortalFeatures
PowerManagement
Preferences
PreferencesXml
Prefs2
PrefsImpl
PrefsOverride
PrefsPresets
PrefsReference
PrefsReference_Time
PrefsRemodel
PrefsUnification
PrepareLinuxBuildMachine
Process_proposals
ProfileScreen
ProjectConfigFile
ProjectDaemons
ProjectDefaults
ProjectGovernance
ProjectLaunch
ProjectMain
ProjectNews
ProjectNotices
ProjectOptions
ProjectPapers
ProjectPlan
ProjectSecurity
ProjectSelect
ProjectSkin
ProjectSpecificPrefs
ProjectSponsors
ProjectTasks
ProofOfOwnership
Proposal_ProjectSimpleAccountCreation
ProtectionFromSpam
Proxy servers
ProxyServer
PyMw
PythonAppDev
PythonApps
PythonFramework
PythonMw
PythonMysql
QuickStart
RecentChanges
Reduce_usage_of_authenticator
Reduce_usage_of_authenticator_implementation
ReleaseNotes
RemoteInputFiles
RemoteJob
RemoteJobs
RemoteLogs
RemoteOutputFiles
RemoteOverview
Reporting client bugs
ResearchProjects
RightToErasure
RpcAuth
RpcPolicy
RpcProtocol
RpmSpec
Running Linux apps on BOINC
RuntimeEstimation
SandBox
SandboxUser
SchedMatch
Scientist interface
ScreensaverEnhancements
ScreensaverLogic
SecureHttp
SecurityIssues
SendFile
Server release notes
Server trouble‐shooting
ServerComponents
ServerDirs
ServerIntro
ServerSecurity
ServerStatus
ServerTestInstructions
ServerUpdates
Simple view
Simple attach usage
SimpleAttach
SingleJob
SingleJobImpl
SkinExamples
SoftwareAddon
SoftwareDevelopment
SoftwarePrereqsUnix
SoftwareTesting
SolarisClient
SolrIntegration
Source code map
SourceCode
SourceCodeGit
SourceCodeGit_Commands
SourceCodeGit_Windows
SourceCodeGit_WindowsKeygen
SourceCodeGit_WorkFlow
SourceCodeSvn
Sporadic Applications
Standard assimilators
Standard validators
StartTool
Starting BOINC on boot (Unix)
StatsXml
StatusApi
StolenComputers
Stop or start BOINC daemon after boot
StripChart
StyleSheets
SuperHost
TeamDiscussion
TeamImport
Teams
TemplateImages
TermsOfUse
The BOINC out of box experience
The BOINC test drive
ToolUpgrade
Tools for MacOS
TranslateIntro
TranslateProject
Translate_Coordination
TranslationSystem
TreeThreader
TrickleApi
TrickleImpl
TrickleMessages
TroubleshootClient
TroubleshootClient_New
Troubleshooting
Tutorial_BOINCApplicationDevelopmentLifecycle
Tutorial_DeployingVMApplications
UnixClientPackage
UnixProjectPackage
UpdateVersions
UploadStatistics
Usage rules
User manual
UserJobs
UserOptInConsent
Using BOINC with modem, ISDN and VPN connections
UsingSvn
ValidationLowLevel
Validators in C
Validators in scripting languages
Validators
VboxApps
Vboxwrapper release notes
VersionDiff
VersionHistory
VersionPathSorter
VirtualBox Plan
VirtualBox
VirtualCampusSupercomputerCenter
VirtualMachines
Virtualbox Shared Directories
VmApps
VmCompatibility
VmServer
Volunteer
VolunteerComputing
VolunteerDataArchival
VolunteerRecruit
VolunteerStorage
WSL apps
WatchDog
Weak account key
WebCache
WebConfig
WebForum
WebResources
WebRpc
WebSubmit
WebTemplateProposal
WhyUseBoinc
WikiTodo
WinMulticore
WindowsIssues
WordPressInt
WorkDistribution
WorkFetchMaxConcurrent
WorkGeneration
WorkShop07
WorkShop07_BoincGrid
WorkShop07_BoincSched
WorkShop07_InterpretedApps
WorkShop07_PubBoincOne
WorkShop07_PubBoincTwo
WorkShop07_SecurityGroup
WorkShop07_SimplifyApp
WorkShop07_Summary
WorkShop07_VirtualMachines
WorkShop07_WebCode
WorkShop08
WorkShop08_WorkshopProceedings
WorkShop09
WorkShop09_BatchSched
WorkShop09_InterprocComm
WorkShop09_ScientistUsability
WorkShop09_UserIssues
WorkShop09_VmApps
WorkShop10
WorkShop10_VmApps
WorkShop10_VolunteerIssues
WorkShop11
WorkShop11_HackFest
WorkShop11_HackFest_Android
WorkShop11_MultiUser
WorkShop12
WorkShop12_WorkshopSummary
WorkShop13
WorkShop13_HackfestNotes
WorkShop14
WorkShop18
WorkShop19
Worker release notes
WorldWideLexicon
Wrapper release notes
WrapperApp
XaddTool
XmlFormat
XmlNotes
XmlStats
test_RunningBoinc
2
CreditProposal
Vitalii Koshura edited this page 2023-04-10 05:14:02 +02:00
Proposal for a new credit system
This is a tentative proposal for a new credit system for BOINC.
Requirements
- The system should reflect how much "utility" volunteers provide to projects. There are many types of utility (see below). Projects should be able to define utility however they want.
- The system should normalize the amount of credits given by different projects, so that there will be no incentive for average volunteers to select projects based on credit (however, volunteers with unusual computers should have an incentive to select projects that need such resources).
- The average amount of credit per host per day should remain constant over time.
Types of utility
Possible types of utility:
- Computation (FP, integer, or mixed) without tight deadlines (this is typical of most current projects).
- Computation with a tight latency bound (minutes or hours).
- Computation that needs a large amount of RAM.
- Computation that needs a large amount of storage.
- Storage (e.g. GB/day).
- Storage, with network bandwidth and/or availability requirements.
- Network bandwidth (e.g. web crawling).
- Network bandwidth at particular times of day (e.g. Internet performance study).
- Deployment on a wide range of computer types (e.g. studies of computer usage).
- Computation with human "steering".
- Human activity (e.g. Stardust@home-type projects).
Proposal
- Computers are described by a set of parameters (FP and int benchmarks, #CPUs, cache sizes, memory bandwidth, available RAM, available disk, presence of particular GPUs, network bandwidth, available fraction, connected fraction, maybe others).
- Each project P publishes a "credit function" C(H) specifying, for a host H with given parameters, how much credit per day would be granted if H is attached exclusively to P.
- Normalization rule: for each project, the average of C(H) over all hosts participating in BOINC must be about 100.
- Accounting rule: the credit granted by a project P cannot exceed the sum over hosts H of
RS(H, P)*C(H)
where RS(H, P) is the fractional resource share of H's attachment to P.
The normalization and accounting rules would be evaluated by cross-project statistics sites.
Examples
- Computational projects would have to derive a credit function based on how fast various types of computers run their applications (and how much they value each application). We can supply automated tools for this.
- Suppose a project's application needs at least 16 GB RAM. Its credit function would be zero for hosts with < 16 GB RAM. Its value for hosts with at least 16 GB would be limited by the normalization rule.
- For a storage-only projects, C(H) would be proportional to available disk space (possibly with some additional consideration for network bandwidth etc.).
- Using the published credit functions, it would be possible to develop a "credit maximizer" web site, where users can enter the parameters of their computer, and it tells them how much credit/day each project would give them.
- Similarly, it would be possible to develop a web site that tells users how much additional credit/day they could get by adding more disk/RAM/network bandwidth etc. to an existing computer.
Questions and comments
- BOINC doesn't currently have code to measure memory bandwidth or cache sizes; we'd need to develop this.
- How should credit functions be represented (e.g., as a data structure? a PHP function?).
- What should the default credit function be? What tools can we provide to projects to let them develop appropriate credit functions easily?
- As computers become faster and bigger, credit functions will have to change in order to continue to satisfy the normalization rule.
- Credit can no longer be used as a basis for FLOPS estimates; we'll need something else for that purpose (or keep around the existing credit system and use it only to estimate FLOPS).
- Suppose a project's application needs X GB of RAM, and there is only one host in the BOINC population with that much RAM. Then its credit per day for that host can be 100N, where N is the size of the population. In other words, that computer can get as much credit as all other computers combined. Is this desirable?
- The accounting rule doesn't take into account non-competing projects. E.g. suppose project A uses only CPU and project B uses only disk. If hosts attach to both projects with equal resource shares, the projects will be limited to issuing 50 credits/day on the average.
- Suppose a project uses a resource that other projects use little or none of (e.g. QCN uses the accelerometer found in some laptops; Depspid uses network). How much credit should the project be allowed to grant? Under the current proposal, they would be allowed to grant something like 100/(N+1) per host/day, where N is the average number of other attached projects.
- Also in the above case, the resource share for QCN doesn't affect its utility (since it doesn't use any bottleneck resources), and yet users' resource share settings will affect how much credit can be granted by QCN and other projects attached to hosts running QCN. This doesn't seem right.
- Suppose that a large number of projects arise that don't use CPU or other bottleneck resources. If they're allowed to grant as much credit as CPU-intensive projects, then credit becomes meaningless.
- This proposal doesn't say anything about the last 3 types of utility.