Data retrieval
during the tests several commands were issued to gather information about the system, this has been done through running multiple shells on the benchmark server and running the commands to gather the information.
dstat -M swengine2 -M php -cdmnt | tee /tmp/fisier.dstat
iostat -xm 1 | tee /tmp/fisier.iostat
iostat -tm 1 | tee /tmp/fisier.iops
while true ; do echo "`date +%F-%T` `cat /proc/loadavg`" >> /tmp/fisier.load && sleep 1; done
Calculate erlangs
The file fisier.dstat is edited and all rows which on column 1 have entries of 0 are deleted (there may be a small delay between the moment the command is run and when the server is actually starting to receive calls). Also at the end of the file, all rows which on column 1 have entries of 0 are also deleted (due to the moment the server stopped processing calls and when the monitoring was stopped, there could be a delay).
awk '$1 !~ /0/ {++count; sum+=$1}END {print sum/count}' fisier.dstat
Calculate averages
awk '{user[NR] = $1; nice[NR] = $2; asystem[NR] = $3; iowait[NR] = $4; steal[NR] = $5; idle[NR] = $6} /Device/ {++count; i = NR-2; sumiowait+=iowait[i]; sumuser+=user[i]; sumnice+=nice[i]; sumasystem+=asystem[i]; sumsteal+=steal[i]; sumidle+=idle[i];} END {print "Averages\n| %iowait | "sumiowait/count" |\n| %user | "sumuser/count" |\n| %nice | "sumnice/count" |\n| %system | "sumasystem/count" |\n| %steal | "sumsteal/count" |\n| %idle | "sumidle/count" |"}' fisier.iostat
Calculate %CPU Usage
Substract %CPU Idle (from the output of the above command) from 100 and you get %CPU Usage
Loadavg
awk '{++count; sum+=$2} END {print (sum/count)}' fisier.load
Transactions per second (replace xvda with the name of the HDD or partition you want to get the results for, e.g: sda, sdb1, sda6, etc.)
awk '$1 ~ /^xvda$/ {++count; total+=$2; rps+=$3; wps+=$4} END {print total/count " average transactions per second\n"rps/count" average MB_read/s\n"wps/count" average MB_wrtn/s"}' fisier.iops
On the PRODUCT folder within the Workdir folder, go under the directory named after the virtual IP of the server, tmp, manager, open dstat.csv, delete the first 7 rows, then save the file as dstat.csv.1.
Refused call
awk -F, '{if($3 > count) count=$3} { if($4 > max) max=$4} END { s=(max/count)*100; printf "%2.3f%\n", s }' dstat.csv.1
Memory used
awk -F, '{++count; sum+=$18} END {print (sum/count)/1024/1024" MB"}' dstat.csv.1
Network received
awk -F, '{++count; sum+=$13} END {print (sum/count)/1024/1024" MB"}' dstat.csv.1
Network sent
awk -F, '{++count; sum+=$14} END {print (sum/count)/1024/1024" MB"}' dstat.csv.1