Earlier quoted context omitted.
Don't SSDs have a finite TBW? 50GB of writes everyday (possible on large projects) will consume that in a couple of months.
Something like the Samsung EVO 960 (typical mid-range SSD) will take 400TB of writes in it's lifetime. So that's 8,000 days of 50GB writes.
Threadripper 3990X: The Quest To Compile 1B Lines Of C++ On 64 Cores
81–90 of 187 posts
Re: Threadripper 3990X: The Quest To Compile 1B Lines Of C++ On 64 Cores
#82Re: Threadripper 3990X: The Quest To Compile 1B Lines Of C++ On 64 Cores
#83Fun experiment. The more pedestrian 5950X or the now bargain 3950X are great for anyone doing a lot of compiling. With the right motherboard they even have ECC RAM support. Game changer for workstations in the $1000–$2000 range. The more expensive Threadripper parts really shine when memory bandwidth becomes a bottleneck. In my experience, compiling code hasn’t been very memory bandwidth limited. However, some of my…
I suspect the biggest (build time) benefit to most c++ workflows and toolchains was the move to ubiquitous SSD. Prior to that in my experience excepting expensive RAID array dedicated build machines, it was really easy to build a system that would always be IO bound on builds. There of course were tricks to improve things but you still tended to hit that wall unless your CPUs were really under spec. edit: to be clear…
Re: Threadripper 3990X: The Quest To Compile 1B Lines Of C++ On 64 Cores
#84Re: Threadripper 3990X: The Quest To Compile 1B Lines Of C++ On 64 Cores
#85[Not "real" C++ code, benchmark is for compiling 14492754 copies of a fairly simple C function]
Re: Threadripper 3990X: The Quest To Compile 1B Lines Of C++ On 64 Cores
#86It is a good thing that Embarcadero is keeping alive this technology to create desktop apps from the early 2000s that was abandoned by MS and other large companies in favor of complex Web-based apps.
Re: Threadripper 3990X: The Quest To Compile 1B Lines Of C++ On 64 Cores
#87Earlier quoted context omitted.
They do but it's really large. The Tech Report did an endurance test on SSDs 5-6 years ago [0]. The tests took 18 months before all 6 SSDs were dead. Generally you're looking at hundreds of terabytes, if not more than a petabyte in total write capacity before the drive is unusable. This is for older drives (~6 years old as I said), and I don't know enough about storage technology and where it's come since then to say…
> things probably have not gotten worse. I am afraid they did, consumer SSDs moved from MLC (2 bits per cell) to TLC (3) or QLC (4). Durability changed from multiple petabytes to low hundreds of terabytes. Still a lot, but I suspect the test would be a lot shorter now.
Re: Threadripper 3990X: The Quest To Compile 1B Lines Of C++ On 64 Cores
#88Earlier quoted context omitted.
i (and some teamates) actually put HDDs on some workstations as SSD just die after 2-3 years of active build on them and with modern HDDs you have practically unlimited storage while you can have only limited number of 400G builds on SSD (the org has psychological barriers to having more than 1-2Tb SSD in a machine) and the SSD start to have perf issues when at 70-80% capacity . With HDD the build time didn't change…
What are the signs of an SSD that's about to die?
Re: Threadripper 3990X: The Quest To Compile 1B Lines Of C++ On 64 Cores
#89Earlier quoted context omitted.
I didn’t go into great detail of the reasons, but the jobserver doesn’t address the problem except for the most trivial cases—the core problem is that you can’t cross to a recursive make invocation via multiple edges. This is fairly common in larger projects, so you end up having to do some hackery to manually sequence make invocations if you want to use recursive make (which is pretty awful). Honestly, for large pro…
> the core problem is that you can’t cross to a recursive make invocation via multiple edges. I’ve never had that issue, and used to heavily use recursive make. I carefully benchmarked those make files, and am sure this wasn’t an issue. I suggest reading the paper “Recursive Make Considered Harmful” before attempting to use make for a large project. It describes a lot of anti-patterns, and better alternatives. I’ve f…
So, you’ve never had two different targets that depend on something in a subdirectory? If you’ve just solved this by building subdirectories in a specific order, or building entire subdirectories rather than the specific targets you need, what you’re really doing is making an incorrect dependency graph in order to work around make’s limitations. These kind of decisions make sense for full builds, but interfere with incremental builds.
Bazel & family (Buck, Pants, Please, etc.) are among the few build systems that solve this problem well. It’s not an accident that they all use package:target syntax for specifying targets, rather than just using a path, because this allows the build system to determine exactly which file contains the relevant build rule without having to probe the filesystem.
I would love to simply recommend Bazel but the fact is there is a bit of a barrier to entry depending on how standard / nonstandard your build rules are and depending on how you think that third-party dependencies should be pulled in. Depending on your project, you could convert to Bazel in an hour just by looking at a couple examples, or you could have to dive deep into Bazel to figure out how to do something (custom toolchains, custom rules, etc.)
As you observed, the alternatives to make are often inferior, and it’s often because they’re solving the wrong problems. For example, sticking a more complex & sophisticated scripting system in front of make.
Re: Threadripper 3990X: The Quest To Compile 1B Lines Of C++ On 64 Cores
#90Hahaha, fuck me, CPUs are fast . That's wicked. 15 mins. A billion lines of C. Insane. Wonder if there's some IO speed to be gained from ramdisking the inputs.
17,300 lines/sec per core. That's embarrassingly slow IMHO.