Hi all The question was inspired by the following events:
(Task switch interval is 30 minutes) su 23. helmikuuta 2014 22.21.11 | SETI@home | [cpu_sched] Preempting 30mr13ad.23882.2116.438086664203.12.28_1 (left in memory) su 23. helmikuuta 2014 22.21.11 | boincsimap | Starting task 20140129.2222683_2 su 23. helmikuuta 2014 22.21.11 | boincsimap | [cpu_sched] Starting task 20140129.2222683_2 using simap version 510 in slot 2 su 23. helmikuuta 2014 22.51.16 | boincsimap | [cpu_sched] Preempting 20140129.2222683_2 (left in memory) su 23. helmikuuta 2014 22.51.16 | SETI@home | [cpu_sched] Resuming 30mr13ad.23882.2116.438086664203.12.28_1 su 23. helmikuuta 2014 22.51.16 | SETI@home | [cpu_sched] Resuming task 30mr13ad.23882.2116.438086664203.12.28_1 using setiathome_v7 version 701 in slot 1 su 23. helmikuuta 2014 22.54.16 | SETI@home | [cpu_sched] Preempting 30mr13ad.23882.2116.438086664203.12.28_1 (left in memory) su 23. helmikuuta 2014 22.54.16 | boincsimap | [cpu_sched] Resuming 20140129.2222683_2 su 23. helmikuuta 2014 22.54.16 | boincsimap | [cpu_sched] Resuming task 20140129.2222683_2 using simap version 510 in slot 2 su 23. helmikuuta 2014 23.10.01 | boincsimap | Computation for task 20140129.2222683_2 finished su 23. helmikuuta 2014 23.10.01 | SETI@home | [cpu_sched] Resuming 30mr13ad.23882.2116.438086664203.12.28_1 su 23. helmikuuta 2014 23.10.01 | SETI@home | [cpu_sched] Resuming task 30mr13ad.23882.2116.438086664203.12.28_1 using setiathome_v7 version 701 in slot 1 su 23. helmikuuta 2014 23.12.25 | SETI@home | [cpu_sched] Preempting 30mr13ad.23882.2116.438086664203.12.28_1 (left in memory) su 23. helmikuuta 2014 23.12.25 | boincsimap | Starting task 20140129.2222677_2 su 23. helmikuuta 2014 23.12.25 | boincsimap | [cpu_sched] Starting task 20140129.2222677_2 using simap version 510 in slot 2 So a simap task was started because it was in danger of missing deadline. It runs for 30 minutes and makes enough progress to not miss deadline anymore. BOINC switches back to setiathome task and a few moments later realizes that the simap task is again going to miss deadline. The simap task is finished, setiathome task resumed and minutes later another simap task is going to miss deadline. This went on for three simap tasks. When the client is going to switch to another task, could the client try to predict the future a little, say up to the next task switch time, and if any task would be marked high priority at that time then consider the task high priority right now and switch to that task? This would prevent unnecessary task switches like the above. Also, I imagine that in case LAIM is set off and a task that checkpoints infrequently is run the unnecessary task switches would lead to some amount of CPU time being wasted. On related matter. Could the high priority state of a task be a sort of "sticky"? Currently the client computes the high priority state of a task (about) every second. This can lead to the Manager showing the task as high priority one minute, the next minute the task shows as not high priority, the minute after that the task is again high priority and so on. This doesn't give much confidence that BOINC knows what it's doing. I think it would better if the high priority flag was cleared only when it's time to switch to another task. -Juha _______________________________________________ boinc_dev mailing list [email protected] http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev To unsubscribe, visit the above URL and (near bottom of page) enter your email address.
