[HAIFUX LECTURE] OFFSCHED - Offline Scheduler by Raz Ben-Yehuda

Eli Billauer eli at billauer.co.il
Sun Jan 3 12:47:59 IST 2010

On Monday, January 4th (TOMORROW) at 18:30, Haifux will gather to open 
the year 2010 and hear Raz Ben-Yehuda (Open University Masters Student) 
talk about the

          Offline Scheduler


OFFSCHED is a platform aimed to assign an assignment to an offloaded 
processor. An offloaded processor is a processor that is hot un-plugged 
from the operating system. In today's computer world, we find that most 
processors have several embedded cores and hyper-threading. Most 
programmers do not really use these powerful features and let the 
operating system do the work. At most, a programmer will bound an 
application to a certain processor or assign an interrupt to a different 

At the end, we get a system busy in maintaining tasks across processors, 
balancing interrupts, flushing TLBs and DTLBs using atomic operations 
even when not needed and worst of all, spin locks across processors in 
vein; and the more processors the merrier. I argue that in some cases, 
part of this behavior is due to fact the multiple core operating system 
is not service oriented but a system oriented. There is no easy way to 
assign a processor to do a distinct service, undisturbed, accurate, and 
fast as long as the processor is an active part of an operating system 
and still be a part of most of the operating system address space.

The purpose of the OFFSCHED is to create a platform for services. For 
example, assume a system is being attacked; the Linux operating system 
will generate endless number of interrupts and/or softirqs to analyze 
the traffic and throw out bad packets. This is on the expense of good 
packets. Have you ever tried to ssh an attacked machine? Who protects 
the operating system? What if we can simply do the packet analysis 
outside the operating system without being interrupted? Why not assign a 
core to do only fire-walling? Or just routing? Design a new type of Real 
Time system? Maybe assign it as an ultra accurate timer? Create a
delaying service that does not just spin? Offload a TCP stack? Perhaps a 
new type of a locking scheme? New type bottom-halves? Debug a running 
kernel through an offloaded processor? Maybe assign a GPU to do other 
things than just graphics? Amdahl Law teaches us that linear speed-up is 
not very feasible, so why not spare a processor to do certain tasks 
better? Technologically speaking, I am referring to the Linux kernel 
ability to virtually hot unplug a (SMT) processor; but
instead of letting it wonder in endless "halts", assign it a service.

Server virtualization has been widely adopted by the market, and the 
number of servers running virtual machines is increasing daily. As 
machine virtualization gains popularity, the hypervisor itself, along 
with its management stack, becomes a basic and required part of the 
system. The next natural evolution phase in the virtualization 
abstraction chain is to view the hypervisor as part of the user 
workload, and to be able to run multiple hypervisors inside virtual 
machines, each with its own set of nested guest virtual machines.


We meet in Taub (CS Faculty) building, room 6. For instructions see:

Attendance is free, and you are all invited!


Future  Haifux events include:

18/01/10 The FOSS Community as a Social Phenomenon: Yaron Dishon
15/02/10 VoIP in Linux: Rami Rosen


We are always interested in hearing your talks and ideas. If you wish to
give a talk, hold a discussion, or just plan some event haifux might be
interested in, please contact us at webmaster at haifux.org

Web: http://www.billauer.co.il

More information about the Haifux-announce mailing list