Introduction to the new Haiku scheduler, and other tidbits

Hi, folks!

For those who don’t know me (or my GSoC assignment) already, I’m the one assigned to ticket #1069, namely:

Create an O(1) thread scheduler with CPU affinity and soft real-time support which targets desktop responsiveness.

I’d like to dedicate my next few blog entries to introducing myself and discussing how I got here, why I wanted to tackle this specific task, what background I have regarding the subject of thread scheduling, how I failed miserably to realise that my first attempt at designing an algorithm suitable for Haiku’s needs had fundamental flaws, how far I am at my second attempt, and the obligatory comparison to Ingo Molnár’s Completely Fair Scheduler that has been making the news in the Linux world.

Later on, I guess it would be nice to use this space for progress reports and further discussion with the community as questions and suggestions arise.

Disclaimer I’m not a native English speaker. I’m completely hopeless regarding correct usage of prepositions of location. And I’m no grammar expert in any capacity. I kindly request you, the reader, to gently point me to any linguistic mistake I happen to make, with suggested correction, if possible. Sincerest regards, André

Without further ado, here we go! I hope you enjoy the ride :)

Introduction (Or: how I got here)

The story goes roughly like this: I had my first contact with BeOS when I was still attending high school. Unfortunately I didn’t experience what I perceived as being the Golden Years, namely the R4 era. My first real contact with BeOS was with R5 PE; then I bought the Gobe Productive + R5 Pro bundle, and BeOS was my main OS for quite some time on my Pentium 133. Ah, nostalgia :)

I’m a Computer Science student now. Circa 3 years ago I designed a thread scheduler as an assignment for the Operating Systems class. It fared pretty well in artificial benchmarks with purely CPU-bound simulated threads. I was excited. Seemed like I did something really cool :D

Right after that semester finished, I contacted Axel and told him about the scheduler and asked him if there was interest in using it on Haiku. He was pretty open-minded, and I promised him I’d translate the documentation written for that assignment into English. I never did.

Why? Well… I burned out. Back in the day, I used to be quite active in BeShare and IRC, even compiled stuff on my trusty old Pentium 133 (if Fyysik is reading this, he’ll remember that Pentium immediately ;))… But by then college was eating most of my energy. And I was just getting out of a troubled relationship. And it all coincided with a hard drive failure. I lost almost no valuable data, but the excitement was just… gone.

Anyway, the scheduler plans were on the back burner for roughly the mentioned 3 years. And you might remember that before the Haiku project got accepted in the GSoC, I mailed the list asking about ticket #1069, hoping that I could still participate. Then I spent some days digging up the sources for the scheduler and re-doing some benchmarks on my current computer. Things still looked nice :)

Don’t miss the next chapter in the Scheduler saga! Tomorrow (hopefully), same bat time… Same bat channel (powered by RSS feeds!)… Right here. Stay tuned.