News for hackers. Stuff that matters.
Re:Uber Engineering Tricks of the Trade: Tuning JVM Memory f... by vajrabum on Tuesday May 18, 2021 @03:22PM (#27199701)
I don't understand what you're trying to say here. Is the methodology they're using outdated? Or perhaps their approach seems naive? Or are you saying something else?
Re:Uber Engineering Tricks of the Trade: Tuning JVM Memory f... by _old_dude_ on Tuesday May 18, 2021 @04:16PM (#27200434)
The whole section on how GCs work is far from accurate. It only describes how one GC, CMS, works or worked because it had been removed. The permanent generation does not exist anymore since Java 8, etc

And i'm far from being an expert in GCs, but the basics are just wrong.

Re:Uber Engineering Tricks of the Trade: Tuning JVM Memory f... by viscanti on Tuesday May 18, 2021 @04:20PM (#27200481)
Maybe they have to use some kind of legacy JVM library that doesn't work on Java 8? It looks like they're a GoLang shop, so I'm not sure why we'd assume their Java stuff is representative of anything other than what they have to do because some useful JVM library for mapping or something needs to be supported.
Re:Uber Engineering Tricks of the Trade: Tuning JVM Memory f... by _old_dude_ on Tuesday May 18, 2021 @05:01PM (#27201060)
The problem is that Java 7 is 10 years old, it means that you are missing 10 years of optimization. For GCs that's a lot.

GCs before ~2010 have been optimized for throughput more than for latency. Since then, you can choose.

Since 10 years, G1 let you set your maximum pause time and you get a huge warning if it miss that target, ZGC or Shenandoah are from the beginning latency first, throughput second.

Re:Uber Engineering Tricks of the Trade: Tuning JVM Memory f... by lamontcg on Tuesday May 18, 2021 @08:49PM (#27203288)
I last tuned Java 6 in about ~2009 and I was a bit shocked at how familiar most of this article sounded...

Like your handle, too.

Re:Uber Engineering Tricks of the Trade: Tuning JVM Memory f... by acamillo on Wednesday May 19, 2021 @10:01AM (#27208735)
Any advise on good / recent sources of information about the various GC algorithm in the recent JVM ?
Re:Uber Engineering Tricks of the Trade: Tuning JVM Memory f... by vsto on Tuesday May 18, 2021 @05:36PM (#27201529)
It is Hadoop that requires (mostly) Java 8 and Java 11 (runtime only). https://cwiki.apache.org/confluence/display/HADOOP/Hadoop+Ja...
Re:Uber Engineering Tricks of the Trade: Tuning JVM Memory f... by tomnipotent on Wednesday May 19, 2021 @04:37AM (#27206003)
That's for Hadoop 3 - Uber is on CDH 5 last I read, which has min support for Java 7 and it sounds like that's what they're using if the CMS GC was being used (unless it just happened to work better for them in Java 8+).
Re:Uber Engineering Tricks of the Trade: Tuning JVM Memory f... by erik_seaberg on Tuesday May 18, 2021 @04:29PM (#27200603)
Yikes. Fortunately Java is a supported language at Uber, though some teams are more serious about it than others. Scala is also accepted because of Spark.
Re:Uber Engineering Tricks of the Trade: Tuning JVM Memory f... by viscanti on Tuesday May 18, 2021 @04:51PM (#27200902)
I guess I misunderstood things then. It's difficult to reconcile why they'd be using a legacy version of Java that required these specific GC tunings if they weren't forced to use it because of libraries that couldn't be replicated or replaced in GoLang. Sounds like it's a much bigger mess there than what I had assumed (I guess I was giving them too much of the benefit of the doubt).
Re:Uber Engineering Tricks of the Trade: Tuning JVM Memory f... by throwdbaaway on Tuesday May 18, 2021 @11:27PM (#27204198)
Well, at least they take the cake when it comes to running CMS with the largest heap size?

It is also quite ironic that they paid for Zing C4, and then came up with "P90 average RPC queue time" as the metric, ignoring Gil Tene's wisdom that you should never average percentiles.

Another problematic statement is this:

> which in turn decreases request latency and increases throughput

Gil Tene wants you to measure p99.99 or pmax, so that you will pay for Zing C4 to get lower tail latency, while sacrificing some throughput. If you end up getting both lower tail latency and more throughput, then something is already very wrong with the existing setup (i.e. the full GC).