24 comments

[ 3.6 ms ] story [ 52.3 ms ] thread
It seems like a strange match to use LwIP (which is optimzed for small size to run on embedded systems) with a kernel optimized for speed. I'm guessing that a different IP stack would perform better, given the different constraints on a x64 system. Maybe there aren't many to choose from though, that aren't tied to a specific kernel?
You can use the NetBSD stack[1] on baremetal/in userspace/wherever.

[1] http://rumpkernel.org/

Yeah, exactly. NetBSD's implementation makes sense to use, as it's a rather solid one and very portable. Plus it's probably very general-purpose, while lwIP had never been. Not to say that general-purposeness is the best thing, so that's why I pointed at mTCP, which is actually optimised for multicore systems... Anyhow, I don't think these guys even get their point across. Why have they chosen lwIP in this particular instance actually?
Yes, lwIP only has smallness as a benefit, at the expense of a lot. If we knew what the idea behind the thing was it might be clearer, performance does seem to be an aim.
To me this is not as appealing as OSv [1], is BareMetal OS even made for the cloud or more for embedded systems?

[1]: http://osv.io/

Not really for embedded systems. Because the majority of the embedded systems is either ARM or proprietary Freescale, Renesas, you-name-it architecture. But BareMetal OS seems to be exclusively for 64-bit x86. It is also proud to not be generic. So: no, not for embedded.
Is it just me, or isn't "BareMetal OS" an oxymoron? I guess it sounds cool, but taking an established term and use it as a name for the exactly opposite seems confusing to me. Please be responsible when choosing names for your projects :)
Exokernels don't, actually, abstract over hardware. They merely manage resource allocation.[1] So, "BareMetal", is not such an oxymoron, provided you're talking about the kernel itself.

[1]: http://c2.com/cgi/wiki?ExoKernel

Reminds me of KA9Q.. I wonder how many old systems from the '80s could find new life in all these quests for IOT on small MCU's?
"The kernel, as well as its various device drivers, are written entirely in Assembly for optimal speed, simplicity, and manageability of the code."

I love it !!!

Why have they not written the TCP/IP stack in Assembly then?
Because they didn't write it, someone else did
(comment deleted)
I wonder how it compares with seL4 (http://sel4.systems/) which is verified, open source, "bare metal" and designed for minimality, security and performance.
I love minimal things. But if this is supposed to be more than a because-we-can-thing, tell me if it is worth the trouble - how fast is it, how many requests can it stand? Numbers! Ten times a stock Linux setup? More? Less?
Speed does not matter much. Does it work in the wild? A TCP/IP stack developed from specifications would work very well if you dropped it on the Internet.
> are written entirely in Assembly for optimal speed, simplicity, and manageability of the code

So not optimized for safety.

I want a Coq kernel!

But seriously, I'm not sure writing the stuff in assembly can also optimise simplicity and manageability. Though we are talking about the obsolete X86 architecture here. More reasonable hardware[1] will likely be easier to compile to.

[1]: http://millcomputing.com/

This reminds me of Mirage OS[1], which is written in OCaml. Although they call it a Unikernel and it runs on top of Xen.

  [1]: http://www.openmirage.org/