Wednesday, December 30, 2020

Thursday, December 24, 2020

Project C v5.10-r1 release

Project C v5.10-r1 is released. 

This is a Xmas release of project c, last two issues raised in previous blog msg is not yet fixed. It is encouraged to create bug report/issue in gitlab, they will be better traced with the code.

2020 is a such different year which impact everyone in the world. Fortunately I can live more closer to normal live but still have face mask on for almost a year now, and I guess it will continue in 2021.

In this year, the development of bmq/pds schedulers still continue, and they make together into project c. To be honest, if I have more WFH time, I could put more time into this project, :) . In short, it is normal year for my scheduler development project. And, hopefully it give you a normal thing feeling in this abnormal year.

Merry Xmas and Happy new year.  Take care yourself and others.

Sunday, December 6, 2020

Project C v5.9-r3 release

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

Friday, November 20, 2020

Project C v5.9-r2 release

 

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

Monday, October 19, 2020

Project C v5.9-r1 release

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

Please be noticed that you need to pick up below fix if your set your NR_CPUS > 64 in your kernel config.

https://gitlab.com/alfredchen/linux-prjc/-/issues/17

Sunday, October 11, 2020

Project C v5.9-r0 release

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

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. :)

Monday, August 17, 2020

Project C v5.8-r1release

Project C v5.8-r1 is released with the following changes

1. Fix UP compilation issue.
2. Fix compilation issue when CONFIG_SCHED_THERMAL_PRESSURE enabled.

This is a fix release.

Full kernel tree repository can be found at https://gitlab.com/alfredchen/linux-prjc
And all-in-one patch can be found at gitlab.

Bug report at https://gitlab.com/alfredchen/projectc/issues

Monday, August 10, 2020

Project C v5.8-r0 release

Project C v5.8-r0 is released with the following changes

1. Sync-up 5.8 mainline scheduler code changes.
2. Adjust task boost priority to +/-7, and change SCHED_BITS to 128.

It's one week delay than normal new mainline kernel release. Because there are lots of scheduler related sync-up in 5.8 kernel release. #2 has been asked by users, so here comes the +/- 7 boost priority and 128 bits SCHED_BITS, IMO, this should be well balance setting. But this just provides a more widely overlay in running priorities, it doesn't really change that BMQ is pure priority based scheduler.

PS, PDS porting has been started.

Full kernel tree repository can be found at https://gitlab.com/alfredchen/linux-prjc
And all-in-one patch can be found at gitlab.

Bug report at https://gitlab.com/alfredchen/projectc/issues

Tuesday, July 28, 2020

Project C v5.7.5-r3 release

Project C v5.7.5-r3 is released with the following changes

1. Include fixes from next release.
2. Introduce rq wake_list.

In 5.8 kernel release, mainline will rework around rq wake_list, so it's better to implement it now and get some test. Its code path just enabled when cpu has multiple last level cache. As I don't have the real HW to test it, so it is tested using qemu only. PS, 5.8 seems to be released in a week or two, but it may be some delay to release the first project c patch on 5.8.

Full kernel tree repository can be found at https://gitlab.com/alfredchen/linux-prjc
And all-in-one patch can be found at gitlab.

Bug report at https://gitlab.com/alfredchen/projectc/issues

Tuesday, June 30, 2020

Project C v5.7.5-r2 release

Project C v5.7.5-r2 is released with the following changes

1. Adapt to Project C infrastructure
2. v5.7.5 Sync-up fix for https://gitlab.com/alfredchen/projectc/-/issues/17

Now, all things has moved to Project C, will continue to fix things left in the incoming release. Please be noticed that the bmq.timeslice kernel parameter has been changed to sched_timeslice.

Full kernel tree repository can be found at https://gitlab.com/alfredchen/linux-prjc
And all-in-one patch can be found at gitlab.

Bug report at https://gitlab.com/alfredchen/projectc/issues

Tuesday, June 16, 2020

Project C repositories

Please be noticed that original BMQ kernel repository and patch repository have been renamed to Project-C ones. Below are the new repositories links

Project C kernel repository https://gitlab.com/alfredchen/linux-prjc
Project C patch repository https://gitlab.com/alfredchen/projectc

