Live data from Hacker News

The Linux Scheduler: A Decade of Wasted Cores (2016)

blog.acolyer.org

1–10 of 36 posts

Re: The Linux Scheduler: A Decade of Wasted Cores (2016)

#7
> The evolution of scheduling in Linux By and large, by the year 2000, operating systems designers considered scheduling to be a solved problem…

If I recall correctly, 2000 is 2.3.x which had a braindead trivial scheduler. Basically it just looped through the process list and executed goodness() and found the 'best'. This was obscenely slow when there were a lot of dormant processes. The process table links all mapped to the same cache set which led to cache evictions during the scheduling loop, even TLB evictions. Et cetera. It was just bad, really really bad. Compared to its BSD, Solaris, ... contemporaries, it was garbage.

The O(1) scheduler starts in 2.4 at the tail end of 2000 followed by the Completely Fair Scheduler in 2007, etc. And the Linux scheduler continues to get better. But in 2000, it sucked. Reeked.

Re: The Linux Scheduler: A Decade of Wasted Cores (2016)

#8
post #6

DBAs knew about this for many years now. We would simply change the schedular on the DB servers.

I think you might be confusing CPU schedulers and IO schedulers. Linux never had switchable CPU schedulers.

Sure it does: http://man7.org/linux/man-pages/man2/sched_setscheduler.2.ht...

Re: The Linux Scheduler: A Decade of Wasted Cores (2016)

#9
post #8
post #6

Earlier quoted context omitted.

I think you might be confusing CPU schedulers and IO schedulers. Linux never had switchable CPU schedulers.

Sure it does: http://man7.org/linux/man-pages/man2/sched_setscheduler.2.ht...

If you read the page, it simply states that you can tweak the parameters of the existing scheduler, not replace it entirely.

Re: The Linux Scheduler: A Decade of Wasted Cores (2016)

#10
post #7

> The evolution of scheduling in Linux By and large, by the year 2000, operating systems designers considered scheduling to be a solved problem… If I recall correctly, 2000 is 2.3.x which had a braindead trivial scheduler. Basically it just looped through the process list and executed goodness() and found the 'best'. This was obscenely slow when there were a lot of dormant processes. The process table links all mappe…

From my experience, Linux CPU and I/O scheduling got good from 2.6.x (also around 2007) around when AIO became robust.
Post reply on HN