2 WorkShop07_BoincSched
Vitalii Koshura edited this page 2023-04-16 18:16:37 +02:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Scheduler

  • How to address diverse scheduler requirements:
    • Differential sized workunits (different lengths)
    • HR Classes
    • Different applications
    • Work which requires a reliable hosts
  • What are the factors limiting scaling:
    • Shared memory segment size? Work not available for some computers
    • Database performance what can be done? More memory, more processors? Distribute the database?
    • Decided this is a general CS problem and not a BOINC problem
  • Best Fit Workunits Match Making
    • Add an algorithm that will evaluate the best match in the shared memory segment between the host and the workunit this would have a number of benefits including reducing the # of passes through the shared memory array as well as improving the match between a workunit and the host (for example longer running workunits going to hosts that are more powerful)
    • BOINC will build the framework for this but provide a mechanism for project to override the match making/scoring function so that the function can tuned to the projects need
  • Syntax validation
    • Modify the validation to create an optional two-phase validation approach. The first pass would be to perform a project supplied syntax check of the file (size, contents, etc) The second pass would be the standard existing validator
    • Two possible approaches were discussed:
      • Embed the check in the scheduler so that when the result is reported by the client, the check is performed at that time. Upside of this is less coding is required. Downside is that this then requires that the scheduler have access to the upload filesystem
      • 2nd option is that a new state for outcome_state would be added. A daemon would run that would look for that new state and then perform the syntax check. The result would then be marked as outcome success or outcome error and the transition time for the workunit would be set to now. Advantage good logic separation of this function that could be moved around as needed by the project. Disadvantage requires changes to the state machine which is tricky