If you have cloned the repositories, pls use "git remote set-url xxxxx" to update the links above.

Sunday, June 7, 2020

BMQ v5.7-r1 release

BMQ v5.7-r1 is released with the following changes

1. Fixes for two compilation issue in r0 release.

Nothing new, just a bug fix release before project-C.

Full kernel tree repository can be found at https://gitlab.com/alfredchen/linux-bmq
And all-in-one patch can be found at gitlab.

Bug report at https://gitlab.com/alfredchen/bmq/issues

Monday, June 1, 2020

BMQ v5.7-r0 release

BMQ v5.7-r0 is released with the following changes

1. Sync-up with mainline scheduler code changes.

This is the first release of BMQ in v5.7, nothing new but the sync-up. Meanwhile, Project C has been started. In this kernel release cycle, BMQ will be refactored into Project C infrastructure. A lot things need to be decided in the next 2~3 weeks. Stay tuned.

Full kernel tree repository can be found at https://gitlab.com/alfredchen/linux-bmq
And all-in-one patch can be found at gitlab.

Bug report at https://gitlab.com/alfredchen/bmq/issues

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".

Saturday, May 9, 2020

BMQ v5.6-r4 release

BMQ v5.6-r4 is released with the following changes

1. Minor reworks in two core functions.
2. Set proper time slice for idle tasks.

This should be the last BMQ release in this kernel cycle. Sync-up work from next week. Enjoy BMQ for your linux kernel.

Full kernel tree repository can be found at https://gitlab.com/alfredchen/linux-bmq
And all-in-one patch can be found at gitlab.

Bug report at https://gitlab.com/alfredchen/bmq/issues

Monday, April 20, 2020

BMQ v5.6-r3 release

BMQ v5.6-r3 is released with the following changes

1. Rework codes in __schedule() and sched_fork(). These are minor changes, but will somehow help to reduce overhead.

Enjoy BMQ for your linux kernel.

Full kernel tree repository can be found at https://gitlab.com/alfredchen/linux-bmq
And all-in-one patch can be found at gitlab.

Bug report at https://gitlab.com/alfredchen/bmq/issues

Sunday, April 12, 2020

BMQ v5.6-r2 release

BMQ v5.6-r2 is released with the following changes

1. Fix sync-up error when BMQ applied but not enabled.
2. Fix cpu topology setup for BMQ in ryzen system.
3. Fix incorrect rq->sched_goidle statistics.

This is a bug fix release, thanks for who reports these. Enjoy BMQ for your linux kernel.

Full kernel tree repository can be found at https://gitlab.com/alfredchen/linux-bmq
And all-in-one patch can be found at gitlab.

Bug report at https://gitlab.com/alfredchen/bmq/issues

Sunday, April 5, 2020

BMQ v5.6-r1 release

BMQ v5.6-r1 is released with the following changes

1. Fix compile warning on 32bit system. Thanks jwh7 for reporting.
2. Reverted code changes which are not essential part of scheduler code. Eg cpufreq and INITIAL_JIFFIES.
3. Extend BMQ for RT tasks. This is the improvement which make bit-map queues(0-99) for RT tasks(FIFO/RR policy) instead of single double-linked queue in previous releases. Thanks whoever comment this in v5.5-r2 release.

Your feedback will be welcome and helpful for BMQ scheduler development. Next release will be come 2 weeks later.

Enjoy BMQ for your linux kernel.

Full kernel tree repository can be found at https://gitlab.com/alfredchen/linux-bmq
And all-in-one patch can be found at gitlab.

Bug report at https://gitlab.com/alfredchen/bmq/issues

Monday, March 30, 2020

BMQ v5.6-r0 release

BMQ v5.6-r0 is released with the following changes

1. Sync up with mainline kernel 5.6 scheduler code changes.

This is the first BMQ release for linux kernel 5.6, nothing new but sync-up, fix and enhancement will be come in next release.

Enjoy BMQ for your linux kernel.

Full kernel tree repository can be found at https://gitlab.com/alfredchen/linux-bmq
And all-in-one patch can be found at gitlab.

