Why so many netstacks in Go? I would imagine even the tiny GC pauses Go has would be undesirable for a netstack.
Why so many netstacks in Go? I would imagine even the tiny GC pauses Go has would be undesirable for a netstack.
https://github.com/ycoroneos/G.E.R.T
https://archive.org/details/bitsavers_xeroxparcteCedarProgra...
http://www.hpl.hp.com/techreports/Compaq-DEC/SRC-RR-6.pdf
http://www.ocp.inf.ethz.ch/wiki/Documentation/Kernel
https://en.wikipedia.org/wiki/ARX_(operating_system)
https://en.wikipedia.org/wiki/SPIN_(operating_system)
https://www.amazon.com/Programming-Modula-3-Prentice-Innovat...
Mirage OS has the problem that it still relies on Xen, so sometimes listing it gives argumentation power to those disregarding the dependency as a convenience, rather than lack of support on OCaml for such kind of programming.
Go's weird threaded runtime is nothing new. That is how Active Oberon tasks (aka Active Objects) are implemented.
Not particularly important, I'm just curious as to how much the GC is really responsible for slowness as opposed to just correlating with languages that don't allow controlling heap vs stack allocations.
https://math.mit.edu/research/highschool/primes/materials/20...
- a box/whisker plot in the latency comparison graph — esp. if we're to talk about Go's GC...
- some discussion/arguments why the particular C implementation was chosen ("tapip") — I'm not an expert in this area so I don't have the slightest idea how notable it is;
- how did they detect/measure the claimed memory leaks in C? also, some statistics about the claimed crashes?
- isn't clear to me if they used some "well known" load testing tools, or some homemade framework? (e.g. "siege" is a tool I read about more than once?)
- more details on how exactly the "correctness was determined by testing against Linux kernel [implementation]".
That said, my initial loose conclusions from this seem to be:
- it appears it may be easier to write a correct implementation in Go (the implementation seems to be written just ad hoc by the article authors?) than in C;
- it appears it may be easier in Go than in C to write an implementation scaling well w.r.t. average latency & throughput, assuming the need is for a multi-threaded & user-space implementation.
We intend to merge them into one repository soon. I am just a little disorganized.