Monday, March 25, 2019

BMQ 0.91 release

BMQ 0.91 is released with the following changes

1. Fix BMQ compile fails for x86-UP, again. Thanks pf's code review.
2. treat NORMAL task as dl for lower ttwu latency.
3. Remove uprq. Unified code base for UP and SMP.
4. Rework task switch time thresholds.
5. Rework sg_balance_trigger(). Add one more trigger scenario.

This is improvement release of BMQ. #4 will provide more distributed boost range, users can notice this by watching the cpu monitoring tools.

Enjoy BMQ 0.91 for v5.0 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.

Please report bugs at https://gitlab.com/alfredchen/bmq/issues.

Monday, March 18, 2019

BMQ 0.90 release

BMQ 0.90 is released with the following changes

1. Consider boost_prio in task_prio(). This will allow cpu monitoring tool shows task boost/deboost priority changes.
2. Fix BMQ compile fails for x86-UP.
3. Some code optimization.

This is a bug fix and improvement release of BMQ.

Enjoy BMQ 0.90 for v5.0 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.

Please report bugs at https://gitlab.com/alfredchen/bmq/issues.

Monday, March 11, 2019

BMQ Scheduler call out for testing

BMQ(BitMap Queue) Scheduler is a band new CPU scheduler development from PDS and inspired by the scheduler in zircon project(google). It has been developed for months and it's time for open testing(current version is 0.89, on linux kernel 5.0).

For more design detail of BMQ, pls reference to Documentation/scheduler/sched-BMQ.txt in the repository. The documentation is not yet completed, because the scheduler is still under development and major features are not finalized.

Here is the list of major user visible difference of BMQ with PDS.

1. *NOT* support SCHED_ISO, pls use "nice --20" instead.
2. *NO* rr_interval, but a compile time kernel config CONFIG_SCHED_TIMESLICE(default 4ms) is available for similar usage. Yet, it is *strongly NOT recommended* to change it.
3. "yield_type" is still supported, but only value 0, 1(default) are available, 2 is still accept from interface, but it's same as value 1. (Will be changed when yield implementation is finalized)
4. BATCH and IDLE tasks are treated as the same policy. They compete CPU with NORMAL policy tasks, but they just don't boost. To control the priority of NORMAL/BATCH/IDLE tasks, simply use nice level.
5. BMQ will auto adjust(boost/deboost) task priority within +/- MAX_PRIORITY_ADJ(default 4) ranges. For example, from top/htop and other cpu monitors program, task of nice level 0 may be saw running as nice in cpu time accounting.

BMQ has been running smoothly on 3 machines(NUC Desktop, NAS file server and 7*24 raspberry pi) for ~1 month. Suspend/Resume on NUC Desktop and NAS file server are tested. BMQ shows promising in Desktop activity and kernel compilation sanity comparing to PDS. More benchmark is still on going.

BMQ is simple in design compare to PDS and result in ~20KB less in patch size and ~4KB in compressed kernel binary size.

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

Thanks for testing and your feedback will be welcome.

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.