DISCLAIMER: Please do not take 'Throughput' as we all know. For me, and here, it's a measure of performance.
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.
Abstract:
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.
Regards,
Divyanshu