> 
> Also, note that lack of saw-toothing is not a goal in and of itself
> and may even be bad. For example, with respect to the young generation
> the situation is essentially:
> 
> (1) The larger the young generation, the more significant the saw-tooth.
> (2) The larger the young generation, the more efficient the GC (if the
> application behaves according to the weak generational hypothesis -
> google it if you want a ref) because less data is promoted to old gen
> and because the overhead of stop-the-world is lessened.
> (3) The larger the young generation, the longer the pause times to do
> collections of the young generation.
> 
In this regard, what I personally miss in Mikios - however nice - analysis, is 
what are the effects on the application stop times due to any garbage 
collection runs for the cases tested. In most cases, I prefer having low pauses 
due to any garbage collection runs and don't care too much about the shape of 
the memory usage, and I guess, that's the reason why the low pause collector is 
used by default for running cassandra. For myself, I have mixed feelings 
regarding the low pause collector, because I found it difficult to find good 
young generation sizings, which are suitable to different load patterns. 
Therefor I mostly prefer the throughput collector, which adaptively sizes the 
young generation, doing a good job to avoiding that too much data goes to the 
tenured generation. I would be interested in, what are the differences 
concerning the stop times between the different GC variants, when running 
cassandra. Is it really much better to use the low pause collector in regard to 
get stabile response times, even if I use   XX:+UseParallelOldGC and 
XX:MaxGCPauseMillis=nnn flags? Any experiences with this?

Regards,

Carsten

Reply via email to