Friday, September 8, 2017

VRQ 0.97b release

VRQ 0.97b is released with the following changes

1. Select a random rq when no preemptible rq available. This will help with removing the bottleneck when cpu number increased.
2. Add rr_interval kernel parameter. Now an "rr_interval=" kernel parameter is added, but it's not suggested to change the default rr_interval setting(6ms).
3. Introduce sched_prio_to_deadline[NICE_WIDTH] to simplify deadline calculation.
4. Extend NORMAL policy level to 7 levels, this change help with reducing rq look up cost when cpu number increased. And it also brings deadline fairness for different nice level NORMAL policy tasks. eg, when two nice 19 background tasks runs with 2 nice 0 front-ground tasks in a two cpus system, those two background tasks may both be on same cpu while normal tasks occupied another. In previous release, as a workaround for this use case, the background tasks need to be IDLE policy to trigger the policy fairness balance functionality. With this new changes, there is 7 NORMAL policy levels according to task's deadline, so the nice 19 background tasks(which likely have large virtual deadline) also can be triggered for the policy fairness balance functionality.

The main features for 0.97? release has been all set now for 4.13 kernel, these feature code has been running on my machines for 2week+, so they are consider stable. In next release, the major change will be renaming and documentation.

Enjoy VRQ 0.97a for v4.13 kernel, :)

code are available at
https://bitbucket.org/alfredchen/linux-gc/commits/branch/linux-4.13.y-vrq
and also
https://github.com/cchalpha/linux-gc/commits/linux-4.13.y-vrq

All-in-one patch is available too.

Monday, September 4, 2017

VRQ 0.97a released

VRQ 0.97a is released with the following changes

1. Sync-up 4.13 mainline scheduler code changes.
2. Fix cpu preempt race in task_preemptiable_rq(), reported by Eduardo in D3 wine playing.

This is a sync-up and minor bug fix release for 4.13 kernel. If all goes well, new feature will be in next week.

Enjoy VRQ 0.97a for v4.13 kernel, :)

code are available at
https://bitbucket.org/alfredchen/linux-gc/commits/branch/linux-4.13.y-vrq
and also
https://github.com/cchalpha/linux-gc/commits/linux-4.13.y-vrq

All-in-one patch is available too.

Wednesday, August 16, 2017

VRQ 0.97 released

VRQ 0.97 is released with the following changes

1. Fix UP compilation issue, reported by jwh7.
2. rtmutex deadline adaption for VRQ.
3. Overhead reduction in take_other_rq_task() and SMT code path in task_preemptible_rq().
4. Preparation for Normal policy level expansion feature.

Version bump up to 0.97 because smt sensitive scheduling, the main feature in 0.96 has finally been accomplished. In 0.97, normal policy level expansion and task deadline adjustment are the main features. In this release, just the preparation code of normal policy level expansion is included, the prototype code still under testing.

And, there will be no more release before 4.13 kernel come out.

Enjoy VRQ 0.97 for v4.12 kernel, :)

code are available at
https://bitbucket.org/alfredchen/linux-gc/commits/branch/linux-4.12.y-vrq
and also
https://github.com/cchalpha/linux-gc/commits/linux-4.12.y-vrq

All-in-one patch is available too.

Monday, August 14, 2017

Get ready in "Multi-Core War"

The "Multi-Core War", which was expected to happen soon when first dual core cpu came to pc world decade ago, does not happen due to a lot of reason, unlike the cpu in mobile world, cpu number grows up rapidly in 2~3 years, your mobile phone may has more cpus than what your working pc has. But thanks to AMD, Intel is finally moving his step to the war zone. Likely, customer in mobile platform or desktop platform would get 4cores/8threads and even more core/thread cpu in reasonable price at the end of this year or next year.

Meanwhile, the task scheduler in OS, should be prepared to take advantage of new hardware in this "Multi-Core War". VRQ, in particular, was applied with a lot of cpumask based algorithm, which is scalable with the growing cpus, but there are still some bottlenecks which has to loop over each cpu. In the incoming release of VRQ, I will try to address these bottlenecks and hopefully play a better position in the "War".

PS, as you may noticed that the name of VRQ(/BFS) is now not longer suit for the design of this scheduler code, and it should deserve a proper name, but it is the last thing in my list(feature >> naming), :)

Wednesday, August 2, 2017

VRQ 0.96f release

VRQ 0.96f is released with the following changes

1. Improvement for smt sensitive scheduling.
2. No dequeue/enqueue for task on cpu.
3. Code clean up.


#2 is the major change in this release, unlike the previous version, now when task is going to be run on a cpu, there is no need to dequeue the task from the run queue skip list, enqueue/dequeue will only happen when task become runnable/unrunnable. With this change, the overhead of enqueue/dequeue is significantly reduced, and the logic of scheduler is more simple.

And please also be noticed, to adapt to this new enqueu/dequeue strategy, some important code path has been rewriten. You may experience unstable issues with this release. (So far, none for me at least)

Enjoy VRQ 0.96f for v4.12 kernel, :)

code are available at
https://bitbucket.org/alfredchen/linux-gc/commits/branch/linux-4.12.y-vrq
and also
https://github.com/cchalpha/linux-gc/commits/linux-4.12.y-vrq

All-in-one patch is available too.

Wednesday, July 26, 2017

VRQ 0.96e release

VRQ 0.96e is released with the following changes

1. Remove unused run_list in task_struct.
2. Fix x32 compilation error. Reported and fixed by pf.
3. Sync-up try_to_wake_up_local().
4. cpu affinity fix. Reported by pf.

This is bug fix release.

Enjoy VRQ 0.96e for v4.12 kernel, :)

code are available at
https://bitbucket.org/alfredchen/linux-gc/commits/branch/linux-4.12.y-vrq
and also
https://github.com/cchalpha/linux-gc/commits/linux-4.12.y-vrq

All-in-one patch is available too.

BR Alfred 

Sunday, July 9, 2017

VRQ 0.96d release

VRQ 0.96d is released with the following changes

1. smt sensitive scheduling improvement, which reduce some migration overhead.
2. Fix livepatch compilation issue.

This is bug fix and smt sensitive scheduling improvement release.

Enjoy VRQ 0.96d for v4.12 kernel, :)

code are available at
https://bitbucket.org/alfredchen/linux-gc/commits/branch/linux-4.12.y-vrq
and also
https://github.com/cchalpha/linux-gc/commits/linux-4.12.y-vrq

All-in-one patch is available too.

BR Alfred