JMeter: Performance Analysis

How to analyse JMeter output from a performance perspective

Let's suppose you have jmeter gathering data for your stress test as follows:
date;connection
30/04/2015 00:00:05;10
30/04/2015 00:00:10;18
30/04/2015 00:00:15;30
30/04/2015 00:00:20;40
30/04/2015 00:00:25;48
Now, let's suppose you have a shell script gathering ps output every 5 seconds as follows:
date;percent_cpu
30/04/2015 00:00:05;1,01
30/04/2015 00:00:10;1,86
30/04/2015 00:00:15;3,30
30/04/2015 00:00:20;4,03
30/04/2015 00:00:25;4,30
So, if you apply the correlation at excel using =CORREL(connection column;percent_cpu column) on excel (multiply by 100 if needed)
The order of columns don't matter now, but will matter at regression

You will have: 98,47

Once this value is higher than 70%, we consider this correlation valid
So, we can proceed to linear regression =LINEST(known y column; known x column; 1; 1)
Applying the regression between connections and cpu =LINEST(cpu column;connection column;1;1):
m              b
10,7793208    -2,060030308
1,102760556    3,490741466
*0,969557897*  3,128926404
95,54772399    3
935,4294587    29,37054133
One way to validate if the regression is correct is to apply square root on *0,969557897*, if the result is 98,47 (the same value from correl if you multiplied by 100 you have to multiply here too), it means our regression is correct

Now, we can forecast the number of connections using the regression like this (m and b comes from regression):

connections	cpu
10   =(  10 * m) + b => 1,17
50   =(  50 * m) + b => 4,77
100  =( 100 * m) + b => 9,27
200  =( 200 * m) + b => 18,26
500  =( 500 * m) + b => 45,25
1000 =(1000 * m) + b => 90,22

So, for 1000 connections we will have 90,22% of CPU usage :P
Of course, if any other computational resource (eg: disk) is saturated BEFORE 90,22%
Your server won't handle connections as expected but in my experience even this simple regression already gives you a clear scenario

we used it with HP-UX servers running softwares written in C using more than 256 GB of RAM per instance

Some metrics that we used:
the threshold for CPU and MEMORY is 80%
disk access time is 20 milliseconds