Showing posts with label skip list. Show all posts
Showing posts with label skip list. Show all posts

Tuesday, September 15, 2020

Project C v5.8-r3 release

Project C v5.8-r3 is released at https://gitlab.com/alfredchen/linux-prjc/-/releases/v5.8-prjc-r3

And dear users(especial  amd cpu users), please check issue report at https://gitlab.com/alfredchen/linux-prjc/-/issues/8. If you have similar issue, pls let us know and try 00_v5.8_r0_disable_wake_list.patch in the attachments and see if it fix the issue for you.

Saturday, September 5, 2020

Project C v5.8-r2 release

Project C v5.8-r2 is released at https://gitlab.com/alfredchen/linux-prjc/-/releases/v5.8-prjc-r2

PDS has been ported from 5.0, I have tested for weeks in daily usage include suspend/resume etc, so it is good for open testing.

Detail changes can be trace via git commits, and will not be covered in blog. And I am thinking about move code/development information and activities to gitlab instead of blog. So, later, blog update will be just a notification about a new release. :)

Friday, May 22, 2020

Project C announcement


BMQ scheduler has been development for more than one year. And it has accomplished the ambition when it was setup to be. As a simple scheduler, BMQ is now stable for several kernel release and less feature is added from release to release. It is now in maintenance mode.

When searching for idea about cpu scheduling, PDS, which has been exiled since BMQ, is still the most potential one, and the one most close to BMQ(in code level and performance level). Several very early improvement idea has been drafted after the reviewing of the latest PDS(kernel 5.0). So, PDS will be picked up again, and it is going to share same code base of BMQ. That comes Project C.

Project C ambitions
1. Based on BMQ code base, provide common alternative cpu scheduler code for linux kernel.
2. Provide single patch set for BMQ and PDS, switch at kernel configuration.
3. Maintenance BMQ
4. Continuous improvement on PDS till it enter maintenance mode.

Here is the recent Project C planing in the incoming kernel release cycle
5.7   Refactor BMQ into Project C infrastructure. 
5.8   Recreate PDS based on Project C code base.
5.9   PDS beta.
5.10 PDS official release.
5.11 PDS continuous improvement. 

Project C has no deadline defined, but may last for a year.

And the last thing, C for "Cross".

Sunday, March 3, 2019

PDS 0.99o release

PDS 0.99o is released with the following changes

1. Sync-up changes from mainline scheduler code.

This is the first PDS release for kernel 5.0.

Enjoy PDS 0.99o for v5.0 kernel, :)

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

Friday, March 1, 2019

PDS 0.99n release

PDS 0.99n is released with the following changes

1. Fix hrtick_start() too short for new tasks.

This is a bug fix release before kernel 5.0.

Enjoy PDS 0.99n for v4.20 kernel, :)

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

Wednesday, February 13, 2019

PDS 0.99m release

PDS 0.99m is released with the following changes

1. [Sync] f29a8be0e5d2 cpu/hotplug: Fix "SMT disabled by BIOS" detection for KVM

This is a sync-up release for 4.20.8+, and should be the last PDS for 4.20.

Enjoy PDS 0.99m for v4.20 kernel, :)

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

Saturday, January 19, 2019

PDS 0.99l release

PDS 0.99l is released with the following changes

1. Fix wrong task priority issue. Now, RT(non-normal) tasks has their proper priority, can be verified by 'RT' priority shown in top/htop.

This is a bug fix release.

Enjoy PDS 0.99l for v4.20 kernel, :)

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

Wednesday, January 9, 2019

PDS 0.99k release

PDS 0.99k is released with the following changes

1. Use exported task_rq_lock/unlock(). These mainline API has been implemented and exported in PDS, so we can use them in other modules to minimized PDS code changes.
2. Optimize pds_skiplist_random_level().
3. Rework SCHED_ISO and non-root user can switch task among ISO/NORMAL/BATCH/IDLE.
 
The most important change in this release is the rework of ISO policy in PDS

"""
    SCHED_ISO tasks now have higher priority to be picked up and run than
    SCHED_NORMAL tasks. When their remaining time slice(default max 4ms in
    PDS) run out, they will degrade to SCHED_NORMAL(and nice level kicks
    in). The degradation will be continued when they still hungry for cpu.

    The above design makes SCHED_ISO good for interactivity but not cpu
    consumption tasks.
"""
And now, normal users can set task policy ISO/NORMAL/BATCH/IDLE freely without root permission. You are encouraged to test any interactive task in PDS new ISO policy(such as gaming, media playback, browsing web ...), and feedback will be welcome.

