אירועים
אירועים והרצאות בפקולטה למדעי המחשב ע"ש הנרי ומרילין טאוב
רז בן-יהודה (מסטרנט באונ' הפתוחה)
יום שני, 04.01.2010, 18:30
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 processor.
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.