Bug report at https://gitlab.com/alfredchen/bmq/issues

Tuesday, March 10, 2020

BMQ v5.5-r3 release

BMQ v5.5-r3 is released with the following changes

1. Implement sched_exec(). Take this change to balance cpu loading as task has very load memory&llc footprint at this point of time.
2. Optimize sg_balance_check(). Cut off one of the two sg balance checking branch based on analysis.
3. Introduce per cpu sched_cpu_llc_mask. And also deploy bottom up topology cpumask setup, used more code but hopefully it is the final version suitable for all major CPUS.

These are major code changes for the found-out during spring code clean-up. I believe that all for 2020's Spring code clean-up and it will be the final release for 5.5 kernel release.

After more than one year of deployment(officially release today one year ago), the main features of BMQ are stable and in a good shape(IMO). So from next kernel release, I'd like to start picking up some previous low priority work items.

Enjoy BMQ for your linux kernel.

Full kernel tree repository can be found at https://gitlab.com/alfredchen/linux-bmq
And all-in-one patch can be found at gitlab.

Bug report at https://gitlab.com/alfredchen/bmq/issues

Sunday, March 1, 2020

BMQ v5.5-r2 release

BMQ v5.5-r2 is released with the following changes

1. Spring code clean-up to better aligned with mainline scheduler code.

These are minor clean-up code changes, other lager code changes and feature add-on found during code clean-up is planned in next release.

Enjoy BMQ for your linux kernel.

Full kernel tree repository can be found at https://gitlab.com/alfredchen/linux-bmq
And all-in-one patch can be found at gitlab.

Bug report at https://gitlab.com/alfredchen/bmq/issues

Tuesday, February 4, 2020

BMQ v5.5-r1 release

BMQ v5.5-r1 is released with the following changes

1. Rework/Clean up cpu affinity cpumask setup code.
2. Introduce boot-time kernel parameter "bmq.timeslice".

As users request, introduced boot-time kernel parameter "bmq.timeslice" in us. Remove kernel config CONFIG_SCHED_TIMESLICE. Documented in Documentation/admin-guide/kernel-parameters.txt, copied here for reference

bmq.timeslice=  [KNL] Time slice in us for BMQ scheduler.
                Format: <int> (must be >= 1000)
                Default: 4000
                See Documentation/scheduler/sched-BMQ.txt

For example, add kernel parameter "bmq.timeslice=2000" to try out 2000us(2ms) time slice for BMQ.

Enjoy BMQ for your linux kernel.

Full kernel tree repository can be found at https://gitlab.com/alfredchen/linux-bmq
And all-in-one patch can be found at gitlab.

Bug report at https://gitlab.com/alfredchen/bmq/issues

Sunday, January 26, 2020

BMQ v5.5-r0 release

BMQ v5.5-r0 is released with the following changes

1. Sync-up with mainline 5.5 scheduler changes.

Nothing new but sync-up for 5.5 kernel release, new code changes will be coming for next release. Meanwhile it seems be a very unexpected CNY holiday for this beginning of the new decade.

#PrayForChina
#RIP_Kobe

Enjoy BMQ for your linux kernel.

Full kernel tree repository can be found at https://gitlab.com/alfredchen/linux-bmq
And all-in-one patch can be found at gitlab.

Bug report at https://gitlab.com/alfredchen/bmq/issues

Friday, January 17, 2020

BMQ v5.4-r2 release

BMQ v5.4-r2 is released with the following changes

1. Change SCHED_BMQ Kconfig location. Now BMQ related Kconfig can be found under "Scheduler features"
2. Update recommend SCHED_TIMESLICE. 2ms is recommend for PREEMPT(Preemptible Kernel (Low-Latency Desktop)) system, 4ms for others.
3. Update yield_type documentation.

After weeks of experience, 2ms scheduler time slice is recommend for BMQ. The overhead introduced by double the time slice switches is so far acceptable.

Enjoy BMQ for your linux kernel, :)

Full kernel tree repository can be found at https://gitlab.com/alfredchen/linux-bmq
And all-in-one patch can be found at gitlab.

Bug report at https://gitlab.com/alfredchen/bmq/issues