I think I'm starting to catch the virtualization bug. I find myself exchanging emails with Rusty about how virtualized device layers should be designed and that's a sure sign I'm beyond cure.
One topic we discussed recently is how to move data over virtual device paths. Flipping pages in the hypervisor, doing push and pull, has SMP issues on "traditional" systems.
On something like Niagara and anything horizontally scaled like that, it's much less of an issue. All the cores running guests and service nodes sit in front of the same L2 cache.
It's funny, years ago all the talk was about machines becoming more NUMA. And now it's less clear whether that will be what wins out for huge systems or something that looks more like the deeply threaded chips which are becomming more and more prevalent.
Another angle is protection and resiliency. The biggest area of complexity is revoking pages. So for example if you're running a virtual device client and you share some pages to the service node, and it gets stuck, do you let it hold onto your memory forever? And if you revoke after a timeout, what happens to the service node if it gets unstuck and tries to complete it's I/O on that page?
One choice is to make it fault, that's what a lot of folks do. Another idea is to just map a garbage page there. I don't like this idea because this could scramble the superblock on your multi-terabyte filesystem.
Taking things a step further Rusty mentioned that if done properly we should be able to make virtual device layers work between two totally untrusted nodes, between two guests for example. This kind of idea definitely puts the page revoke issues into clearer perspective.
My interest in all of this piqued recently because I began working on support for virtual devices on Niagara LDOM systems. I'll talk more on that later once I have enough experience to say something intelligent. What is really great is that it may be possible to crib some of Rusty's virtualized device framework for use with my LDOM drivers.
Sorry Theo, you're just too abrasive and that's why you have a hard time getting cooperation.
You also misportray things, and this also works against you and your project.
It makes companies less willing to cooperate with you, get you specs in a timely manner, and give you the benefit of the doubt.
Because they've learned that what you're going to do is go on some blog or web site and tear them to shreds if they don't help you in precisely the way you want them to.
Knowing that kind of behavior is just par for the course with you, I wouldn't help you either.
I used to be real abrasive just like you, and Sun tended to not want to touch me with a ten foot pole. I've moved on and now I cooperate instead of instigate, and it works much better.
Let us all know when you're ready to grow up.