Oracle has released a new ad stating that they will spend more money
_developing_ SPARC and Solaris than Sun does. I think the future of
the UltraSPARC, like our new server Ash, is safe regardless of some
media (other than slashdot?) claims that Oracle is not interested in
selling in-house hardware.
In fact, it seems that Oracle wants to eat the big piece of chicken
and sell optimized DB appliances without sharing the revenue with a
hardware partner. That means keeping UltraSPARC chips cutting edge and
funding development to compete with IBM and Intel.
- http://developers.slashdot.org/story/09/09/11/1139212/Apple-Open-Sources-Grand-Central-Dispatch
libdispatch and the C Blocks runtime are a task-based approach to
parallelism, much like what I envisioned for XOmB. Part of being
multicore is finding better ways to use those cores. Apple compares
Blocks to closures. It even uses a NetNice-like hierarchical,
queue-based scheduler for the tasks, which endeavors to keep all CPUs
full, but avoid occupying extra cores when work is scarce, sharing
with other processes and saving power compared to some threading
approaches.
porting libdispatch does not require OS modifications, but Apple did
release code for xnu kernel optimizations. libdispatch does require a
compiler, but Apple uses LLVM too, so we get this for free in C.
Since D can bridge most C trivially, we should be able to get this
working in xomb userspace, perhaps even without libc dependency. A
Block is like a D delegate, it would be really interesting integrate
them with D constructs like foreach loops, vector math and Fibers. It
would also be interesting to see C Blocks benchmarks, in the current
OSes, between DeadReckoning and Ash :)
- http://developers.slashdot.org/story/09/09/11/0256233/Facebook-Releases-Open-Source-Web-Server
Facebook opensourced a Python "scalable, non-blocking webserver". A
non-blocking system-call interface, like the one we plan to maintain
in XOmB, would let them avoid the use of epoll. Instead of polling,
the userspace will receive upcalls from the kernel in the event of
network and disk events, allowing the process/environment to surrender
the CPU during idle periods, to either host other processes (key for
responsiveness) or be powered down.
cheers,
james