3 ms·
Usually because the tooling for development on Linux is better and/or more familiar and they doing high frequency trading, not trying to fly a plane. Some HFT
by mnd999 4y ago
Usually because the tooling for development on Linux is better and/or more familiar and they doing high frequency trading, not trying to fly a plane.
Some HFT systems are written in Java - they just give it loads of RAM, disable the garbage collector and restart it once a day.
- alexeiz 4y agoIt's like a meme in the world of trading: your system needs to survive for 24 hours, whatever happens after that - doesn't matter. This can really impact the way you design the system. Ignoring memory leaks in C++, or outright disabling the GC in Java is one of the legit trade-offs you can make.
- Arrath 4y agoReminds me of the possibly apocryphal story of the missile whos guidance system had a memory leak. They profiled the memory leak and gave the chip enough RAM that it wouldn't fill up before the missile exploded. Problem solved!
- thfuran 4y agoThere are in service commercial planes that need to be routinely rebooted to prevent counters from overflowing, so I really wouldn't be surprised about similar sorts of issues in single use devices.
- snvzz 4y agoImagine the insanity of allocating memory mid-flight.
- saltcured 4y agoEarly in my career, before "turbo" or "boost" frequencies were a thing in commodity CPU products, I heard a similar tale about boosting the speed of the signal processors in a defensive radar system. The thought was that you would rather overheat and perform the calculation than protect the circuit and lose the ship. It's kind of a hail mary strategy. It definitely gave me a visceral feeling for how one should be ready to re-frame their systems analyses, even if apocryphal.
- mcspiff 4y agoThat’s common enough there’s a term for it: https://en.m.wikipedia.org/wiki/Battleshort https://en.m.wikipedia.org/wiki/Battleshort
- xmcqdpt2 4y agoAnother technique used with Java is setting the memory really high, run it for a while against mock data until it's warmed up and the compiler has JITted out all the allocations and then move to real data. If the mock data is good, you can do the whole thing in testing and fail tests if new code introduces GC events. However the Java code you have to write end up being very C like.
- dan-robertson 4y agoThe notion of the JIT warming up is nowhere near as rosy as most people believe. In particular, it is neither true that the JIT will lead you to your program performing at a steady level, nor that such a steady level will be faster than what you started with. C.f. https://tratt.net/laurie/blog/2018/why_arent_more_users_more_happy_with_our_vms_part_1.html https://tratt.net/laurie/blog/2018/why_arent_more_users_more... Though perhaps one could write a program in a way that gets reliably jitted?