Removing the warning about that ParallelGC is better than G1C for SQX, it´s not true anymore

thisHi,



as we all know, SQX "warns" us if we use the default G1C garbage collector of Java, recommending to use ParallelGC (and offering an automatic fix to do so) as ParallelGC would be much faster. This can´t be more wrong as of "late" (actually even since the latest versions of Java 8 already). G1C is *much* faster than ParallelGC in Java 9, 10 and 11. It has been tuned to be the current best all-around garbage collector for most Java applications and that includes SQX (just do a performance test and also note how much better G1C uses the available RAM if you assign especially large heaps with 15GB+). With ParallelGC I get about 211000 systems / hour, while G1C gives me 234000 systems / hour. And especially if you are working with large backtesting data (32 years in my case) and RAM usage increases, G1C is having a huge performance boost over the ParallelGC.

I am wondering why the ParallelGC is still being recommended over G1C nowadays, given that G1C did already catch up with the late Java 8 updates and started to outperform ParallelGC. G1C was slow and ugly when it was first introduced, but that was many years ago and it has been improved heavily. See this article and remember that it talks about Java 8 and 9, we are at 11 now and G1C has been tuned further already and is even faster now :


http://blog.mgm-tp.com/2018/01/g1-mature-in-java9/



So to make it short: I would recommend to remove that warning and use G1C as the default garbage collector for SQX.

Attachments
No attachments
  • Votes +2
  • Project StrategyQuant X
  • Type Feature
  • Status Fixed
  • Priority Normal

History

g
#1

geektrader

22.11.2018 03:18

Task created

g
#2

geektrader

22.11.2018 08:51
Voted for this task.
g
#3

geektrader

22.11.2018 08:53
An even better idea might be to make this configurable in the Globa Settings. Make a switch where users can try on their own which garbage collector is the best for their specific needs (G1C will most often only outperform ParallelGC on longer runs with large heap sizes, otherwise they are very close indeed). So if you give users a switch between both instead of a warning in the settings menu, that would be the very best for any scenario :-)


P.S.: SerialGC (which interestingly performed best for me with SQ 3 and Java 8, is absolutely bad for SQX and Java 10 / 11, with that gc, SQX fails to max out my 32 cores at all and CPU usage always jumps between 20% and 99% while both ParallelGC and G1C max it out).


Hope we´ll soon get the new ZGC support on Windows too, right now it´s only for Linux :-( https://www.opsian.com/blog/javas-new-zgc-is-very-exciting/

IH
#4

clonex / Ivan Hudec

22.11.2018 10:32
Voted for this task.
TB
#5

Tomas Brynda

18.12.2018 09:10

Status changed from New to Fixed


Votes: +2

Drop files to upload

or

choose files

Max size: 5MB

Not allowed: exe, msi, application, reg, php, js, htaccess, htpasswd, gitignore

...
Wait please