Enjoy PDS 0.99k for v4.20 kernel, :)

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

Sunday, December 30, 2018

PDS 0.99j release

PDS 0.99j is released with the following changes

1. Fix missing mainline scheduler API for psi.
2. Fix fail to build on ppc64 arch. This issue was reported to PDS-mq repository 3 months ago, and I have missed the notification, very sorry about that.
3. Several code implement level optimization.
 
This is the happy new year release of PDS, include bug fixes and optimization. Thanks for your supporting PDS in 2018. PDS achieved stability, feature and performance this year.

Looking forward in the incoming 2019, there is not much pending features in my list, and after those features, PDS may very close to 1.0 release(thus it just a release number). So, sometime next year, PDS development will slow down(it will still sync with mainline release and bug fixes), I will switch to another scheduler project, hopefully ideas can be inspired from each other projects and benefit from it.

Enjoy PDS 0.99j for v4.20 kernel, :)

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

Sunday, December 23, 2018

PDS 0.99i release

PDS 0.99i is released with the following changes

1. Sync-up with mainline 4.20 scheduler code changes.

Xmas gift comes as promised and here is the first PDS release for 4.20, just the sync-up code changes added. The code has been run since -rc7 for about a week. So there should be no surprise in it, :D
But if you are seeking for surprise, well, there will be optimization code changes for the next release before the new year!

Enjoy PDS 0.99i for v4.20 kernel, :)

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

Tuesday, December 18, 2018

PDS 0.99h release

PDS 0.99h is released with the following changes

1. Fix cpu hot-plug Oops. Thanks @pf's report(again).
2. Rework time_slice_expired().  Simplified and unified task deadline reflash

This should be the last PDS release for 4.19 kernel. Other code implement level optimization are pending for 4.20. Hopefully kernel 4.20 and PDS for 4.20 could be on time as Xmas gift.

Enjoy PDS 0.99h for v4.19 kernel, :)

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

EDIT: Pls also checkout the emergency fix at  https://gitlab.com/alfredchen/linux-pds/commit/fae1a3c0fbe60b7edf6d8aac6b838520da68f9e4

4.20 is coming out soon, so there is no plan to dump up version for 4.19 again.

Sunday, December 9, 2018

PDS 0.99g release

PDS 0.99g is released with the following changes

1. [Sync] c5511d03ec09 sched/smt: Make sched_smt_present track topology. A lot of changes from mainline in v4.19.7 and the incoming 4.20 kernel release.
2. Fix smt boot up crash. This fix a bug in 0.99f PDS release(not related to mainline code changes), thanks @pf's report and help for debugging.

This is a sync-up and bug-fix release.

Enjoy PDS 0.99g for v4.19 kernel, :)

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

Friday, November 30, 2018

PDS 0.99f release

PDS 0.99f is released with the following changes

1. Remove load balance code from scheduler_tick(). Based on recent code change and testing, looks like there is no need to check load balance in scheduler_tick() any more.
2. Default 4ms rr_interal. Trade off performance for interactivity improvement.
3. Rework sibling group balance. Reduce the overhead in sibling group balance by rework the code path.

This release includes balance code rework, and will be the biggest change in this kernel cycle. Please give it a try and feedback will be welcome.

Enjoy PDS 0.99f for v4.19 kernel, :)

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

Friday, November 23, 2018

PDS 0.99e release

PDS 0.99e is released with the following changes

1. Fix sched_fork() time slice fairness. Simplify the code and fairness first.
2. Refine take_other_rq_task() code path.
3. Remove cpumask_weight() in best_mask_cpu().

This release includes minor changes. It's good to have such small change release before the big one.

Enjoy PDS 0.99e for v4.19 kernel, :)

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

Sunday, November 11, 2018

PDS 0.99d release

PDS 0.99d is released with the following changes

