Re:Systems Programming in C# by Joe Duffy
by jamra on Saturday June 18, 2016 @08:07PM
(#11931203)
It has pretty low pause times by the GC.
[ Parent
| on HN ]
Yep, around 2 milliseconds for most programs
Re:Systems Programming in C# by Joe Duffy
by im_down_w_otp on Saturday June 18, 2016 @11:01PM
(#11931628)
Two-milliseconds is an eternity in kernel time. That's wired round-trip time between two GigE endpoints on Linux's mediocre TCP/IP stack.
Now imagine you stacked 2ms GC pauses into that level of the system. That would be a barely serviceable kernel. Forget any real-time facilities.
OSes written in GC enabled systems programming languages always allowed for controlling the GC behaviour.
So you can have a GC free TCP/IP stack, while enjoying the GC comfort in areas where the 2ms pause aren't an issue.
Or maybe even not completely GC-free [1].
What might be especially helpful is a good JIT that could reoptimize the code on-the-fly, when data patterns changes.
Maybe performance level of 'data-guided optimization' provided by (controllable) GC and state-of-the-art JIT could beat down traditional approach someday.
http://lukego.github.io/blog/2013/01/03/snabb-switchs-luajit...
> Now imagine you stacked 2ms GC pauses into that level of the system. That would be a barely serviceable kernel. Forget any real-time facilities.
Real-time just means bounded latency. If 2ms was a hard upper bound, that's hard realtime. If it's ~90% bounded by 2ms with a small variance, that's soft realtime.