News for hackers. Stuff that matters.
Re:Changing the Rules of Rust by scottlamb on Monday September 18, 2023 @11:19AM (#37557392)
The C++ server I mentioned had an "experiment config" that would be used to roll out changes (user-visible features, backend code path changes for data store migrations, etc.) incrementally, and it picked up config changes without a restart. Each request needed to grab the current experiment config once and hold onto it for a consistent view. This server reserved ~16 cores and had pretty high request rates, so Arc<Config> would indeed hit the sort of problem yencabulator is describing. And I imagine it'd get pretty bad if each server crossed NUMA node boundaries (although I recommend avoiding that if you can regardless).

In this case, the Linux rseq-based epoch GC worked perfectly. It is technically a form of garbage collection, but it's not all-or-nothing like Java-style or Bohm GC; it's just a library you use for a few highly used, infrequently updated data structures.

Re:Changing the Rules of Rust by insanitybit on Monday September 18, 2023 @03:14PM (#37560639)
I'm not really understanding why you need to clone the Arc so many times. At most it seems that you'd do so once per request.
Re:Changing the Rules of Rust by scottlamb on Monday September 18, 2023 @04:30PM (#37561570)
"So many times" = one increment + one decrement per request = 100k/sec maybe, bouncing cache lines across 16 cores. This is suboptimal but not world-ending.
Re:Changing the Rules of Rust by insanitybit on Monday September 18, 2023 @06:35PM (#37563074)
Definitely suboptimal, no question.