“Stop” might be the right word for concurrent collectors that aren’t on-the-fly, and even then it’s kind of sketchy.
Folks often end up with concurrent GCs where the time the mutator is “stopped” is less than the time that a C or Rust mutator would be “stopped” waiting for mmap to return the next available page for an allocation that is growing the heap.
For example in FUGC (which is on the fly), the closest thing to “stopping” is a thread scanning its own stack. But what if C++ exceptions have to scan the stack? We don’t say C++ “stops” for that, even though C++ exception unwinding is slower than FUGC stack scans
The discussion of “stopping” and “pausing” is detrimental to a good understanding of GC overheads and *why* GCs are often a bad idea. The reason why they’re a bad idea:
- GCs will use more memory than a program that uses malloc/free.
- GCs cause memory leaks. Relatedly, GCs make it impractical to estimate max memory footprint in systems where this needs to be known statically
- GCs increase page demand (the rate at which a program asks for a page that isn’t mapped).
- GCs cause a tremendous amount of memory traffic. (A concurrent on the fly GC will have an effect on latency that looks like a pause because during the time it’s running, it’s slamming the memory subsystem).
- GCs have positive feedback. They are likely to be triggered when the system is under stress. Hence, they make stress conditions worse.
- GCs tend to be inelastic. That is, programs that suddenly free up a bunch of memory will tend to sit on it because the GC hadn’t run yet.
- GCs play poorly with real time locking and scheduling (even real time GCs that have a story for this have a bad story in the sense that schedulability analysis gets way nastier than it would be otherwise)
These are all good reasons to avoid GCs. Folks should know these reasons. Folks working on GCs should try to address these reasons directly.
Talking about “stopping” and “pausing” just confuses the situation by making it harder to see the real problems.
@ShriramKMurthi@sayashk I believe agents would have let me finish at least two years earlier, likely more, with stronger experimental results. (I spent quite a lot of time designing, implementing, and debugging variations on a GC.)
@ShriramKMurthi Yes! Assembling those who haven’t developed blind spots yet is a fun twist.
I’d been envisaging a target audience of folks soon leaving the program, rather than those soon entering.
@andrasKovacs6@glaebhoerl Last I checked there was some level of support for relocatable SSA values via stack map intrinsics.
But I have come to believe that the pragmatic solution is to treat roots conservatively. LLVM optimizes sans impediments, and the bulk of the heap can still be relocated at will.
@mgrnbrg@AndersMiltner I'd trust H-Mart too! But... would you trust, like, Acme?
I tried to buy salmon for sushi from Whole Foods circa 2016, the guy in the fish section was adamant that their standard frozen stuff was not guaranteed safe to eat raw.
@mgrnbrg@AndersMiltner There is one small subtlety here: per the FDA, frozen salmon must be kept at conventional freezer temps for 7 days to kill parasites. But then, the FDA says to cook steak to 145...
Dunno what the practical risks are, but in theory not all frozen salmon is guaranteed safe.
On bias laundering:
After @fchollet used the phrase in response to the math-driven-racist-algorithms tweet, I decided to look for earlier uses — and explications — of the term in the Twitter discourse.
Here is a limited survey -- an attempt to thread through Twitter:
@sayrer One idle thought from grad school circa 2016 was: if the government said they wanted to spend Xe9 dollars to improve security, what’s the play? Pay hordes to rewrite it all in Rust? Do we need more foundational systemsy PL research? A big CHERI push?
Unclear what to tell ‘em!
@mgrnbrg@ShriramKMurthi @johnregehr To be clear, he does (often? always?) do multiple rehearsal runs, and doesn’t post the final versions if it ends up being boring. I just don’t think he’s optimizing for adherence to a Gantt chart, yeah? Seems like a silly metric to use as a basis for judgement.
@johnregehr @mgrnbrg@ShriramKMurthi I should probably also note that about half the episodes end with him saying something to the effect of “well, that was supposed to be fifteen minutes and I’ve now talked for almost an hour so I guess I should wrap up…” 😂
@johnregehr @mgrnbrg@ShriramKMurthi He has a weekly YouTube podcast (vcast?) channel: https://t.co/z8ACvEgU3E
It’s a mix of his perspective on the tech industry and stories and such—a recent episode had some of the backstory of his infamous Platforms rant.
So far just him but he plans to bring guests on soonish.
@zeuxcg I wonder if net effect of HW progress is to make compiler optimization investments look better, or worse. Worse if OoO obviates insn scheduling, etc. OTOH, the compiler also gets a “free” boost from use of newer insns like FMA.
@sayrer I was there for the summer in 2013, have only returned a few days since then. Venturing up to SF at night gave me a visceral appreciation for the (at the time?) tech co fixation on hoodies as swag. Layering helps a lot at the edges of the city!
@sayrer The first time I visited Palo Alto from the east coast, it absolutely blew my mind to see a convertible parked overnight, unprotected from the elements, with the top down.
Returning home made me realize how much I had missed seeing clouds.