BOINC / boinc

Open-source software for volunteer computing and grid computing.
https://boinc.berkeley.edu
GNU Lesser General Public License v3.0
2.03k stars 449 forks source link

Deadlines missed if running multi-thread and single thread projects #4780

Open hucker75 opened 2 years ago

hucker75 commented 2 years ago

Describe the bug If running multi-thread and single thread projects, the scheduler often leaves the single thread ones too late.

Steps To Reproduce

  1. Run only a single-thread project.
  2. Set no new tasks for that project and allow new tasks for a multi-thread project, such that the multi-thread project will fill all threads with 1 task.
  3. Wait until the number of single thread tasks becomes less than the number of threads you have available.
  4. The scheduler will run multi-thread tasks only, until the last minute, then run single threads in panic mode at the same time (therefore more slowly) and miss the deadline.

Expected behaviour The single thread tasks need to be started earlier, or the multi-thread tasks need to be suspended.

System Information

davidpanderson commented 2 years ago

This sounds more like a work fetch issue: the MT server shouldn't send a job that would cause deadlines to be missed. However, the server's logic is approximate. I'm not sure this problem can be easily fixed.

hucker75 commented 2 years ago

No, I had for example 6 single thread tasks running from project A on a 6 thread machine. I manually changed to project B using no new tasks and allow new tasks. Boinc can only download 6 thread tasks from project B now. When one of the single thread tasks finishes, it gets a 6 thread task, then it leaves the single thread ones from project A to one side, and for too long.

davidpanderson commented 2 years ago

See if you can repro it in the client emulator: https://boinc.berkeley.edu/sim_web.php

hucker75 commented 2 years ago

Sorry, not sure how to use that. I need to set it up to have for example:

A 6-thread machine with: 5 1-thread tasks from project A. The sixth has just completed. 1 6-thread task from project B. Only project B has new work allowed. Boinc will run the 6-thread task, and when it is finishing, will download another. The 1-thread tasks will never run until panic mode.

davidpanderson commented 2 years ago

Wait until your client is in the state you describe, and stop it. Upload client_state.xml to that web page. Let me know when done.

hucker75 commented 2 years ago

I tried, but it didn't happen this time, it's very random.