Skip to Content

Equation of Throughput for GC on a server node – Abstract

DISCLAIMER: Please do not take ‘Throughput’ as we all know. For me, and here, it’s a measure of performance in terms of GC.
All you see below was an idea that I wrote on paper and I thought of sharing it.
I will try to make this idea more viable and realistic.
Readers and Moderators – Forgive me for something that you don’t like and this effort.


This weekend, I was thinking of some way to calculate the ‘Throughput’ in terms of Garbage Collection for a Server Node.

So, I started related Java with basic mathematics – and came down to derive an equation for ‘Throughput’.

Here we have some terms – Two Variables – Non GC Time and GC Time, with the help of which I have written the first equation:

Non GC Time + GC Time = Total Time = Start to current up time

or we can say,

Non GC Time = (Total Time – GC Time)

Now, if I want the throughput, I have to do…..

(Non GC Time/Total Time) *100 = Throughput — this should me maximum

And hence, my motive is to increase the Throughput

((Total Time – GC Time)/Total Time) * 100 = Throughput — this should me maximum  > much high

To calculate this GC Time, I have included a new function to find it

i.e.  GC TIme = (N * avgGC Time ), where avgGC Time is what  you calculate from few random  GC runs and  N is the number of GC runs , which again you can get from std_server logs  😛

So, now I have a new modified equation:

((Total Time – (N * avgGC Time ))/Total Time) * 100 = Throughput(N)

Now if we include the number of core per CPU

Throughput(N,P) = avg [(Total Time – (N *avgGC Time ))/Total Time) * 100] / P

where P stands for processors number of cores on multiprocessor.

Throughput(N,P) = avg [(Total Time – (N *{Pause Time }))/Total Time) * 100] / P

I then thought of delay, that all I included.

Throughput(N,P) = [(Total Time – (N *{avgGCTime + X(delay)}))/Total Time) * 100] / P

Now, this delay also can be used to include CMS mark times

Also, mark – X is directly proportional to P – one example is delay between polls in a multiprocessing architecture

So, finally I derived an equation to measure GC performance, which I call as Throughput for GC for a server node.

  • Throughput(N,P) = [(Total Time – (N *{avgGCTime + X(delay)}))/Total Time) * 100] / P

Any suggestion for improvement for this novice efforts are always welcome.

I am trying to automate this, and future improved versions, equation on test system, and if it works I will share with you all. My own Wily 😉



Be the first to leave a comment
You must be Logged on to comment or reply to a post.