1. Rework SCHED_ISO support. Based on the limitation of the user land tools, for example, schedtool only support ISO tasks with priority specified, there is not big change for ISO. But this rework remove the "iso_cpu" kernel parameter. The logic behind this is, if your ISO task breaks the system, this parameter doesn't help(much), and if your ISO task runs well, you don't need to adjust this parameter. So, to keep the code simple, it has been removed.
2. UP compilation fix. Thanks jwh7's reporting. For the incoming release, I will do at least one UP compilation per kernel release cycle to prevent UP compilation breaks again.

This release includes the rest part of task policy support review in PDS. Now I am working on overhead cutting by cleaning up/reworking some balance code path. The next PDS release will be about two weeks later.

Enjoy PDS 0.99d for v4.19 kernel, :)

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

Monday, October 29, 2018

PDS 0.99c release

PDS 0.99c is released with the following changes

1. Fix and sync-up reset on fork handling. In some cases, reset on fork will not work proper. This fixed the issue.
2. Unified time slice for FIFO tasks. Now every task(except for the idle) has the rr interval as time slice.
3. Handle SCHED_BATCH as SCHED_IDLE. Consider the fact that BATCH tasks is more like the IDLE policy task but compete cpu with NORMAL tasks. This commit handle BATCH tasks as IDLE policy and leave NORMAL policy tasks at NORMAL priority alone.
4. Enable SCHED_DEADLINE support. Mainline has SCHED_DEADLINE policy and PDS has to support it, no matter in kernel space or user space. PDS support it by squash it as priority 1 FIFO task.
5.  Optimize ISO branch in normal_prio(). An minor optimization in normal_prio().

This release includes the first part of task policy support review in PDS, and plus some minor optimization. The rest parts of the review, including the rework of ISO policy will be out in next release.

Enjoy PDS 0.99c for v4.19 kernel, :)

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

Monday, October 22, 2018

PDS 0.99b release

PDS 0.99b is released with the following changes

1. Sync with mainline 4.19 scheduler changes.

This is the first PDS release for 4.19, just sync-up changes.

Enjoy PDS 0.99b for v4.19 kernel, :)

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

PS, from now on, the linux-pds git will contains PDS only commits beside the mainline codes, while will help you to get the pure PDS commits a little easier.

Tuesday, September 25, 2018

PDS 0.99a release

PDS 0.99a is released with the following changes

1. Fix sugov_kthread_create fail to set policy.(Thanks jwh7's reporting and testing)
2. Fix task burst fairness issue. Thanks Holger reporting video playback issue, which remind me my mpv lost frame when running "git checkout", that burst creating a lot "git" tasks, I used to believe it is high io usage issue and ignored it. I'm not sure if this commit fix Holger's issue or not, but hopefully it will help.

This is another bug fix release. For #1, current fix is not perfect. I'll leave it to next kernel release cycle to decide how PDS handling mainline existed scheduler policies.

Enjoy PDS 0.99a for v4.18 kernel, :)

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

Monday, September 17, 2018

PDS 0.98z release

PDS 0.98z is released with the following changes

1. Fix and improvement in the previous release.
2. Re-mapping SCHED_DEADLINE to SCHED_FIFO, which fix cpufreq_schedutil create kernel thread as SCHED_DEADLINE(thanks jwh7 for reporting)

This is a bug fix release. I'd like to let PDS stable for awhile in the incoming releases.

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

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

Tuesday, September 4, 2018

PDS 0.98y release

PDS 0.98y is released with the following changes

1. Enable SMT_NICE scheduling.  Below is the commit msg of this commit
"""
    Firstly, look at the kernel compilation test result without(-j4) and with SMT(-j8).
   
    Without SMT(-j4)        With SMT(-j8)
    4m30s                   3m40s
   
    In the scenario IDLE and NORMAL(BATCH,ISO,RT) policy tasks run together,
    IDLE tasks can be supressed to run on SMT sibling cpus and let the other
    policy tasks run without SMT. In this way, tasks with other policy will
    take high priority and completed sooner than run with IDLE tasks on SMT
    sibling cpus. This is called the SMT_NICE scheduling.
   
    Below is the test results of SMT_NICE disabled and SMT_NICE enabled.
   
                    SMT_NICE disabled       SMT_NICE enabled
    NORMAL(-j4)     6m56s                   5m3s
    IDLE(-j4)       7m10s                   8m30s

"""

Hopefully this commit can help with who has IDLE task running in the backgroup to improve the fontgroup task interactivity.

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

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