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.

Reply via email to