Thursday, April 25, 2013

Reading Notes: multikernel

Some of my reading notes for the paper "The Multikernel: a new OS architecture for scalable multicore systems".

Things I liked and that were interesting

I found it interesting that the authors decided to incoorperate ideas from distributed systems and networking into their OS. By regarding each CPU core as an independent unit and only using message passing, they said that they could exploit insights and algorithms from distributed systems.

I also found it interesting that they chose to make OS structure hardware neutral. At first this statement didn't make much sense to me, because one would think the OS is the most hardware dependant layer. Then they explained that by this they meant the design decision to separate OS structure as much as possible from the hardware specific parts (messaging transport system and device drivers). I think if one would really succed in making it as hardware neutral as possible, this would significantly facilitate the OS development process.

Limitations and Problems I had

I had to review some OS concepts to understand the paper. Actually, I'm still not exactly sure what they meant by OS state. In one definition (The Management of operating system state data, ACM SIGOPS '80), information about OS resources (CPU, storage, I/O devices) and transactions between communications together make up the state of an OS. Do the authors mean this when they talk about OS state? I think it would have helped if they gave a short explanation of what all counted for OS state in their multikernel, since they go very detailed into the state replication mechanism afterwards.

Potential Next Steps

The authors mentioned that they were not satisfied with their memory management implementation via capabilities. In retrospection they said it was unneccessarily complex and did not yield the expected efficiency. One could replace this with a cleaner solution.
Furthermore, they also said that they only had a temporary network stack which they mostly saw as a placeholder. Future research could investigate in a port of the network stack for the multikernel.

I think it would also be interesting to compare the performance of barrelfish to that of a microkernel OS. Architecturally speaken, they are much more similar and thus a comparison could yield new insights into the advantages of a multikernel.

This research and the future

I'm not sure. They definitely tackle an important problem, as multicore system are becoming more and more common. On one side there are many good ideas I haven't come across before, like making each CPU core completely independent, relying heavily on message passing and moving from shared state to replicated state. On the other side I'm not sure whether the messaging system is good enough for heavy system usage. In their summary they mentioned that they did not evaluate on complex application workloads, and I would imagine that complex applications have many processes with high interdependence and communication. In this case the messaging system might become a bottle neck because the latency of the link between cores is too high. Maybe in this case one would need to transfer a process to a different core and the costs and benefits of this also need to be considered. In sum, I'm not convinced whether the messaging system on which their design is based on can handle complex application workloads successfully.


Related Articles:
Reading Notes: A Protocol for Packet Network Intercommunication
Reading Notes: Data Center TCP (DCTCP)
Unix in a Nutshell

No comments:

Post a Comment