Wednesday, August 22, 2018

PDS 0.98w release

PDS 0.98w is released with the following changes

1. Rework rq->sl_header data structure. Now, it is a pointer to the idle->sl_node. This unify sl_node -> task conversion.
2. Policy based task_preemptible_rq(). IDLE/BATCH/NORMAL tasks now has their own strategy in the ttwu code path.
3. Rewrok take_other_rq_task() code path. This code change is prepare for the incoming SM_NICE feature.
4. Try to take tasks from other rq when prio downgrade. Now when rq is going to switch to a low priority task than previous, it will look up if there is higher priority tasks from other run queues.
5. Introduce sched_rq_pending_masks. This replace the sched_rq_nr_running_masks, and provide better filter mask for take_other_rq_task code path.
5. Change per cpu cpu_has_smt_sibling to sched_sibling_cpu. Another preparation for SMT_NICE.
6. Fix UP/non-SMT compilation warning.

#1 and #2 are the new code changes. I personally like the #1, which actually implement the idle task as the tail of the task link in the rq, just like the old school book said. Other changes are preparation for SMT_NICE in the next release.

Enjoy PDS 0.98w for v4.18 kernel, :)

Code are available at https://gitlab.com/alfredchen/linux-pds.
All-in-one patch is available too.

Thursday, August 16, 2018

PDS 0.98v release

PDS 0.98v is released with the following changes

1. Some code refine.
2. Make Batch/Idle tasks less preemptible vs Normal tasks.

With #2, Normal policy tasks should be more responsible when run with Batch/Idle policy tasks. Slight regression has been found for Batch/Idle policy task sanity tests, but they are the design intention of #2.

SMT_NICE will get some love in this kernel release. There will be some SMT_NICE pre-required code changes in next PDS release next week.

Enjoy PDS 0.98v for v4.18 kernel, :)

Code are available at https://gitlab.com/alfredchen/linux-pds.
All-in-one patch is available too.

Sunday, August 12, 2018

PDS 0.98u release

PDS 0.98u is released with the following changes

1. Sync up mainline scheduler changes in 4.18

This is the first PDS-mq release for kernel 4.18. As usual, it just a sync-up release, it all goes well. The next PDS-mq release will be arrived at the weekend, 10+ commits are pending.

Enjoy PDS 0.98u for v4.18 kernel, :)

Code are available at https://gitlab.com/alfredchen/linux-pds
(Say good-bye to github)

All-in-one patch is available too.

Edit: Fix all-in-one patch link.

Sunday, July 15, 2018

PDS 0.98t release

PDS 0.98t is released with the following changes

1. Rework pds_load_balance() based on current implementation. It's the main feature of this release.
2. Minor optimization in task_preemptible_rq().

This is the last release for 4.17, with the rework of balance code path as promise. The sanity test shows there are minor improvement over all workload due to balance overhead cutting. So far, I'd like to call it for the balance overhead cutting work and move on for next main line sync up and investigation of other potential improvement.

Enjoy PDS 0.98t for v4.17 kernel, :)

Code are available at
https://github.com/cchalpha/linux-gc/commits/linux-4.17.y-pds
and also
https://gitlab.com/alfredchen/linux-pds

All-in-one patch is available too.

PS: Here is the updated patch for v4.17.12+ kernel

https://gitlab.com/alfredchen/PDS-mq/raw/master/4.17/v4.17.12+_pds098t.patch
 

Monday, July 9, 2018

PDS 0.98s release

PDS 0.98s is released with the following changes

1. Fix compilation issue on raspberry pi.
2. Minor rework and optimization on balance code path.
3. Fix wrong nr_max_tries in migrate_pending_tasks.

This is mainly a bug fix and minor optimization release for 4.17. The rework of balance code doesn't go well, it actually make more overhead than current implement. Another rework which based on current implement is still on going, hopefully be included in next release.

Enjoy PDS 0.98s for v4.17 kernel, :)

Code are available at
https://github.com/cchalpha/linux-gc/commits/linux-4.17.y-pds
and also
https://gitlab.com/alfredchen/linux-pds

All-in-one patch is available too.

Monday, June 11, 2018

PDS 0.98r release

PDS 0.98r is released with the following changes

1. Fix compilation error when build CFS.
2. Optimization here and there.
3. Pick one more remaining sync-up from mainline.

This is the second PDS release for 4.17. It's mainly for bug fix, continue sync-up pick-up and minor optimization. After this, I'm reworking the balance, hopefully helping reducing the overhead.

Enjoy PDS 0.98r for v4.17 kernel, :)

Code are available at
https://github.com/cchalpha/linux-gc/commits/linux-4.17.y-pds
and also
https://bitbucket.org/alfredchen/linux-gc/commits/branch/linux-4.17.y-pds (Will be deprecated soon)

All-in-one patch is available too.(Now the link is from github PDS-mq repository, although MS has bought github which make uncertain future of github, but moving from bitbucket is certain, all-in-one patch will not be uploaded to download page of bitbucket repository from this release)

Monday, June 4, 2018

PDS 0.98q release

PDS 0.98q is released with the following changes

1.Sync up with 4.17 mainline scheduler changes.

This is the first PDS release in 4.17. Because there are head files related code changes from mainline, so there may be chances compilation doesn't work under given combination of kernel config(scheduler related), please report back when it happens. Two "last minute" scheduler changes haven't been pick up from mainline, need more time to see how it apply upon PDS, because it happens on critical code path.

Known issue, but not PDS related, chromebook pixel failed to suspend(same on mainline CFS).

Enjoy PDS 0.98q for v4.17 kernel, :)

Code are available at
https://bitbucket.org/alfredchen/linux-gc/commits/branch/linux-4.17.y-pds
and also
https://github.com/cchalpha/linux-gc/commits/linux-4.17.y-pds

All-in-one patch is available too.