I have a system tuned with new Gen 512M with a lot write load. The system
has 4 cores - ParNewGC and GCThreads is set to 4. I am using ConcMarkGC and
CMSInitiating fraction is set to 60 %. I am observing the 90th/99th
percentile of latency and see it highly correlated with GC pauses. There
are times when I have a GC pause of ~ 200 ms every 4 seconds - the tail
latency shoots up to 200 milliseconds for reads - most reads are being
served out of cache. Looking at the GC log and tail latency pattern, there
is direct correlation b/w the two. When the write load is low, and the GC
pauses are like 100-150 ms every 6 seconds, the tail latency improves.
After seeing this behaviour, I am intent on reducing the NewSize to 256M
but I risk 100 ms pauses pretty much every 1-2 seconds and perhaps higher
chance of promotion failures (MSLAB etc. is on). Does anyone know if
frequent young gen collections can be a problem ?