Commit e32fb3d4 authored by Ajinkya Atul's avatar Ajinkya Atul

Added Project

parent 2f94fcfa
#include <bits/stdc++.h>
#include <fstream>
using std::ifstream;
using namespace std;
#define MAX_USER_COUNT 1000 // maximum number of users allowed
#define CORE_COUNT 4 // number of cores in system
#define CONTEXT_SWITCH_TIME 0.1 // context switch time
#define MAX_REQUEST_GENERATED 20 //
#define MAX_THREAD_COUNT 4 // Number of cores per thread
#define MAX_BUFFER_SIZE 200 // Server Buffer storage for incoming messages when no core is free
#define TIME_QUANTUM 0.5 // Defined for Round Robin
enum ServerStatus {IDLE = 1, FREE, BUSY}; // 2 states of server
enum EventType {ARRIVAL=1, DEPARTURE, CONTEXTSWITCHIN, CONTEXTSWITCHOUT}; //types of event dealt with in the simulation
enum SchedulingPolicy{FCFS=1, ROUNDROBIN}; //scheduling policies the system supports
enum Distributions { EXPONENTIAL=1, UNIFORM, CONSTANT }; // types pof distribution system supports
enum BufferStatus {FULL=1, AVAILABLE, EMPTY}; // buffer status representation
ofstream reportData;
ofstream outdata; // used to write final output data to file "outfile.csv"
ofstream outTrace; // used to write trace of the system to file "Trace.txt"
double meanWaitingTime = 0.0;
double meanResponseTime = 0.0;
unsigned int request_drops = 0;
/**
* Class Service Time
* @brief Generates Random service time.
* attributes : Dsitribution ds (enum)
* : mean_service (double)
*
* Methods : double getServiceTime()
*
*/
class Service_Time {
public:
Distributions ds;
double mean_service;
/**
* @brief Construct a new Service_Time object
*
*/
Service_Time(){
ds = UNIFORM;
mean_service = 5;
}
/**
* @brief Construct a new Service_Time object
*
* @param user_mean_service
* @param user_ds
*/
Service_Time(int user_mean_service, Distributions user_ds){
this->mean_service = user_mean_service;
this->ds = user_ds;
}
/**
* @brief Get the Service Time object
*
* @return double
*/
double getServiceTime() {
double final_service_time = 0.0;
std::random_device device;
std::mt19937 generator(device());
std::uniform_int_distribution<int> dist(2,2*mean_service+2);
std::uniform_real_distribution<float> dist1(0, 1);
switch(ds) {
case EXPONENTIAL:
final_service_time = -mean_service * log(dist1(generator));
break;
case UNIFORM:
final_service_time = dist(generator);
break;
case CONSTANT:
final_service_time = mean_service;
break;
}
return final_service_time;
}
};
/** Class Timeout
* @brief generates Random timeout time required by events
* Attributes : Distribution ds (enum)
* : mean_time (double)
* : minimum_timeout(int)
*
* Methods : double getTimeout()
*/
class Timeout {
public:
Distributions ds;
double mean_time;
int minimum_timeout = 50;
/**
* @brief Construct a new Timeout object
*
*/
Timeout(){
ds = UNIFORM;
mean_time = 3;
}
/**
* @brief Construct a new Timeout object
*
* @param user_mean_time
* @param user_ds
*/
Timeout(int user_mean_time, Distributions user_ds){
this->mean_time = user_mean_time;
this->ds = user_ds;
}
/**
* @brief Get the Timeout object
*
* @return double
*/
double getTimeout() {
double final_timeout = 0.0;
std::random_device device;
std::mt19937 generator(device());
std::uniform_int_distribution<int> dist(1,2*mean_time+1);
std::uniform_real_distribution<float> dist1(0, 1);
switch(ds) {
case EXPONENTIAL:
final_timeout = (-mean_time * log(dist1(generator))) + minimum_timeout;
break;
case UNIFORM:
final_timeout = dist(generator)+minimum_timeout;
break;
case CONSTANT:
final_timeout = mean_time + minimum_timeout;
break;
}
return final_timeout;
}
};
/**
* @brief used to store User Input values
*
* Attributes : meanTimeoutTime (double)
* : meanServiceTime (double)
* : noOfUsers (unsigned int)
* : naxRequestPerUser(unsigned int)
* : serviceTimeDistribution (Distributions)
* : timeoutTimeDistribution (Distributions)
* : SchedulingPolicy (policy)
*/
class UserData{
public:
double meanTimeoutTime;
double meanServiceTime;
unsigned int noOfUsers;
unsigned int maxRequestPerUser;
Distributions serviceTimeDistribution;
Distributions timeotTimeDistribution;
SchedulingPolicy policy;
};
/**
* @brief the request instance unique to each user
* Attributes : (int) objectId
* : (int) eventId
* : (EventType) type
* : (double) arrivalTime
* : (double) timeout
* : (double) contextSwitchInTime
* : (double) contextSwitchOutTime
* : (double) serviceTime
* : (double) departureTime
* : (double) waitingTime
* : (int) core
* : (int) thread
* : (int) response_count
* : (int) request_count
* : static (int) object_count
*
* Methods : double getRandomThinkTime()
* : double getRemainingServiceTime()
*/
class Event {
public:
int objectId;
int eventId;
EventType type;
double arrivalTime;
double timeout;
double contextSwitchInTime;
double contextSwitchOutTime;
double serviceTime;
double eventServiceTime;
double departureTime;
double waitingTime;
int core;
int thread;
int response_count;
int request_count;
static int object_count;
/**
* @brief Gets a Random Think Time
*
* @return * double
*/
double getRandomThinkTime();
/**
* @brief Get the Remaining Service Time of the request
*
* @return double
*/
double getRemainingServiceTime();
};
double Event::getRandomThinkTime(){
std::random_device device;
std::mt19937 generator(device());
std::uniform_int_distribution<int> dist(4,10);
auto thinkTime = dist(generator);
return (double)thinkTime;
}
double Event::getRemainingServiceTime(){
return serviceTime;
}
/**
* @brief Used to schedule the requests on the core
*
* Attributes : type (SchedulingPolicy)
* : contextSwitchTime (int)
*/
class Scheduler{
public:
SchedulingPolicy type;
int contextSwitchTIme;
Scheduler(){}
Scheduler(SchedulingPolicy p);
void setPolicy(SchedulingPolicy p);
};
/**
* @brief Construct a new Scheduler:: Scheduler object
*
* @param p
*/
Scheduler::Scheduler(SchedulingPolicy p){
type=p;
contextSwitchTIme = CONTEXT_SWITCH_TIME;
}
/**
* @brief Set the Policy
*
* @param p
*/
void Scheduler::setPolicy(SchedulingPolicy p){
this->type = p;
}
/**
* @brief Each represents a core of the system
* Attributes : threads (queue of Event Class instance Pointers)
* : status (ServerStatus)
* : threadBusyCount (int)
* : schedulerObj (Scheduler Class Instance)
* : coreId (int identification of the core)
* : coreIdIterator (static Int to assign new Id to each new instance of Core Class)
*
*
* Methods : double getNextCoreAvailableTime()
* : ServerStatus getCoreStatus()
* : void setCoreStatus(ServerStatus status)
* : int addToThread(Event obj)
* : Event* removeFromThread()
* : int getBUsyThreadCount()
* : void setBusyThreadCount(int count)
*/
class Core{
public:
std::queue<Event*> threads;
ServerStatus status;
int threadBusyCount;
Scheduler schedulerObj;
int coreId;
static int coreIdIterator;
Core(){}
Core(UserData);
double getNextCoreAvailableTime();
ServerStatus getCoreStatus();
void setCoreStatus(ServerStatus status);
int addToThread(Event obj);
Event* removeFromThread();
int getBUsyThreadCount();
void setBusyThreadCount(int count);
};
/**
* @brief Construct a new Core:: Core object
*
* @param obj
*/
Core::Core(UserData obj){
status = IDLE;
threadBusyCount=0;
coreId=coreIdIterator++;
schedulerObj = Scheduler(obj.policy);
}
/**
* @brief returns next time stamp when the core is available
*
* @return double
*/
double Core::getNextCoreAvailableTime(){
double nextFreeTime;
if(schedulerObj.type == FCFS){
if(threads.empty()==true)
nextFreeTime = 0.0;
else
nextFreeTime = threads.back()->departureTime;
}
else{
if(threads.empty()==true)
nextFreeTime = 0.0;
else
nextFreeTime = max(threads.back()->departureTime, threads.back()->contextSwitchOutTime);
}
return nextFreeTime;
}
/**
* @brief
*
* @return ServerStatus
*/
ServerStatus Core::getCoreStatus(){
if(this->threadBusyCount==MAX_THREAD_COUNT)
return BUSY;
if(this->threadBusyCount > 0 )
return FREE;
return IDLE;
}
/**
* @brief sets core status
*
* @param status
*/
void Core::setCoreStatus(ServerStatus status){
this->status = status;
}
/**
* @brief adds the event to the core process queue
*
* @param obj
* @return int
*/
int Core::addToThread(Event obj){
threads.push(&obj);
threadBusyCount = threadBusyCount + 1;
if(threadBusyCount >= MAX_THREAD_COUNT)
this->status = BUSY;
else if(threadBusyCount >0)
this->status =FREE;
return 1;
}
/**
* @brief removes event entity from the core process queue
*
* @return Event*
*/
Event* Core::removeFromThread(){
Event *obj = threads.front();
threads.pop();
this->threadBusyCount = this->threadBusyCount -1;
if(this->threadBusyCount == 0)
this->status = IDLE;
else if(this->threadBusyCount < MAX_THREAD_COUNT)
this->status = FREE;
return obj;
}
/**
* @brief get the number of thread busy on the core
*
* @return int
*/
int Core::getBUsyThreadCount(){
return this->threadBusyCount;
}
/**
* @brief set the busy therad count of core
*
* @param count
*/
void Core::setBusyThreadCount(int count){
this->threadBusyCount+=count;
}
/**
* @brief class represensts the Server with CORE_COUNT number of cores
*
* Attributes : coreObj (Array of core Class instances)
* : serviceTimeObj (instance of ServiceTime class)
* : buffer (queue of events requried to store the events in case system is full)
*
* Methods : Event getNextEvent()
* : void addEventToBuffer(Event)
* : ServerStatus getServerStatus()
* : Core getCore(int coreCount)
* : int getFreeCore()
* : BufferStatus getBufferStatus()
*/
class Server{
public:
Core coreObj[CORE_COUNT];
Service_Time serviceTimeObj;
std::queue<Event> buffer;
Server(){}
Server(UserData);
Event getNextEvent();
void addEventToBuffer(Event);
ServerStatus getServerStatus();
Core getCore(int coreCount);
int getFreeCore();
BufferStatus getBufferStatus();
};
/**
* @brief Construct a new Server:: Server object
*
* @param obj
*/
Server::Server(UserData obj){
Core::coreIdIterator = 0;
for(int i=0;i<CORE_COUNT;i++){
coreObj[i]= Core(obj);
}
serviceTimeObj = Service_Time(obj.meanServiceTime,obj.serviceTimeDistribution);
}
// true == empty false = data in
/**
* @brief get status of the server buffer queue
*
* @return BufferStatus
*/
BufferStatus Server::getBufferStatus(){
if(this->buffer.empty())
return EMPTY;
if(this->buffer.size()==MAX_BUFFER_SIZE)
return FULL;
return AVAILABLE;
}
// coreId 0,1,2,3
/**
* @brief get the core id of free core if any otherwise -1
*
* @return int
*/
int Server::getFreeCore(){
int maxVal = MAX_THREAD_COUNT;
int coreId = 0;
for (int i=0;i<CORE_COUNT;i++){
if(this->coreObj[i].getBUsyThreadCount()<maxVal){
maxVal = this->coreObj[i].getBUsyThreadCount();
coreId = this->coreObj[i].coreId;
}
}
return coreId;
}
/**
* @brief adds event to the buffer queue
*
* @param obj
*/
void Server::addEventToBuffer(Event obj){
this->buffer.push(obj);
}
/**
* @brief removes the event from queue and returns
*
* @return Event
*/
Event Server::getNextEvent(){
Event obj= this->buffer.front();
this->buffer.pop();
return obj;
}
/**
* @brief return server status
*
* @return ServerStatus
*/
ServerStatus Server::getServerStatus(){
int busyCount=0;
for (int i=0;i<CORE_COUNT;i++){
if(this->coreObj[i].getCoreStatus()==BUSY && this->coreObj[i].threadBusyCount==MAX_THREAD_COUNT){
busyCount++;
}
}
if(busyCount==CORE_COUNT)
return BUSY;
busyCount=0;
for (int i=0;i<CORE_COUNT;i++){
if(this->coreObj[i].getCoreStatus()==FREE){
busyCount++;
}
}
if(busyCount > 0)
return FREE;
return IDLE;
}
/**
* @brief return instance of the core requested
*
* @param core // core id
* @return Core
*/
Core Server::getCore(int core){
return this->coreObj[core];
}
/**
* @brief struct to combine event time and corresponding event object
*
*/
struct timeEventTuple{
double eventTime;
Event eventObj;
};
/**
* @brief function defination for comparision of ghe timeevent Tuple structure
*
*/
struct comparatorTimeEventTuple{
bool operator()(struct timeEventTuple const&t1 , struct timeEventTuple const&t2){
return t1.eventTime > t2.eventTime;
}
};
/**
* @brief handles all the request events generated in the system
* Attributes : serverObj (Server class instance)
* : userDataObj(UserData class Instance)
* : gblSystemTime (double)
* : eventIdSeed (int ) used to generate event id's
* : userCount (int) states the current user count in the system
* : maxRequestCount (unsigned int) maximum number of requests being generated in the system
* : timeoutObj (Timeout class instance)
* : nextEventQueue (a priority queue to hold the list of next events)
*
* Methods : void setUserData();
* : int genNewEventId();
* : timeEventTuple getNextEvent();
* : void manageEvent(Event event);
* : Server getServerObj();
* : void setEvent(double,Event);
* : void arrive(Event);
* : void depart(Event);
* : void contextSwitchIn(Event);
* : void contextSwitchOut(Event);
* : bool IsNextEventTimeBufferEmpty();
* : void report(Event);
* : void printState(timeEventTuple);
*/
class EventHandler {
public:
Server serverObj;
UserData userDataObj;
double gblSystemTime;
int eventIdSeed ;
int userCount;
unsigned int maxRequestCount;
priority_queue < timeEventTuple, vector<timeEventTuple>, comparatorTimeEventTuple > nextEventTime;
Timeout timeoutObj;
int eventCount[MAX_USER_COUNT][2];
EventHandler(){}
EventHandler(UserData);
void setUserData();
int genNewEventId();
timeEventTuple getNextEvent();
void manageEvent(Event event);
Server getServerObj();
void setEvent(double,Event);
void arrive(Event);
void depart(Event);
void contextSwitchIn(Event);
void contextSwitchOut(Event);
bool IsNextEventTimeBufferEmpty();
void report(Event);
void printState(timeEventTuple);
};
/**
* @brief returns status of the eventTime buffer
*
* @return true if buffer is empty
* @return false if not empty
*/
bool EventHandler::IsNextEventTimeBufferEmpty() {
return this->nextEventTime.empty();
}
/**
* @brief prints the current state of the system
*
* @param timeEventTuple
*/
void EventHandler::printState(timeEventTuple te) {
cout << gblSystemTime << "\t\t";
outTrace << gblSystemTime << "\t\t";
cout << "[";
outTrace << "[";
for (int i = 0; i < 4; i++) {
switch(this->serverObj.coreObj[i].getCoreStatus()) {
case IDLE:
cout << "I ";
outTrace << "I ";
break;
case BUSY:
cout << "B ";
outTrace << "B ";
break;
case AVAILABLE:
cout << "A ";
outTrace << "A ";
break;
}
}
cout << "]\t"; outTrace << "]\t";
if (this->serverObj.buffer.empty()) {
cout << "EMPTY\t\t";
outTrace << "EMPTY\t\t";
}
else {
cout << serverObj.buffer.front().arrivalTime << "\t\t";
outTrace << serverObj.buffer.front().arrivalTime << "\t\t";
}
switch(te.eventObj.type) {
case ARRIVAL:
cout << "Arrival \t\t";
outTrace << "Arrival \t\t";
break;
case DEPARTURE:
cout << "Departure \t\t";
outTrace << "Departure \t\t";
break;
case CONTEXTSWITCHIN:
cout << "Cntx Swtch In\t\t";
outTrace << "Cntx Swtch In\t\t";
break;
case CONTEXTSWITCHOUT:
cout << "Cntx Swtch Out\t\t";
outTrace << "Cntx Swtch Out\t\t";
break;
}
cout << "\t\t" << te.eventTime << "\t\t" << endl;
outTrace << "\t\t" << te.eventTime << "\t\t" << endl;
cout << "==================================================================================================" << endl;
outTrace << "==================================================================================================" << endl;
}
/**
* @brief logs the event details at exit
*
* @param Event
*/
void EventHandler::report(Event e) {
outdata << e.eventId << "," << e.arrivalTime << "," << e.departureTime << "," << e.waitingTime<< "," << e.departureTime - e.arrivalTime << "," << e.request_count << "," << e.response_count<<","<<e.objectId << endl;
}
/**
* @brief Construct a new Event Handler:: Event Handler object
*
* @param obj
*/
EventHandler::EventHandler(UserData obj){
serverObj = Server(obj);
obj.noOfUsers = (obj.noOfUsers < MAX_USER_COUNT) ? obj.noOfUsers : MAX_USER_COUNT;
userDataObj = obj;
timeoutObj = Timeout(obj.meanTimeoutTime,obj.timeotTimeDistribution);
eventIdSeed = 1;
userCount=0;
gblSystemTime=0;
maxRequestCount = obj.noOfUsers * obj.maxRequestPerUser;
}
/**
* @brief generates new event ID
*
* @return int
*/
int EventHandler::genNewEventId(){
return this->eventIdSeed++;
}
/**
* @brief returns next event in the event queue
*
* @return timeEventTuple
*/
timeEventTuple EventHandler::getNextEvent(){
timeEventTuple obj = this->nextEventTime.top();
this->nextEventTime.pop();
return obj;
}
/**
* @brief calls the appropriate function as per the state of the event
*
* @param event
*/
void EventHandler::manageEvent(Event event){
switch (event.type)
{
case ARRIVAL:
this->arrive(event);
break;
case DEPARTURE:
this->depart(event);
break;
case CONTEXTSWITCHIN:
contextSwitchIn(event);
break;
case CONTEXTSWITCHOUT:
contextSwitchOut(event);
break;
default:
break;
}
}
/**
* @brief adds event to the time event queue
*
* @param timeOfEvent
* @param obj
*/
void EventHandler::setEvent(double timeOfEvent, Event obj){
this->nextEventTime.push({timeOfEvent,obj});
}
/**
* @brief returns Instance of server class
*
* @return Server
*/
Server EventHandler::getServerObj(){
return this->serverObj;
}
/**
* @brief Arrival event handler
*
* @param Event X
*/
void EventHandler::arrive(Event X){
// creates new Event instances if not reached the required count
if( userCount <= this->userDataObj.noOfUsers ){
int requestCount = this->genNewEventId();
if(requestCount <= maxRequestCount){
// make the Event object ready of ARRIVAL
Event obj = Event();
obj.objectId=++userCount;
obj.arrivalTime = gblSystemTime+obj.getRandomThinkTime();
obj.eventId = requestCount;
obj.type = ARRIVAL;
obj.serviceTime = this->serverObj.serviceTimeObj.getServiceTime();
obj.eventServiceTime = this->serverObj.serviceTimeObj.getServiceTime();
obj.timeout = gblSystemTime + this->timeoutObj.getTimeout();
obj.request_count =1;
obj.response_count =0;
//push the event object in the event queue
this->setEvent(obj.arrivalTime,obj);
}
}
// in case server is busy push the event X in the wait buffer of the server
if(this->serverObj.getServerStatus()==BUSY){
if(this->serverObj.getBufferStatus()==FULL){
request_drops++;
}
else {
this->serverObj.addEventToBuffer(X);
}
}
// if the server is not fully busy , get a free core and assign the event to the core
else{
int freeCore =-1;
freeCore = this->serverObj.getFreeCore();
double nextAvailableTime = 0.0;
nextAvailableTime = max(serverObj.coreObj[freeCore].getNextCoreAvailableTime(), gblSystemTime);
X.core = freeCore;
X.contextSwitchInTime = nextAvailableTime + CONTEXT_SWITCH_TIME;
X.type = CONTEXTSWITCHIN;
serverObj.coreObj[freeCore].addToThread(X);
X.thread = this->serverObj.coreObj[freeCore].getBUsyThreadCount();
// send the event to the event queue
this->setEvent(X.contextSwitchInTime,X);
}
}
/**
* @brief Departure event handle
*
* @param Event X
*/
void EventHandler::depart(Event X){
// removes the event from the core process thread
this->serverObj.coreObj[X.core].removeFromThread();
// get next request in the server buffer and assign it to a core
if(this->serverObj.getBufferStatus() != EMPTY){
Event A = this->serverObj.getNextEvent();
int freeCore = -1;
freeCore = this->serverObj.getFreeCore();
double nextAvialableTime = 0.0;
nextAvialableTime = max(serverObj.coreObj[freeCore].getNextCoreAvailableTime(), gblSystemTime);
A.core = freeCore;
A.contextSwitchInTime = nextAvialableTime + CONTEXT_SWITCH_TIME;
A.type = CONTEXTSWITCHIN;
serverObj.coreObj[freeCore].addToThread(A);
A.thread = this->serverObj.coreObj[freeCore].getBUsyThreadCount();
this->setEvent(A.contextSwitchInTime,A);
}
// if response is under the timeout of the request then generate new request
if(X.departureTime < X.timeout){
X.response_count++;
// report(X);
this->eventCount[X.objectId-1][0] = X.request_count;
this->eventCount[X.objectId-1][1] = X.response_count;
int requestCount = this->genNewEventId();
if(requestCount <= maxRequestCount){
X.eventId = requestCount;
X.type = ARRIVAL;
X.timeout = gblSystemTime + this->timeoutObj.getTimeout();
X.arrivalTime = gblSystemTime+X.getRandomThinkTime();
X.serviceTime = this->serverObj.serviceTimeObj.getServiceTime();
X.eventServiceTime = this->serverObj.serviceTimeObj.getServiceTime();
X.departureTime = 0;
X.waitingTime =0 ;
X.core = 0;
X.thread = 0;
X.request_count +=1;
this->setEvent(X.arrivalTime,X);
}
}
// if DEPARTURE of event X happens after the timeout value the user will wont respond to the request and will regenrate the request
else{
X.type = ARRIVAL;
X.arrivalTime = gblSystemTime+X.getRandomThinkTime();
X.timeout = gblSystemTime + this->timeoutObj.getTimeout();
X.departureTime = 0;
X.waitingTime = 0;
X.core = 0;
X.thread = 0;
X.request_count += 1;
this->setEvent(X.arrivalTime,X);
}
}
/**
* @brief Handles the Context Switch Out event
*
* @param X
*/
void EventHandler::contextSwitchOut(Event X){
// remove the core from the process thread of the core
this->serverObj.coreObj[X.core].removeFromThread();
double nextAvailableTime = 0.0;
nextAvailableTime = max(serverObj.coreObj[X.core].getNextCoreAvailableTime(), gblSystemTime);
X.contextSwitchInTime = nextAvailableTime + CONTEXT_SWITCH_TIME;
X.type = CONTEXTSWITCHIN;
this->serverObj.coreObj[X.core].addToThread(X);
// assign it next context switch in time and push it back in the queue.
this->setEvent(X.contextSwitchInTime, X);
}
/**
* @brief handles the context Switch In event
*
* @param X
*/
void EventHandler::contextSwitchIn(Event X){
// if the cervice time left is more than time quantum then assign next context switch out time
if (X.serviceTime > TIME_QUANTUM) {
X.serviceTime -= TIME_QUANTUM;
X.contextSwitchOutTime = gblSystemTime + TIME_QUANTUM;
X.type = CONTEXTSWITCHOUT;
this->setEvent(X.contextSwitchOutTime, X);
}
// of the remaining service time is less than the time quantum assign the DEPARTURE time
else {
X.departureTime = gblSystemTime + X.eventServiceTime;
X.waitingTime = (X.departureTime - X.arrivalTime) - X.eventServiceTime;
meanWaitingTime += X.waitingTime;
meanResponseTime += X.departureTime - X.arrivalTime;
X.type = DEPARTURE;
this->setEvent(X.departureTime,X);
}
}
/**
* @brief Handles the simulation
* Attributes : eventHandlerObj (Event Handler instance)
* Methods : void time(timeEventTuple X)
* : void initialize()
*/
class Simulation {
public:
EventHandler eventHandlerObj;
Simulation(){}
Simulation(UserData);
void time(timeEventTuple X);
void initialize();
};
/**
* @brief Construct a new Simulation:: Simulation object
*
* @param obj
*/
Simulation::Simulation(UserData obj){
eventHandlerObj = EventHandler(obj);
};
/**
* @brief sets the global system time
*
* @param X
*/
void Simulation::time(timeEventTuple X){
eventHandlerObj.gblSystemTime = X.eventTime;
}
/**
* @brief Initialize the simulation by pushing teh first request Event
*
*/
void Simulation::initialize(){
Event obj = Event();
obj.eventId = eventHandlerObj.genNewEventId();
obj.arrivalTime = eventHandlerObj.gblSystemTime;
obj.type = ARRIVAL;
obj.timeout = eventHandlerObj.gblSystemTime + eventHandlerObj.timeoutObj.getTimeout();
obj.serviceTime = eventHandlerObj.serverObj.serviceTimeObj.getServiceTime();
obj.eventServiceTime = eventHandlerObj.serverObj.serviceTimeObj.getServiceTime();
obj.contextSwitchInTime = 0.0;
obj.contextSwitchOutTime = 0.0;
obj.request_count=1;
obj.objectId = ++eventHandlerObj.userCount;
obj.response_count =0;
eventHandlerObj.userCount++;
eventHandlerObj.setEvent(0, obj);
}
// core Id Iterator Initialization
int Core::coreIdIterator = 0;
/**
* @brief reads input from file
*
* @param obj
*/
void readFromFile (UserData * obj) {
string file_name = "infile.txt";
// cout << "Enter file name" << endl;
// cin >> file_name;
ifstream indata;
int num;
indata.open(file_name);
if(!indata) {
cerr << "Error: file could not be opened" << endl;
exit(1);
}
indata >> obj->meanServiceTime;
indata >> obj->meanTimeoutTime;
indata >> num;
switch(num) {
case EXPONENTIAL:
obj->serviceTimeDistribution = EXPONENTIAL;
break;
case UNIFORM:
obj->serviceTimeDistribution = UNIFORM;
break;
case CONSTANT:
obj->serviceTimeDistribution = CONSTANT;
break;
default:
cout << "Wrong Distribution" << endl;
exit(0);
break;
}
indata >> num;
switch(num) {
case EXPONENTIAL:
obj->timeotTimeDistribution = EXPONENTIAL;
break;
case UNIFORM:
obj->timeotTimeDistribution = UNIFORM;
break;
case CONSTANT:
obj->timeotTimeDistribution = CONSTANT;
break;
default:
cout << "Wrong Distribution" << endl;
exit(0);
break;
}
indata >> obj->noOfUsers;
indata >> obj->maxRequestPerUser;
// indata >> num;
// switch(num) {
// case FCFS:
// obj.policy = FCFS;
// break;
// case ROUNDROBIN:
// obj.policy = ROUNDROBIN;
// break;
// default:
// cout << "Wrong Policy";
// break;
// }
indata.close();
// return obj;
}
/**
* @brief manual read of input from the user
*
* @param obj
*/
void manualRead(UserData * obj) {
cout << "Enter mean service time of server" << endl;
cin >> obj->meanServiceTime;
cout << "Enter mean Timeout time of request" << endl;
cin >> obj->meanTimeoutTime;
cout << "Enter service time distribution eg. 1" << endl;
cout << "1. EXPONENTIAL" << endl << "2. UNIFORM" << endl << "3. CONSTANT" << endl;
int a = 0;
cin >> a;
switch(a) {
case EXPONENTIAL:
obj->serviceTimeDistribution = EXPONENTIAL;
break;
case UNIFORM:
obj->serviceTimeDistribution = UNIFORM;
break;
case CONSTANT:
obj->serviceTimeDistribution = CONSTANT;
break;
default:
cout << "Wrong Distribution" << endl;
exit(0);
break;
}
cout << "Enter Timeout distribution" << endl;
cout << "1. EXPONENTIAL" << endl << "2. UNIFORM" << endl << "3. CONSTANT" << endl << "Enter numbers" << endl;
cin >> a;
switch(a) {
case EXPONENTIAL:
obj->timeotTimeDistribution = EXPONENTIAL;
break;
case UNIFORM:
obj->timeotTimeDistribution = UNIFORM;
break;
case CONSTANT:
obj->timeotTimeDistribution = CONSTANT;
break;
default:
cout << "Wrong Distribution" << endl;
exit(0);
break;
}
cout << "Enter number of users in the system" << endl;
cin >> obj->noOfUsers;
cout << "Enter number of requests per user in the system" << endl;
cin >> obj->maxRequestPerUser;
// cout << "Enter scheduling policy" << endl << "1. FCFS" << endl << "2. Round Robin" << endl;
// cin >> a;
// switch(a) {
// case FCFS:
// obj.policy = FCFS;
// break;
// case ROUNDROBIN:
// obj.policy = ROUNDROBIN;
// break;
// default:
// cout << "Wrong Policy";
// break;
// }
}
/**
* @brief read user input
*
* @param obj
*/
void read(UserData *obj) {
cout << "Enter input type eg. 1" << endl << "1. Manual" << endl << "2. From a file" << endl;
int input_type = 0;
cin >> input_type;
if (input_type == 1) {
manualRead(obj);
}
else {
readFromFile(obj);
}
// return obj;
}
/**
* @brief Main Function
*
* @return int
*/
int main(){
UserData obj = UserData();
read(&obj);
// obj.meanServiceTime = 2;
// obj.meanTimeoutTime = 10;
// obj.serviceTimeDistribution = EXPONENTIAL;
// obj.timeotTimeDistribution = EXPONENTIAL;
// obj.noOfUsers = 0;
// obj.maxRequestPerUser = 8;
obj.policy = ROUNDROBIN;
outdata.open("outfile.csv");
outTrace.open("Trace.txt");
reportData.open("Report.csv");
outdata << "Even_Id,Arrival_Time,Departure_Time,Waiting_Time,Response_Time,Request_Count,Response_Count,Object_Id" << endl;
cout << "Parameters: " << endl << "1. No. of Cores: 4" << endl << "2. No. of Threads Per Core" << MAX_THREAD_COUNT << endl;
cout << "3. Buffer Size: " << MAX_BUFFER_SIZE << endl << "4. Context Switch Time: " << CONTEXT_SWITCH_TIME << endl << "5. Time Quanta: " << TIME_QUANTUM << endl;
cout << "6. Mean Serive Time: " << obj.meanServiceTime << endl << "7. Mean Timeout Time: " << obj.meanTimeoutTime << endl;
cout << "8. No. of Users: " << obj.noOfUsers << endl << "9. Number of Requests per User: " << obj.maxRequestPerUser << endl << "10. Scheduling Policy: Round Robin" << endl;
outTrace << "Parameters: " << endl << "1. No. of Cores: 4" << endl << "2. No. of Threads Per Core" << MAX_THREAD_COUNT << endl;
outTrace << "3. Buffer Size: " << MAX_BUFFER_SIZE << endl << "4. Context Switch Time: " << CONTEXT_SWITCH_TIME << endl << "5. Time Quanta: " << TIME_QUANTUM << endl;
outTrace << "6. Mean Serive Time: " << obj.meanServiceTime << endl << "7. Mean Timeout Time: " << obj.meanTimeoutTime << endl;
outTrace << "8. No. of Users: " << obj.noOfUsers << endl << "9. Number of Requests per User: " << obj.maxRequestPerUser << endl << "10. Scheduling Policy: Round Robin" << endl;
cout << "Global System Time\t" << "Core Status\t" << "Server Buffer Top Element\t" << "Next Event Type\t" << "Next Event Time" << endl;
int variable_users = 1;
int runs = 1;
for (int l = 0; l < variable_users; l++) {
double finalMeanWaitingTime = 0.0;
double finalResponseTime = 0.0;
double finalBadput = 0.0;
double finalGoodput = 0.0;
double finalThroughput = 0.0;
double mean_request_drops = 0;
double per_core_util[CORE_COUNT] = {0.0, 0.0, 0.0, 0.0};
obj.noOfUsers += 10;
// double waitingArray[5];
for (int k = 0; k<runs; k++) {
meanWaitingTime = 0.0;
meanResponseTime = 0.0;
request_drops = 0;
Simulation simObj = Simulation(obj);
simObj.initialize();
double prev_time = 0.0;
double core_util = 0.0;
double core_thread_util[CORE_COUNT] = {0.0, 0.0, 0.0, 0.0};
while(simObj.eventHandlerObj.IsNextEventTimeBufferEmpty()==false){
timeEventTuple x = simObj.eventHandlerObj.getNextEvent();
simObj.eventHandlerObj.printState(x);
simObj.time(x);
simObj.eventHandlerObj.manageEvent(x.eventObj);
double diff = x.eventTime - prev_time;
prev_time = x.eventTime;
for (int i = 0; i<CORE_COUNT; i++) {
core_thread_util[i] += diff * (simObj.eventHandlerObj.serverObj.coreObj[i].getBUsyThreadCount()/MAX_THREAD_COUNT);
}
}
int total_request_count = 0, total_response_count = 0;
for (int i = 0; i < obj.noOfUsers; i++) {
total_request_count += simObj.eventHandlerObj.eventCount[i][0];
total_response_count += simObj.eventHandlerObj.eventCount[i][1];
}
int retries = total_request_count - total_response_count;
int not_timedout = total_response_count - retries;
double badput = (retries*1.0)/simObj.eventHandlerObj.gblSystemTime;
double goodput = (not_timedout*1.0)/simObj.eventHandlerObj.gblSystemTime;
double throughput = (total_response_count * 1.0)/simObj.eventHandlerObj.gblSystemTime;
// waitingArray[k] = meanResponseTime/simObj.eventHandlerObj.maxRequestCount;
// finalMeanWaitingTime += meanWaitingTime/simObj.eventHandlerObj.eventIdSeed;
// finalResponseTime += meanResponseTime/simObj.eventHandlerObj.maxRequestCount;
finalBadput += badput; finalGoodput += goodput; finalThroughput += throughput;
mean_request_drops += request_drops;
for (int i = 0; i<CORE_COUNT; i++) {
per_core_util[i] += core_thread_util[i]/simObj.eventHandlerObj.gblSystemTime;
}
}
reportData << obj.noOfUsers << ",";
// for (int p = 0; p < 5; p++) {
// reportData << waitingArray[p] << ",";
// }
reportData << mean_request_drops/5 << "," << finalBadput/5 << "," << finalGoodput/5 << "," << finalThroughput/5 << ",";
for (int i = 0; i<CORE_COUNT; i++) {
reportData << per_core_util[i]/5 << ",";
}
reportData << endl;
}
// outTrace << "Mean Waiting Time = " << meanWaitingTime/simObj.eventHandlerObj.eventIdSeed << endl;
// outTrace << "Mean Response Time = " << meanResponseTime/simObj.eventHandlerObj.eventIdSeed << endl;
// outTrace << "Total Request Drops = " << request_drops << endl;
// cout << "Total Request Drops = " << request_drops << endl;
// cout << "Mean Waiting Time = " << meanWaitingTime/simObj.eventHandlerObj.eventIdSeed << endl;
// cout << "Mean Response Time = " << meanResponseTime/simObj.eventHandlerObj.eventIdSeed << endl;
return 0;
}
\ No newline at end of file
# Web Server Simulation
# Source Code File Structure
Main Folder
├── Assignment 2 data - 1000 RR.csv
├── Assignment 2 data - FCFS 1000 data.csv
├── Assignment 2 data - FCFS comparision.csv
├── Assignment 2 data - FCFS Comparison Data.csv
├── Assignment 2 data - Goodput Badput B.csv
├── Assignment 2 data - Measurement Closed.csv
├── Assignment 2 data - Round Robin Comparison.csv
├── Assignment 2 data - RR 0.01.csv
├── Assignment 2 data - rr1.csv
├── Assignment 2 data - RR comparision.csv
├── Assignment 2 Simulation Slides.pdf
├── graph_plot_script.py
├── infile.txt
├── README.md
├── Report.csv
├── Simulation.
├── Simulation.cpp
└── Trace.txt
# Instructions of Compilation and Execution of Code
Compile the code using
g++ Simulation.cpp -o Simulation
Execute the code using
./Simulation
# Execution Instructions
The program accepts following inputs
- Action
- 1: Single Simulation Run
- 2: Metric Calculation
- Mean Service Time (Non-Negative Real Number)
- Mean TimeOut Time (Non-Negative Real Number)
- Service Time Distribution (Integer)
- 1: Exponential
- 2: Uniform
- 3: Constant
- TimeOut Time Distribution (Integer)
- 1: Exponential
- 2: Uniform
- 3: Constant
- Number of Users (Positive Integer)
- Maximum Requests Per User (Positive Integer)
There are two ways to give input
- From Terminal: Execute the above given commands and give inputs wherever asked.
- From File: Put the inputs in a file names "infile.txt" in the same order mentioned above and every input on different line.
# Trace and Output
The program produces the trace whenever global time reaches some next event time. The trace is generated only when program is executed in single simulation mode. The trace is outputed on terminal as well as in a file called Trace.txt. The trace contains following data in every row in same order.
- Simulation Timer
- All Core Status: The status of all the 4 cores whether they are idle or doing something
- Server Buffer Top Element: The top element in the server queue
- Next Event Type: The next event that is going to be processed
- Next Event Time: The time when next event is going to be processed.
# Metrics Calculation
To calculate the metric, select Metirc Calculation mode. Give maximum number of users till till which you want to calculate metrics. The program will generate the metrics while incrementing number of users by 10 every time. The metric data is stored in a file named "Report.csv".
To generate the required Graphs run graph_plot_script.py.
To generate the metric results from given csv's uncomment line 238 and run the run graph_plot_script.py script.
\ No newline at end of file
File added
#include <bits/stdc++.h>
#include <fstream>
using std::ifstream;
using namespace std;
#define MAX_USER_COUNT 2000 // maximum number of users allowed
#define CORE_COUNT 4 // number of cores in system
#define CONTEXT_SWITCH_TIME 0.1 // context switch time
#define MAX_REQUEST_GENERATED 20 //
#define MAX_THREAD_COUNT 4 // Number of cores per thread
#define MAX_BUFFER_SIZE 500 // Server Buffer storage for incoming messages when no core is free
#define TIME_QUANTUM 0.5 // Defined for Round Robin
enum ServerStatus {IDLE = 1, FREE, BUSY}; // 2 states of server
enum EventType {ARRIVAL=1, DEPARTURE, CONTEXTSWITCHIN, CONTEXTSWITCHOUT}; //types of event dealt with in the simulation
enum SchedulingPolicy{FCFS=1, ROUNDROBIN}; //scheduling policies the system supports
enum Distributions { EXPONENTIAL=1, UNIFORM, CONSTANT }; // types pof distribution system supports
enum BufferStatus {FULL=1, AVAILABLE, EMPTY}; // buffer status representation
enum Action {SINGLERUN=1,PERFORMANCE_ANALYSIS};
ofstream reportData;
ofstream outTrace; // used to write trace of the system to file "Trace.txt"
double meanWaitingTime = 0.0;
double meanResponseTime = 0.0;
unsigned int request_drops = 0;
/**
* Class Service Time
* @brief Generates Random service time.
* attributes : Dsitribution ds (enum)
* : mean_service (double)
*
* Methods : double getServiceTime()
*
*/
class Service_Time {
public:
Distributions ds;
double mean_service;
/**
* @brief Construct a new Service_Time object
*
*/
Service_Time(){
ds = UNIFORM;
mean_service = 5;
}
/**
* @brief Construct a new Service_Time object
*
* @param user_mean_service
* @param user_ds
*/
Service_Time(double user_mean_service, Distributions user_ds){
this->mean_service = user_mean_service;
this->ds = user_ds;
}
/**
* @brief Get the Service Time object
*
* @return double
*/
double getServiceTime() {
double final_service_time = 0.0;
std::random_device device;
std::mt19937 generator(device());
std::uniform_int_distribution<int> dist(2,2*mean_service+2);
std::uniform_real_distribution<float> dist1(0, 1);
switch(ds) {
case EXPONENTIAL:
final_service_time = -mean_service * log(dist1(generator));
break;
case UNIFORM:
final_service_time = dist(generator);
break;
case CONSTANT:
final_service_time = mean_service;
break;
}
return final_service_time;
}
};
/** Class Timeout
* @brief generates Random timeout time required by events
* Attributes : Distribution ds (enum)
* : mean_time (double)
* : minimum_timeout(int)
*
* Methods : double getTimeout()
*/
class Timeout {
public:
Distributions ds;
double mean_time;
int minimum_timeout = 50;
/**
* @brief Construct a new Timeout object
*
*/
Timeout(){
ds = UNIFORM;
mean_time = 3;
}
/**
* @brief Construct a new Timeout object
*
* @param user_mean_time
* @param user_ds
*/
Timeout(double user_mean_time, Distributions user_ds){
this->mean_time = user_mean_time;
this->ds = user_ds;
}
/**
* @brief Get the Timeout object
*
* @return double
*/
double getTimeout() {
double final_timeout = 0.0;
std::random_device device;
std::mt19937 generator(device());
std::uniform_int_distribution<int> dist(1,2*mean_time+1);
std::uniform_real_distribution<float> dist1(0, 1);
switch(ds) {
case EXPONENTIAL:
final_timeout = (-mean_time * log(dist1(generator))) + minimum_timeout;
break;
case UNIFORM:
final_timeout = dist(generator)+minimum_timeout;
break;
case CONSTANT:
final_timeout = mean_time + minimum_timeout;
break;
}
return final_timeout;
}
};
/**
* @brief used to store User Input values
*
* Attributes : meanTimeoutTime (double)
* : meanServiceTime (double)
* : noOfUsers (unsigned int)
* : naxRequestPerUser(unsigned int)
* : serviceTimeDistribution (Distributions)
* : timeoutTimeDistribution (Distributions)
* : SchedulingPolicy (policy)
*/
class UserData{
public:
int action;
double meanTimeoutTime;
double meanServiceTime;
unsigned int noOfUsers;
unsigned int maxRequestPerUser;
Distributions serviceTimeDistribution;
Distributions timeotTimeDistribution;
SchedulingPolicy policy;
};
/**
* @brief the request instance unique to each user
* Attributes : (int) objectId
* : (int) eventId
* : (EventType) type
* : (double) arrivalTime
* : (double) timeout
* : (double) contextSwitchInTime
* : (double) contextSwitchOutTime
* : (double) serviceTime
* : (double) departureTime
* : (double) waitingTime
* : (int) core
* : (int) thread
* : (int) response_count
* : (int) request_count
* : static (int) object_count
*
* Methods : double getRandomThinkTime()
* : double getRemainingServiceTime()
*/
class Event {
public:
int objectId;
int eventId;
EventType type;
double arrivalTime;
double timeout;
double contextSwitchInTime;
double contextSwitchOutTime;
double serviceTime;
double eventServiceTime;
double departureTime;
double waitingTime;
int core;
int thread;
int response_count;
int request_count;
static int object_count;
/**
* @brief Gets a Random Think Time
*
* @return * double
*/
double getRandomThinkTime();
/**
* @brief Get the Remaining Service Time of the request
*
* @return double
*/
double getRemainingServiceTime();
};
double Event::getRandomThinkTime(){
std::random_device device;
std::mt19937 generator(device());
std::uniform_int_distribution<int> dist(4,10);
auto thinkTime = dist(generator);
return (double)thinkTime;
}
double Event::getRemainingServiceTime(){
return serviceTime;
}
/**
* @brief Used to schedule the requests on the core
*
* Attributes : type (SchedulingPolicy)
* : contextSwitchTime (int)
*/
class Scheduler{
public:
SchedulingPolicy type;
int contextSwitchTIme;
Scheduler(){}
Scheduler(SchedulingPolicy p);
void setPolicy(SchedulingPolicy p);
};
/**
* @brief Construct a new Scheduler:: Scheduler object
*
* @param p
*/
Scheduler::Scheduler(SchedulingPolicy p){
type=p;
contextSwitchTIme = CONTEXT_SWITCH_TIME;
}
/**
* @brief Set the Policy
*
* @param p
*/
void Scheduler::setPolicy(SchedulingPolicy p){
this->type = p;
}
/**
* @brief Each represents a core of the system
* Attributes : threads (queue of Event Class instance Pointers)
* : status (ServerStatus)
* : threadBusyCount (int)
* : schedulerObj (Scheduler Class Instance)
* : coreId (int identification of the core)
* : coreIdIterator (static Int to assign new Id to each new instance of Core Class)
*
*
* Methods : double getNextCoreAvailableTime()
* : ServerStatus getCoreStatus()
* : void setCoreStatus(ServerStatus status)
* : int addToThread(Event obj)
* : Event* removeFromThread()
* : int getBUsyThreadCount()
* : void setBusyThreadCount(int count)
*/
class Core{
public:
std::queue<Event*> threads;
ServerStatus status;
int threadBusyCount;
Scheduler schedulerObj;
int coreId;
static int coreIdIterator;
Core(){}
Core(UserData);
double getNextCoreAvailableTime();
ServerStatus getCoreStatus();
void setCoreStatus(ServerStatus status);
int addToThread(Event obj);
Event* removeFromThread();
int getBUsyThreadCount();
void setBusyThreadCount(int count);
};
/**
* @brief Construct a new Core:: Core object
*
* @param obj
*/
Core::Core(UserData obj){
status = IDLE;
threadBusyCount=0;
coreId=coreIdIterator++;
schedulerObj = Scheduler(obj.policy);
}
/**
* @brief returns next time stamp when the core is available
*
* @return double
*/
double Core::getNextCoreAvailableTime(){
double nextFreeTime;
if(schedulerObj.type == FCFS){
if(threads.empty()==true)
nextFreeTime = 0.0;
else
nextFreeTime = threads.back()->departureTime;
}
else{
if(threads.empty()==true)
nextFreeTime = 0.0;
else
nextFreeTime = max(threads.back()->departureTime, threads.back()->contextSwitchOutTime);
}
return nextFreeTime;
}
/**
* @brief
*
* @return ServerStatus
*/
ServerStatus Core::getCoreStatus(){
if(this->threadBusyCount==MAX_THREAD_COUNT)
return BUSY;
if(this->threadBusyCount > 0 )
return FREE;
return IDLE;
}
/**
* @brief sets core status
*
* @param status
*/
void Core::setCoreStatus(ServerStatus status){
this->status = status;
}
/**
* @brief adds the event to the core process queue
*
* @param obj
* @return int
*/
int Core::addToThread(Event obj){
threads.push(&obj);
threadBusyCount = threadBusyCount + 1;
if(threadBusyCount >= MAX_THREAD_COUNT)
this->status = BUSY;
else if(threadBusyCount >0)
this->status =FREE;
return 1;
}
/**
* @brief removes event entity from the core process queue
*
* @return Event*
*/
Event* Core::removeFromThread(){
Event *obj = threads.front();
threads.pop();
this->threadBusyCount = this->threadBusyCount -1;
if(this->threadBusyCount == 0)
this->status = IDLE;
else if(this->threadBusyCount < MAX_THREAD_COUNT)
this->status = FREE;
return obj;
}
/**
* @brief get the number of thread busy on the core
*
* @return int
*/
int Core::getBUsyThreadCount(){
return this->threadBusyCount;
}
/**
* @brief set the busy therad count of core
*
* @param count
*/
void Core::setBusyThreadCount(int count){
this->threadBusyCount+=count;
}
/**
* @brief class represensts the Server with CORE_COUNT number of cores
*
* Attributes : coreObj (Array of core Class instances)
* : serviceTimeObj (instance of ServiceTime class)
* : buffer (queue of events requried to store the events in case system is full)
*
* Methods : Event getNextEvent()
* : void addEventToBuffer(Event)
* : ServerStatus getServerStatus()
* : Core getCore(int coreCount)
* : int getFreeCore()
* : BufferStatus getBufferStatus()
*/
class Server{
public:
Core coreObj[CORE_COUNT];
Service_Time serviceTimeObj;
std::queue<Event> buffer;
Server(){}
Server(UserData);
Event getNextEvent();
void addEventToBuffer(Event);
ServerStatus getServerStatus();
Core getCore(int coreCount);
int getFreeCore();
BufferStatus getBufferStatus();
};
/**
* @brief Construct a new Server:: Server object
*
* @param obj
*/
Server::Server(UserData obj){
Core::coreIdIterator = 0;
for(int i=0;i<CORE_COUNT;i++){
coreObj[i]= Core(obj);
}
serviceTimeObj = Service_Time(obj.meanServiceTime,obj.serviceTimeDistribution);
}
// true == empty false = data in
/**
* @brief get status of the server buffer queue
*
* @return BufferStatus
*/
BufferStatus Server::getBufferStatus(){
if(this->buffer.empty())
return EMPTY;
if(this->buffer.size()==MAX_BUFFER_SIZE)
return FULL;
return AVAILABLE;
}
// coreId 0,1,2,3
/**
* @brief get the core id of free core if any otherwise -1
*
* @return int
*/
int Server::getFreeCore(){
int maxVal = MAX_THREAD_COUNT;
int coreId = 0;
for (int i=0;i<CORE_COUNT;i++){
if(this->coreObj[i].getBUsyThreadCount()<maxVal){
maxVal = this->coreObj[i].getBUsyThreadCount();
coreId = this->coreObj[i].coreId;
}
}
return coreId;
}
/**
* @brief adds event to the buffer queue
*
* @param obj
*/
void Server::addEventToBuffer(Event obj){
this->buffer.push(obj);
}
/**
* @brief removes the event from queue and returns
*
* @return Event
*/
Event Server::getNextEvent(){
Event obj= this->buffer.front();
this->buffer.pop();
return obj;
}
/**
* @brief return server status
*
* @return ServerStatus
*/
ServerStatus Server::getServerStatus(){
int busyCount=0;
for (int i=0;i<CORE_COUNT;i++){
if(this->coreObj[i].getCoreStatus()==BUSY && this->coreObj[i].threadBusyCount==MAX_THREAD_COUNT){
busyCount++;
}
}
if(busyCount==CORE_COUNT)
return BUSY;
busyCount=0;
for (int i=0;i<CORE_COUNT;i++){
if(this->coreObj[i].getCoreStatus()==FREE){
busyCount++;
}
}
if(busyCount > 0)
return FREE;
return IDLE;
}
/**
* @brief return instance of the core requested
*
* @param core // core id
* @return Core
*/
Core Server::getCore(int core){
return this->coreObj[core];
}
/**
* @brief struct to combine event time and corresponding event object
*
*/
struct timeEventTuple{
double eventTime;
Event eventObj;
};
/**
* @brief function defination for comparision of ghe timeevent Tuple structure
*
*/
struct comparatorTimeEventTuple{
bool operator()(struct timeEventTuple const&t1 , struct timeEventTuple const&t2){
return t1.eventTime > t2.eventTime;
}
};
/**
* @brief handles all the request events generated in the system
* Attributes : serverObj (Server class instance)
* : userDataObj(UserData class Instance)
* : gblSystemTime (double)
* : eventIdSeed (int ) used to generate event id's
* : userCount (int) states the current user count in the system
* : maxRequestCount (unsigned int) maximum number of requests being generated in the system
* : timeoutObj (Timeout class instance)
* : nextEventQueue (a priority queue to hold the list of next events)
*
* Methods : void setUserData();
* : int genNewEventId();
* : timeEventTuple getNextEvent();
* : void manageEvent(Event event);
* : Server getServerObj();
* : void setEvent(double,Event);
* : void arrive(Event);
* : void depart(Event);
* : void contextSwitchIn(Event);
* : void contextSwitchOut(Event);
* : bool IsNextEventTimeBufferEmpty();
* : void report(Event);
* : void printState(timeEventTuple);
*/
class EventHandler {
public:
Server serverObj;
UserData userDataObj;
double gblSystemTime;
int eventIdSeed ;
int userCount;
double total_ctx_swtch_times[4];
unsigned int maxRequestCount;
priority_queue < timeEventTuple, vector<timeEventTuple>, comparatorTimeEventTuple > nextEventTime;
Timeout timeoutObj;
int eventCount[MAX_USER_COUNT][2];
EventHandler(){}
EventHandler(UserData);
void setUserData();
int genNewEventId();
timeEventTuple getNextEvent();
void manageEvent(Event event);
Server getServerObj();
void setEvent(double,Event);
void arrive(Event);
void depart(Event);
void contextSwitchIn(Event);
void contextSwitchOut(Event);
bool IsNextEventTimeBufferEmpty();
void printState(timeEventTuple);
};
/**
* @brief returns status of the eventTime buffer
*
* @return true if buffer is empty
* @return false if not empty
*/
bool EventHandler::IsNextEventTimeBufferEmpty() {
return this->nextEventTime.empty();
}
/**
* @brief prints the current state of the system
*
* @param timeEventTuple
*/
void EventHandler::printState(timeEventTuple te) {
cout << gblSystemTime << "\t\t";
outTrace << gblSystemTime << "\t\t";
cout << "[";
outTrace << "[";
for (int i = 0; i < 4; i++) {
switch(this->serverObj.coreObj[i].getCoreStatus()) {
case IDLE:
cout << "I ";
outTrace << "I ";
break;
case BUSY:
cout << "B ";
outTrace << "B ";
break;
case AVAILABLE:
cout << "A ";
outTrace << "A ";
break;
}
}
cout << "]\t"; outTrace << "]\t";
if (this->serverObj.buffer.empty()) {
cout << "EMPTY\t\t";
outTrace << "EMPTY\t\t";
}
else {
cout << serverObj.buffer.front().arrivalTime << "\t\t";
outTrace << serverObj.buffer.front().arrivalTime << "\t\t";
}
switch(te.eventObj.type) {
case ARRIVAL:
cout << "Arrival \t\t";
outTrace << "Arrival \t\t";
break;
case DEPARTURE:
cout << "Departure \t\t";
outTrace << "Departure \t\t";
break;
case CONTEXTSWITCHIN:
cout << "Cntx Swtch In\t\t";
outTrace << "Cntx Swtch In\t\t";
break;
case CONTEXTSWITCHOUT:
cout << "Cntx Swtch Out\t\t";
outTrace << "Cntx Swtch Out\t\t";
break;
}
cout << "\t\t" << te.eventTime << "\t\t" << endl;
outTrace << "\t\t" << te.eventTime << "\t\t" << endl;
cout << "==================================================================================================" << endl;
outTrace << "==================================================================================================" << endl;
}
/**
* @brief Construct a new Event Handler:: Event Handler object
*
* @param obj
*/
EventHandler::EventHandler(UserData obj){
serverObj = Server(obj);
obj.noOfUsers = (obj.noOfUsers < MAX_USER_COUNT) ? obj.noOfUsers : MAX_USER_COUNT;
userDataObj = obj;
timeoutObj = Timeout(obj.meanTimeoutTime,obj.timeotTimeDistribution);
eventIdSeed = 1;
userCount=0;
gblSystemTime=0;
for (int i = 0; i<4; i++) {
total_ctx_swtch_times[i] = 0.0;
}
maxRequestCount = obj.noOfUsers * obj.maxRequestPerUser;
}
/**
* @brief generates new event ID
*
* @return int
*/
int EventHandler::genNewEventId(){
return this->eventIdSeed++;
}
/**
* @brief returns next event in the event queue
*
* @return timeEventTuple
*/
timeEventTuple EventHandler::getNextEvent(){
timeEventTuple obj = this->nextEventTime.top();
this->nextEventTime.pop();
return obj;
}
/**
* @brief calls the appropriate function as per the state of the event
*
* @param event
*/
void EventHandler::manageEvent(Event event){
switch (event.type)
{
case ARRIVAL:
this->arrive(event);
break;
case DEPARTURE:
this->depart(event);
break;
case CONTEXTSWITCHIN:
contextSwitchIn(event);
break;
case CONTEXTSWITCHOUT:
contextSwitchOut(event);
break;
default:
break;
}
}
/**
* @brief adds event to the time event queue
*
* @param timeOfEvent
* @param obj
*/
void EventHandler::setEvent(double timeOfEvent, Event obj){
this->nextEventTime.push({timeOfEvent,obj});
}
/**
* @brief returns Instance of server class
*
* @return Server
*/
Server EventHandler::getServerObj(){
return this->serverObj;
}
/**
* @brief Arrival event handler
*
* @param Event X
*/
void EventHandler::arrive(Event X){
// creates new Event instances if not reached the required count
if( userCount <= this->userDataObj.noOfUsers ){
int requestCount = this->genNewEventId();
if(requestCount <= maxRequestCount){
// make the Event object ready of ARRIVAL
Event obj = Event();
obj.objectId=++userCount;
obj.arrivalTime = gblSystemTime+obj.getRandomThinkTime();
obj.eventId = requestCount;
obj.type = ARRIVAL;
obj.serviceTime = this->serverObj.serviceTimeObj.getServiceTime();
obj.eventServiceTime = obj.serviceTime;
obj.timeout = gblSystemTime + this->timeoutObj.getTimeout();
obj.request_count =1;
obj.response_count =0;
//push the event object in the event queue
this->setEvent(obj.arrivalTime,obj);
}
}
// in case server is busy push the event X in the wait buffer of the server
if(this->serverObj.getServerStatus()==BUSY){
if(this->serverObj.getBufferStatus()==FULL){
request_drops++;
X.type = ARRIVAL;
X.arrivalTime = gblSystemTime+X.timeout;
X.timeout = gblSystemTime + this->timeoutObj.getTimeout();
X.departureTime = 0;
X.waitingTime = 0;
X.core = 0;
X.thread = 0;
X.request_count += 1;
this->setEvent(X.arrivalTime,X);
}
else {
this->serverObj.addEventToBuffer(X);
}
}
// if the server is not fully busy , get a free core and assign the event to the core
else{
int freeCore =-1;
freeCore = this->serverObj.getFreeCore();
double nextAvailableTime = 0.0;
nextAvailableTime = max(serverObj.coreObj[freeCore].getNextCoreAvailableTime(), gblSystemTime);
X.core = freeCore;
X.contextSwitchInTime = nextAvailableTime + CONTEXT_SWITCH_TIME;
X.type = CONTEXTSWITCHIN;
serverObj.coreObj[freeCore].addToThread(X);
X.thread = this->serverObj.coreObj[freeCore].getBUsyThreadCount();
// send the event to the event queue
this->setEvent(X.contextSwitchInTime,X);
}
}
/**
* @brief Departure event handle
*
* @param Event X
*/
void EventHandler::depart(Event X){
// removes the event from the core process thread
this->serverObj.coreObj[X.core].removeFromThread();
// get next request in the server buffer and assign it to a core
if(this->serverObj.getBufferStatus() != EMPTY){
Event A = this->serverObj.getNextEvent();
int freeCore = -1;
freeCore = this->serverObj.getFreeCore();
double nextAvialableTime = 0.0;
nextAvialableTime = max(serverObj.coreObj[freeCore].getNextCoreAvailableTime(), gblSystemTime);
A.core = freeCore;
A.contextSwitchInTime = nextAvialableTime + CONTEXT_SWITCH_TIME;
A.type = CONTEXTSWITCHIN;
serverObj.coreObj[freeCore].addToThread(A);
A.thread = this->serverObj.coreObj[freeCore].getBUsyThreadCount();
this->setEvent(A.contextSwitchInTime,A);
}
// if response is under the timeout of the request then generate new request
if(X.departureTime < X.timeout){
X.response_count++;
this->eventCount[X.objectId-1][0] = X.request_count;
this->eventCount[X.objectId-1][1] = X.response_count;
int requestCount = this->genNewEventId();
if(requestCount <= maxRequestCount){
X.eventId = requestCount;
X.type = ARRIVAL;
X.timeout = gblSystemTime + this->timeoutObj.getTimeout();
X.arrivalTime = gblSystemTime+X.getRandomThinkTime();
X.serviceTime = this->serverObj.serviceTimeObj.getServiceTime();
X.eventServiceTime = X.serviceTime;
X.departureTime = 0;
X.waitingTime =0 ;
X.core = 0;
X.thread = 0;
X.request_count +=1;
this->setEvent(X.arrivalTime,X);
}
}
// if DEPARTURE of event X happens after the timeout value the user will wont respond to the request and will regenrate the request
else{
X.type = ARRIVAL;
X.arrivalTime = gblSystemTime+X.getRandomThinkTime();
X.timeout = gblSystemTime + this->timeoutObj.getTimeout();
X.departureTime = 0;
X.waitingTime = 0;
X.core = 0;
X.thread = 0;
X.request_count += 1;
this->setEvent(X.arrivalTime,X);
}
}
/**
* @brief Handles the Context Switch Out event
*
* @param X
*/
void EventHandler::contextSwitchOut(Event X){
this->total_ctx_swtch_times[X.core]+= CONTEXT_SWITCH_TIME;
// remove the core from the process thread of the core
this->serverObj.coreObj[X.core].removeFromThread();
double nextAvailableTime = 0.0;
nextAvailableTime = max(serverObj.coreObj[X.core].getNextCoreAvailableTime(), gblSystemTime);
X.contextSwitchInTime = nextAvailableTime + CONTEXT_SWITCH_TIME;
X.type = CONTEXTSWITCHIN;
this->serverObj.coreObj[X.core].addToThread(X);
// assign it next context switch in time and push it back in the queue.
this->setEvent(X.contextSwitchInTime, X);
}
/**
* @brief handles the context Switch In event
*
* @param X
*/
void EventHandler::contextSwitchIn(Event X){
// if the cervice time left is more than time quantum then assign next context switch out time
if (X.serviceTime > TIME_QUANTUM) {
X.serviceTime -= TIME_QUANTUM;
X.contextSwitchOutTime = gblSystemTime + TIME_QUANTUM;
X.type = CONTEXTSWITCHOUT;
this->setEvent(X.contextSwitchOutTime, X);
}
// of the remaining service time is less than the time quantum assign the DEPARTURE time
else {
X.departureTime = gblSystemTime + X.serviceTime;
X.waitingTime = (X.departureTime - X.arrivalTime) - X.eventServiceTime;
meanWaitingTime += X.waitingTime;
meanResponseTime += X.departureTime - X.arrivalTime;
X.type = DEPARTURE;
this->setEvent(X.departureTime,X);
}
}
/**
* @brief Handles the simulation
* Attributes : eventHandlerObj (Event Handler instance)
* Methods : void time(timeEventTuple X)
* : void initialize()
*/
class Simulation {
public:
EventHandler eventHandlerObj;
Simulation(){}
Simulation(UserData);
void time(timeEventTuple X);
void initialize();
};
/**
* @brief Construct a new Simulation:: Simulation object
*
* @param obj
*/
Simulation::Simulation(UserData obj){
eventHandlerObj = EventHandler(obj);
};
/**
* @brief sets the global system time
*
* @param X
*/
void Simulation::time(timeEventTuple X){
eventHandlerObj.gblSystemTime = X.eventTime;
}
/**
* @brief Initialize the simulation by pushing teh first request Event
*
*/
void Simulation::initialize(){
Event obj = Event();
obj.eventId = eventHandlerObj.genNewEventId();
obj.arrivalTime = eventHandlerObj.gblSystemTime;
obj.type = ARRIVAL;
obj.timeout = eventHandlerObj.gblSystemTime + eventHandlerObj.timeoutObj.getTimeout();
obj.serviceTime = eventHandlerObj.serverObj.serviceTimeObj.getServiceTime();
obj.eventServiceTime = obj.serviceTime;
obj.contextSwitchInTime = 0.0;
obj.contextSwitchOutTime = 0.0;
obj.request_count=1;
obj.objectId = ++eventHandlerObj.userCount;
obj.response_count =0;
eventHandlerObj.userCount++;
eventHandlerObj.setEvent(0, obj);
}
// core Id Iterator Initialization
int Core::coreIdIterator = 0;
/**
* @brief reads input from file
*
* @param obj
*/
void readFromFile (UserData * obj) {
string file_name = "infile.txt";
ifstream indata;
int num;
indata.open(file_name);
if(!indata) {
cerr << "Error: file could not be opened" << endl;
exit(1);
}
indata >> obj->action;
indata >> obj->meanServiceTime;
indata >> obj->meanTimeoutTime;
indata >> num;
switch(num) {
case EXPONENTIAL:
obj->serviceTimeDistribution = EXPONENTIAL;
break;
case UNIFORM:
obj->serviceTimeDistribution = UNIFORM;
break;
case CONSTANT:
obj->serviceTimeDistribution = CONSTANT;
break;
default:
cout << "Wrong Distribution" << endl;
exit(0);
break;
}
indata >> num;
switch(num) {
case EXPONENTIAL:
obj->timeotTimeDistribution = EXPONENTIAL;
break;
case UNIFORM:
obj->timeotTimeDistribution = UNIFORM;
break;
case CONSTANT:
obj->timeotTimeDistribution = CONSTANT;
break;
default:
cout << "Wrong Distribution" << endl;
exit(0);
break;
}
indata >> obj->noOfUsers;
indata >> obj->maxRequestPerUser;
indata.close();
}
/**
* @brief manual read of input from the user
*
* @param obj
*/
void manualRead(UserData * obj) {
cout << "Mention the action eg. 1" << endl << "1. Single Simulation Run" << endl << "2. Performance evaluation" << endl;
cin >> obj->action;
cout << "Enter mean service time of server" << endl;
cin >> obj->meanServiceTime;
cout << "Enter mean Timeout time of request" << endl;
cin >> obj->meanTimeoutTime;
cout << "Enter service time distribution eg. 1" << endl;
cout << "1. EXPONENTIAL" << endl << "2. UNIFORM" << endl << "3. CONSTANT" << endl;
int a = 0;
cin >> a;
switch(a) {
case EXPONENTIAL:
obj->serviceTimeDistribution = EXPONENTIAL;
break;
case UNIFORM:
obj->serviceTimeDistribution = UNIFORM;
break;
case CONSTANT:
obj->serviceTimeDistribution = CONSTANT;
break;
default:
cout << "Wrong Distribution" << endl;
exit(0);
break;
}
cout << "Enter Timeout distribution" << endl;
cout << "1. EXPONENTIAL" << endl << "2. UNIFORM" << endl << "3. CONSTANT" << endl;
cin >> a;
switch(a) {
case EXPONENTIAL:
obj->timeotTimeDistribution = EXPONENTIAL;
break;
case UNIFORM:
obj->timeotTimeDistribution = UNIFORM;
break;
case CONSTANT:
obj->timeotTimeDistribution = CONSTANT;
break;
default:
cout << "Wrong Distribution" << endl;
exit(0);
break;
}
cout << "Enter number of users in the system" << endl;
cin >> obj->noOfUsers;
cout << "Enter number of requests per user in the system" << endl;
cin >> obj->maxRequestPerUser;
}
/**
* @brief read user input
*
* @param obj
*/
void read(UserData *obj) {
cout << "Enter input type eg. 1" << endl << "1. Manual" << endl << "2. From a file" << endl;
int input_type = 0;
cin >> input_type;
if (input_type == 1) {
manualRead(obj);
}
else {
readFromFile(obj);
}
// return obj;
}
/**
* @brief Analyses the performance by calculating different metrics
*
* @param obj
* @param users
*/
void metricCalculation(UserData obj, int users) {
int runs = 5;
int step_value = 10;
reportData << "noOfUsers,minRes,maxRes,meanRes,core1,core2,core3,core4,cpu,requestDrop,badput,goodput,throughput\n";
/* Run for different number of users */
for (int l = 1; l*step_value <= users; l++) {
double finalMeanWaitingTime = 0.0;
double finalResponseTime = 0.0;
double finalBadput = 0.0;
double finalGoodput = 0.0;
double finalThroughput = 0.0;
double mean_request_drops = 0;
double per_core_util[CORE_COUNT] = {0.0, 0.0, 0.0, 0.0};
double reponseArray[5];
/* Runs several simulation with random time values*/
for (int k = 0; k<runs; k++) {
meanWaitingTime = 0.0;
meanResponseTime = 0.0;
request_drops = 0;
obj.noOfUsers = l*step_value;
Simulation simObj = Simulation(obj);
simObj.initialize();
double prev_time = 0.0;
double core_util = 0.0;
double core_thread_util[CORE_COUNT] = {0.0, 0.0, 0.0, 0.0};
/* Single simulation*/
while(simObj.eventHandlerObj.IsNextEventTimeBufferEmpty()==false){
timeEventTuple x = simObj.eventHandlerObj.getNextEvent();
simObj.time(x);
simObj.eventHandlerObj.manageEvent(x.eventObj);
double diff = x.eventTime - prev_time;
prev_time = x.eventTime;
/* Find out the amount of time eavh core is busy */
for (int i = 0; i<CORE_COUNT; i++) {
if (simObj.eventHandlerObj.serverObj.coreObj[i].getCoreStatus() != IDLE)
core_thread_util[i] += diff;
}
}
int total_request_count = 0, total_response_count = 0;
/* Calculate the number of requests and response generated for each user in one simulation */
for (int i = 0; i < obj.noOfUsers; i++) {
total_request_count += simObj.eventHandlerObj.eventCount[i][0];
total_response_count += simObj.eventHandlerObj.eventCount[i][1];
}
int retries = total_request_count - total_response_count;
int not_timedout = total_response_count - retries;
/* Throughput, goodput, badput generation */
double badput = (retries*1.0)/simObj.eventHandlerObj.gblSystemTime;
double goodput = (total_response_count*1.0)/simObj.eventHandlerObj.gblSystemTime;
double throughput = (total_request_count * 1.0)/simObj.eventHandlerObj.gblSystemTime;
/*Find out total response times in each run*/
reponseArray[k] = meanResponseTime/simObj.eventHandlerObj.maxRequestCount;
/*Find out sum of response times in all run*/
finalResponseTime += meanResponseTime/simObj.eventHandlerObj.maxRequestCount;
finalBadput += badput; finalGoodput += goodput; finalThroughput += throughput;
mean_request_drops += request_drops;
for (int i = 0; i<CORE_COUNT; i++) {
per_core_util[i] += (core_thread_util[i] - simObj.eventHandlerObj.total_ctx_swtch_times[i])/simObj.eventHandlerObj.gblSystemTime;
}
}
/* Report all metrics as average of runs */
reportData << obj.noOfUsers << ",";
double minRes = 10000, maxRes = 0.0;
for (int p = 0; p < 5; p++) {
minRes = minRes > reponseArray[p] ? reponseArray[p] : minRes;
maxRes = maxRes < reponseArray[p] ? reponseArray[p] : maxRes;
}
reportData << minRes << "," << maxRes << ",";
reportData << finalResponseTime/5 << ",";
double cpu_utilisation = 0.0;
for (int i = 0; i<CORE_COUNT; i++) {
reportData << per_core_util[i]/5 << ",";
cpu_utilisation += per_core_util[i]/5;
}
reportData << cpu_utilisation/4 << ",";
reportData << mean_request_drops/5 << "," << finalBadput/5 << "," << finalGoodput/5 << "," << finalThroughput/5 << endl;
}
}
/**
* @brief Main Function
*
* @return int
*/
int main(){
UserData obj = UserData();
read(&obj);
// obj.action = 1;
// obj.meanServiceTime = 2;
// obj.meanTimeoutTime = 5;
// obj.serviceTimeDistribution = EXPONENTIAL;
// obj.timeotTimeDistribution = EXPONENTIAL;
// obj.noOfUsers = 0;
// obj.maxRequestPerUser = 100;
obj.policy = ROUNDROBIN;
outTrace.open("Trace.txt");
reportData.open("Report.csv");
cout << "Parameters: " << endl << "1. No. of Cores: 4" << endl << "2. No. of Threads Per Core" << MAX_THREAD_COUNT << endl;
cout << "3. Buffer Size: " << MAX_BUFFER_SIZE << endl << "4. Context Switch Time: " << CONTEXT_SWITCH_TIME << endl << "5. Time Quanta: " << TIME_QUANTUM << endl;
cout << "6. Mean Serive Time: " << obj.meanServiceTime << endl << "7. Mean Timeout Time: " << obj.meanTimeoutTime << endl;
cout << "8. No. of Users: " << obj.noOfUsers << endl << "9. Number of Requests per User: " << obj.maxRequestPerUser << endl << "10. Scheduling Policy: Round Robin" << endl;
outTrace << "Parameters: " << endl << "1. No. of Cores: 4" << endl << "2. No. of Threads Per Core: " << MAX_THREAD_COUNT << endl;
outTrace << "3. Buffer Size: " << MAX_BUFFER_SIZE << endl << "4. Context Switch Time: " << CONTEXT_SWITCH_TIME << endl << "5. Time Quanta: " << TIME_QUANTUM << endl;
outTrace << "6. Mean Serive Time: " << obj.meanServiceTime << endl << "7. Mean Timeout Time: " << obj.meanTimeoutTime << endl;
outTrace << "8. No. of Users: " << obj.noOfUsers << endl << "9. Number of Requests per User: " << obj.maxRequestPerUser << endl << "10. Scheduling Policy: Round Robin" << endl;
if (obj.action == SINGLERUN) {
Simulation simObj = Simulation(obj);
simObj.initialize();
cout << "Global System Time\t" << "Core Status\t" << "Server Buffer Top Element\t" << "Next Event Type\t" << "Next Event Time" << endl;
outTrace << "Global System Time\t" << "Core Status\t" << "Server Buffer Top Element\t" << "Next Event Type\t" << "Next Event Time" << endl;
while(simObj.eventHandlerObj.IsNextEventTimeBufferEmpty()==false){
timeEventTuple x = simObj.eventHandlerObj.getNextEvent();
simObj.eventHandlerObj.printState(x);
simObj.time(x);
simObj.eventHandlerObj.manageEvent(x.eventObj);
}
}
else {
metricCalculation(obj, obj.noOfUsers);
}
return 0;
}
\ No newline at end of file
Parameters:
1. No. of Cores: 4
2. No. of Threads Per Core: 4
3. Buffer Size: 500
4. Context Switch Time: 0.1
5. Time Quanta: 0.5
6. Mean Serive Time: 0.2
7. Mean Timeout Time: 5
8. No. of Users: 20
9. Number of Requests per User: 5
10. Scheduling Policy: Round Robin
Global System Time Core Status Server Buffer Top Element Next Event Type Next Event Time
0 [I I I I ] EMPTY Arrival 0
==================================================================================================
0 [A I I I ] EMPTY Cntx Swtch In 0.1
==================================================================================================
0.1 [A I I I ] EMPTY Departure 0.367601
==================================================================================================
0.367601 [I I I I ] EMPTY Arrival 4
==================================================================================================
4 [A I I I ] EMPTY Cntx Swtch In 4.1
==================================================================================================
4.1 [A I I I ] EMPTY Cntx Swtch Out 4.6
==================================================================================================
4.6 [A I I I ] EMPTY Cntx Swtch In 4.7
==================================================================================================
4.7 [A I I I ] EMPTY Departure 4.84306
==================================================================================================
4.84306 [I I I I ] EMPTY Arrival 7.3676
==================================================================================================
7.3676 [A I I I ] EMPTY Cntx Swtch In 7.4676
==================================================================================================
7.4676 [A I I I ] EMPTY Departure 7.53884
==================================================================================================
7.53884 [I I I I ] EMPTY Arrival 9
==================================================================================================
9 [A I I I ] EMPTY Cntx Swtch In 9.1
==================================================================================================
9.1 [A I I I ] EMPTY Departure 9.11619
==================================================================================================
9.11619 [I I I I ] EMPTY Arrival 12.8431
==================================================================================================
12.8431 [A I I I ] EMPTY Cntx Swtch In 12.9431
==================================================================================================
12.9431 [A I I I ] EMPTY Departure 12.9667
==================================================================================================
12.9667 [I I I I ] EMPTY Arrival 15
==================================================================================================
15 [A I I I ] EMPTY Cntx Swtch In 15.1
==================================================================================================
15.1 [A I I I ] EMPTY Departure 15.1794
==================================================================================================
15.1794 [I I I I ] EMPTY Arrival 17.3676
==================================================================================================
17.3676 [A I I I ] EMPTY Cntx Swtch In 17.4676
==================================================================================================
17.4676 [A I I I ] EMPTY Arrival 17.5388
==================================================================================================
17.5388 [A A I I ] EMPTY Cntx Swtch In 17.6388
==================================================================================================
17.6388 [A A I I ] EMPTY Departure 17.8242
==================================================================================================
17.8242 [I A I I ] EMPTY Departure 17.8579
==================================================================================================
17.8579 [I I I I ] EMPTY Arrival 19.1162
==================================================================================================
19.1162 [A I I I ] EMPTY Cntx Swtch In 19.2162
==================================================================================================
19.2162 [A I I I ] EMPTY Departure 19.2439
==================================================================================================
19.2439 [I I I I ] EMPTY Arrival 21
==================================================================================================
21 [A I I I ] EMPTY Cntx Swtch In 21.1
==================================================================================================
21.1 [A I I I ] EMPTY Departure 21.2347
==================================================================================================
21.2347 [I I I I ] EMPTY Arrival 21.8431
==================================================================================================
21.8431 [A I I I ] EMPTY Cntx Swtch In 21.9431
==================================================================================================
21.9431 [A I I I ] EMPTY Departure 21.9812
==================================================================================================
21.9812 [I I I I ] EMPTY Arrival 22.9667
==================================================================================================
22.9667 [A I I I ] EMPTY Cntx Swtch In 23.0667
==================================================================================================
23.0667 [A I I I ] EMPTY Departure 23.1046
==================================================================================================
23.1046 [I I I I ] EMPTY Arrival 23.1794
==================================================================================================
23.1794 [A I I I ] EMPTY Cntx Swtch In 23.2794
==================================================================================================
23.2794 [A I I I ] EMPTY Departure 23.3232
==================================================================================================
23.3232 [I I I I ] EMPTY Arrival 23.3676
==================================================================================================
23.3676 [A I I I ] EMPTY Cntx Swtch In 23.4676
==================================================================================================
23.4676 [A I I I ] EMPTY Departure 23.478
==================================================================================================
23.478 [I I I I ] EMPTY Arrival 25.1162
==================================================================================================
25.1162 [A I I I ] EMPTY Cntx Swtch In 25.2162
==================================================================================================
25.2162 [A I I I ] EMPTY Departure 25.3025
==================================================================================================
25.3025 [I I I I ] EMPTY Arrival 26
==================================================================================================
26 [A I I I ] EMPTY Cntx Swtch In 26.1
==================================================================================================
26.1 [A I I I ] EMPTY Arrival 26.2439
==================================================================================================
26.2439 [A A I I ] EMPTY Cntx Swtch In 26.3439
==================================================================================================
26.3439 [A A I I ] EMPTY Departure 26.464
==================================================================================================
26.464 [A I I I ] EMPTY Departure 26.5071
==================================================================================================
26.5071 [I I I I ] EMPTY Arrival 26.8579
==================================================================================================
26.8579 [A I I I ] EMPTY Cntx Swtch In 26.9579
==================================================================================================
26.9579 [A I I I ] EMPTY Departure 26.978
==================================================================================================
26.978 [I I I I ] EMPTY Arrival 26.9812
==================================================================================================
26.9812 [A I I I ] EMPTY Cntx Swtch In 27.0812
==================================================================================================
27.0812 [A I I I ] EMPTY Departure 27.1321
==================================================================================================
27.1321 [I I I I ] EMPTY Arrival 27.5388
==================================================================================================
27.5388 [A I I I ] EMPTY Cntx Swtch In 27.6388
==================================================================================================
27.6388 [A I I I ] EMPTY Arrival 27.8242
==================================================================================================
27.8242 [A A I I ] EMPTY Departure 27.8449
==================================================================================================
27.8449 [I A I I ] EMPTY Cntx Swtch In 27.9242
==================================================================================================
27.9242 [I A I I ] EMPTY Departure 28.1214
==================================================================================================
28.1214 [I I I I ] EMPTY Arrival 29.1162
==================================================================================================
29.1162 [A I I I ] EMPTY Cntx Swtch In 29.2162
==================================================================================================
29.2162 [A I I I ] EMPTY Arrival 29.2347
==================================================================================================
29.2347 [A A I I ] EMPTY Departure 29.2966
==================================================================================================
29.2966 [I A I I ] EMPTY Arrival 29.3232
==================================================================================================
29.3232 [A A I I ] EMPTY Cntx Swtch In 29.3347
==================================================================================================
29.3347 [A A I I ] EMPTY Cntx Swtch In 29.4232
==================================================================================================
29.4232 [A A I I ] EMPTY Departure 29.4653
==================================================================================================
29.4653 [I A I I ] EMPTY Arrival 29.478
==================================================================================================
29.478 [A A I I ] EMPTY Cntx Swtch In 29.578
==================================================================================================
29.578 [A A I I ] EMPTY Departure 29.6701
==================================================================================================
29.6701 [I A I I ] EMPTY Departure 29.6929
==================================================================================================
29.6929 [I I I I ] EMPTY Arrival 30.8431
==================================================================================================
30.8431 [A I I I ] EMPTY Cntx Swtch In 30.9431
==================================================================================================
30.9431 [A I I I ] EMPTY Arrival 31
==================================================================================================
31 [A A I I ] EMPTY Cntx Swtch In 31.1
==================================================================================================
31.1 [A A I I ] EMPTY Arrival 31.1046
==================================================================================================
31.1046 [A A A I ] EMPTY Cntx Swtch In 31.2046
==================================================================================================
31.2046 [A A A I ] EMPTY Departure 31.3591
==================================================================================================
31.3591 [A A I I ] EMPTY Cntx Swtch Out 31.4431
==================================================================================================
31.4431 [A A I I ] EMPTY Departure 31.4612
==================================================================================================
31.4612 [A I I I ] EMPTY Arrival 31.5071
==================================================================================================
31.5071 [A A I I ] EMPTY Cntx Swtch In 31.5431
==================================================================================================
31.5431 [A A I I ] EMPTY Cntx Swtch In 31.6071
==================================================================================================
31.6071 [A A I I ] EMPTY Departure 31.7236
==================================================================================================
31.7236 [A I I I ] EMPTY Departure 31.9227
==================================================================================================
31.9227 [I I I I ] EMPTY Arrival 31.978
==================================================================================================
31.978 [A I I I ] EMPTY Cntx Swtch In 32.078
==================================================================================================
32.078 [A I I I ] EMPTY Arrival 32.3676
==================================================================================================
32.3676 [A A I I ] EMPTY Cntx Swtch In 32.4676
==================================================================================================
32.4676 [A A I I ] EMPTY Cntx Swtch Out 32.578
==================================================================================================
32.578 [A A I I ] EMPTY Cntx Swtch In 32.678
==================================================================================================
32.678 [A A I I ] EMPTY Departure 32.7387
==================================================================================================
32.7387 [I A I I ] EMPTY Departure 32.7821
==================================================================================================
32.7821 [I I I I ] EMPTY Arrival 32.8449
==================================================================================================
32.8449 [A I I I ] EMPTY Arrival 32.8579
==================================================================================================
32.8579 [A A I I ] EMPTY Cntx Swtch In 32.9449
==================================================================================================
32.9449 [A A I I ] EMPTY Cntx Swtch In 32.9579
==================================================================================================
32.9579 [A A I I ] EMPTY Arrival 32.9667
==================================================================================================
32.9667 [A A A I ] EMPTY Arrival 32.9812
==================================================================================================
32.9812 [A A A A ] EMPTY Cntx Swtch In 33.0667
==================================================================================================
33.0667 [A A A A ] EMPTY Departure 33.0726
==================================================================================================
33.0726 [A I A A ] EMPTY Cntx Swtch In 33.0812
==================================================================================================
33.0812 [A I A A ] EMPTY Departure 33.1569
==================================================================================================
33.1569 [A I A I ] EMPTY Arrival 33.1794
==================================================================================================
33.1794 [A A A I ] EMPTY Cntx Swtch In 33.2794
==================================================================================================
33.2794 [A A A I ] EMPTY Departure 33.3798
==================================================================================================
33.3798 [I A A I ] EMPTY Arrival 33.464
==================================================================================================
33.464 [A A A I ] EMPTY Departure 33.4886
==================================================================================================
33.4886 [A A I I ] EMPTY Cntx Swtch In 33.564
==================================================================================================
33.564 [A A I I ] EMPTY Departure 33.7087
==================================================================================================
33.7087 [A I I I ] EMPTY Departure 33.9235
==================================================================================================
33.9235 [I I I I ] EMPTY Arrival 34.1214
==================================================================================================
34.1214 [A I I I ] EMPTY Cntx Swtch In 34.2214
==================================================================================================
34.2214 [A I I I ] EMPTY Departure 34.5699
==================================================================================================
34.5699 [I I I I ] EMPTY Arrival 34.6929
==================================================================================================
34.6929 [A I I I ] EMPTY Cntx Swtch In 34.7929
==================================================================================================
34.7929 [A I I I ] EMPTY Arrival 35.2439
==================================================================================================
35.2439 [A A I I ] EMPTY Cntx Swtch Out 35.2929
==================================================================================================
35.2929 [A A I I ] EMPTY Arrival 35.3025
==================================================================================================
35.3025 [A A A I ] EMPTY Cntx Swtch In 35.3439
==================================================================================================
35.3439 [A A A I ] EMPTY Arrival 35.3591
==================================================================================================
35.3591 [A A A A ] EMPTY Cntx Swtch In 35.3929
==================================================================================================
35.3929 [A A A A ] EMPTY Cntx Swtch In 35.4025
==================================================================================================
35.4025 [A A A A ] EMPTY Departure 35.4296
==================================================================================================
35.4296 [A A I A ] EMPTY Cntx Swtch In 35.4591
==================================================================================================
35.4591 [A A I A ] EMPTY Arrival 35.4612
==================================================================================================
35.4612 [A A A A ] EMPTY Arrival 35.4653
==================================================================================================
35.4653 [A A A A ] EMPTY Departure 35.4664
==================================================================================================
35.4664 [A A A A ] EMPTY Departure 35.473
==================================================================================================
35.473 [A A A I ] EMPTY Departure 35.4803
==================================================================================================
35.4803 [A I A I ] EMPTY Cntx Swtch In 35.5612
==================================================================================================
35.5612 [A I A I ] EMPTY Cntx Swtch In 35.5653
==================================================================================================
35.5653 [A I A I ] EMPTY Departure 35.6688
==================================================================================================
35.6688 [A I I I ] EMPTY Departure 35.6897
==================================================================================================
35.6897 [I I I I ] EMPTY Arrival 36.1321
==================================================================================================
36.1321 [A I I I ] EMPTY Cntx Swtch In 36.2321
==================================================================================================
36.2321 [A I I I ] EMPTY Departure 36.3115
==================================================================================================
36.3115 [I I I I ] EMPTY Arrival 36.7236
==================================================================================================
36.7236 [A I I I ] EMPTY Cntx Swtch In 36.8236
==================================================================================================
36.8236 [A I I I ] EMPTY Departure 36.8282
==================================================================================================
36.8282 [I I I I ] EMPTY Arrival 37.7821
==================================================================================================
37.7821 [A I I I ] EMPTY Cntx Swtch In 37.8821
==================================================================================================
37.8821 [A I I I ] EMPTY Departure 37.9805
==================================================================================================
37.9805 [I I I I ] EMPTY Arrival 38.6701
==================================================================================================
38.6701 [A I I I ] EMPTY Cntx Swtch In 38.7701
==================================================================================================
38.7701 [A I I I ] EMPTY Departure 38.8039
==================================================================================================
38.8039 [I I I I ] EMPTY Arrival 38.9235
==================================================================================================
38.9235 [A I I I ] EMPTY Cntx Swtch In 39.0235
==================================================================================================
39.0235 [A I I I ] EMPTY Departure 39.1449
==================================================================================================
39.1449 [I I I I ] EMPTY Arrival 39.1569
==================================================================================================
39.1569 [A I I I ] EMPTY Cntx Swtch In 39.2569
==================================================================================================
39.2569 [A I I I ] EMPTY Arrival 39.2966
==================================================================================================
39.2966 [A A I I ] EMPTY Arrival 39.3798
==================================================================================================
39.3798 [A A A I ] EMPTY Cntx Swtch In 39.3966
==================================================================================================
39.3966 [A A A I ] EMPTY Departure 39.4424
==================================================================================================
39.4424 [I A A I ] EMPTY Cntx Swtch In 39.4798
==================================================================================================
39.4798 [I A A I ] EMPTY Departure 39.5382
==================================================================================================
39.5382 [I A I I ] EMPTY Departure 39.6031
==================================================================================================
39.6031 [I I I I ] EMPTY Arrival 39.7387
==================================================================================================
39.7387 [A I I I ] EMPTY Cntx Swtch In 39.8387
==================================================================================================
39.8387 [A I I I ] EMPTY Departure 40.0943
==================================================================================================
40.0943 [I I I I ] EMPTY Arrival 40.3115
==================================================================================================
40.3115 [A I I I ] EMPTY Cntx Swtch In 40.4115
==================================================================================================
40.4115 [A I I I ] EMPTY Departure 40.575
==================================================================================================
40.575 [I I I I ] EMPTY Arrival 40.6688
==================================================================================================
40.6688 [A I I I ] EMPTY Cntx Swtch In 40.7688
==================================================================================================
40.7688 [A I I I ] EMPTY Departure 40.9786
==================================================================================================
40.9786 [I I I I ] EMPTY Arrival 41.7087
==================================================================================================
41.7087 [A I I I ] EMPTY Cntx Swtch In 41.8087
==================================================================================================
41.8087 [A I I I ] EMPTY Arrival 41.8282
==================================================================================================
41.8282 [A A I I ] EMPTY Arrival 41.9227
==================================================================================================
41.9227 [A A A I ] EMPTY Cntx Swtch In 41.9282
==================================================================================================
41.9282 [A A A I ] EMPTY Departure 41.9531
==================================================================================================
41.9531 [A I A I ] EMPTY Cntx Swtch In 42.0227
==================================================================================================
42.0227 [A I A I ] EMPTY Departure 42.1795
==================================================================================================
42.1795 [A I I I ] EMPTY Departure 42.1842
==================================================================================================
42.1842 [I I I I ] EMPTY Arrival 42.4886
==================================================================================================
42.4886 [A I I I ] EMPTY Cntx Swtch In 42.5886
==================================================================================================
42.5886 [A I I I ] EMPTY Departure 42.7856
==================================================================================================
42.7856 [I I I I ] EMPTY Arrival 42.8039
==================================================================================================
42.8039 [A I I I ] EMPTY Cntx Swtch In 42.9039
==================================================================================================
42.9039 [A I I I ] EMPTY Departure 42.9041
==================================================================================================
42.9041 [I I I I ] EMPTY Arrival 43.0726
==================================================================================================
43.0726 [A I I I ] EMPTY Arrival 43.1449
==================================================================================================
43.1449 [A A I I ] EMPTY Cntx Swtch In 43.1726
==================================================================================================
43.1726 [A A I I ] EMPTY Departure 43.1848
==================================================================================================
43.1848 [I A I I ] EMPTY Cntx Swtch In 43.2449
==================================================================================================
43.2449 [I A I I ] EMPTY Departure 43.3898
==================================================================================================
43.3898 [I I I I ] EMPTY Arrival 43.473
==================================================================================================
43.473 [A I I I ] EMPTY Arrival 43.5699
==================================================================================================
43.5699 [A A I I ] EMPTY Cntx Swtch In 43.573
==================================================================================================
43.573 [A A I I ] EMPTY Departure 43.5775
==================================================================================================
43.5775 [I A I I ] EMPTY Cntx Swtch In 43.6699
==================================================================================================
43.6699 [I A I I ] EMPTY Departure 43.7388
==================================================================================================
43.7388 [I I I I ] EMPTY Arrival 44.4296
==================================================================================================
44.4296 [A I I I ] EMPTY Cntx Swtch In 44.5296
==================================================================================================
44.5296 [A I I I ] EMPTY Arrival 44.5382
==================================================================================================
44.5382 [A A I I ] EMPTY Departure 44.6233
==================================================================================================
44.6233 [I A I I ] EMPTY Cntx Swtch In 44.6382
==================================================================================================
44.6382 [I A I I ] EMPTY Departure 45.1277
==================================================================================================
45.1277 [I I I I ] EMPTY Arrival 45.4664
==================================================================================================
45.4664 [A I I I ] EMPTY Arrival 45.4803
==================================================================================================
45.4803 [A A I I ] EMPTY Cntx Swtch In 45.5664
==================================================================================================
45.5664 [A A I I ] EMPTY Cntx Swtch In 45.5803
==================================================================================================
45.5803 [A A I I ] EMPTY Arrival 45.6897
==================================================================================================
45.6897 [A A A I ] EMPTY Departure 45.7012
==================================================================================================
45.7012 [A I A I ] EMPTY Cntx Swtch In 45.7897
==================================================================================================
45.7897 [A I A I ] EMPTY Departure 45.9301
==================================================================================================
45.9301 [I I A I ] EMPTY Arrival 46.1795
==================================================================================================
46.1795 [A I A I ] EMPTY Departure 46.2087
==================================================================================================
46.2087 [A I I I ] EMPTY Cntx Swtch In 46.2795
==================================================================================================
46.2795 [A I I I ] EMPTY Arrival 46.6031
==================================================================================================
46.6031 [A A I I ] EMPTY Cntx Swtch In 46.7031
==================================================================================================
46.7031 [A A I I ] EMPTY Cntx Swtch Out 46.7795
==================================================================================================
46.7795 [A A I I ] EMPTY Departure 46.8115
==================================================================================================
46.8115 [A I I I ] EMPTY Cntx Swtch In 46.8795
==================================================================================================
46.8795 [A I I I ] EMPTY Departure 46.9198
==================================================================================================
46.9198 [I I I I ] EMPTY Arrival 47.4424
==================================================================================================
47.4424 [A I I I ] EMPTY Cntx Swtch In 47.5424
==================================================================================================
47.5424 [A I I I ] EMPTY Departure 47.6179
==================================================================================================
47.6179 [I I I I ] EMPTY Arrival 47.9786
==================================================================================================
47.9786 [A I I I ] EMPTY Arrival 47.9805
==================================================================================================
47.9805 [A A I I ] EMPTY Cntx Swtch In 48.0786
==================================================================================================
48.0786 [A A I I ] EMPTY Cntx Swtch In 48.0805
==================================================================================================
48.0805 [A A I I ] EMPTY Departure 48.1601
==================================================================================================
48.1601 [I A I I ] EMPTY Departure 48.3453
==================================================================================================
48.3453 [I I I I ] EMPTY Arrival 48.575
==================================================================================================
48.575 [A I I I ] EMPTY Cntx Swtch In 48.675
==================================================================================================
48.675 [A I I I ] EMPTY Arrival 48.7388
==================================================================================================
48.7388 [A A I I ] EMPTY Departure 48.7558
==================================================================================================
48.7558 [I A I I ] EMPTY Cntx Swtch In 48.8388
==================================================================================================
48.8388 [I A I I ] EMPTY Departure 48.8397
==================================================================================================
48.8397 [I I I I ] EMPTY Arrival 48.9531
==================================================================================================
48.9531 [A I I I ] EMPTY Cntx Swtch In 49.0531
==================================================================================================
49.0531 [A I I I ] EMPTY Arrival 49.0943
==================================================================================================
49.0943 [A A I I ] EMPTY Departure 49.11
==================================================================================================
49.11 [I A I I ] EMPTY Cntx Swtch In 49.1943
==================================================================================================
49.1943 [I A I I ] EMPTY Departure 49.4653
==================================================================================================
49.4653 [I I I I ] EMPTY Arrival 50.6233
==================================================================================================
50.6233 [A I I I ] EMPTY Cntx Swtch In 50.7233
==================================================================================================
50.7233 [A I I I ] EMPTY Arrival 50.8115
==================================================================================================
50.8115 [A A I I ] EMPTY Departure 50.9014
==================================================================================================
50.9014 [I A I I ] EMPTY Arrival 50.9041
==================================================================================================
50.9041 [A A I I ] EMPTY Cntx Swtch In 50.9115
==================================================================================================
50.9115 [A A I I ] EMPTY Cntx Swtch In 51.0041
==================================================================================================
51.0041 [A A I I ] EMPTY Departure 51.0386
==================================================================================================
51.0386 [A I I I ] EMPTY Departure 51.1305
==================================================================================================
51.1305 [I I I I ] EMPTY Arrival 51.3898
==================================================================================================
51.3898 [A I I I ] EMPTY Cntx Swtch In 51.4898
==================================================================================================
51.4898 [A I I I ] EMPTY Departure 51.5002
==================================================================================================
51.5002 [I I I I ] EMPTY Arrival 52.1842
==================================================================================================
52.1842 [A I I I ] EMPTY Arrival 52.1848
==================================================================================================
52.1848 [A A I I ] EMPTY Cntx Swtch In 52.2842
==================================================================================================
52.2842 [A A I I ] EMPTY Cntx Swtch In 52.2848
==================================================================================================
52.2848 [A A I I ] EMPTY Arrival 52.3453
==================================================================================================
52.3453 [A A A I ] EMPTY Departure 52.4249
==================================================================================================
52.4249 [I A A I ] EMPTY Cntx Swtch In 52.4453
==================================================================================================
52.4453 [I A A I ] EMPTY Departure 52.469
==================================================================================================
52.469 [I I A I ] EMPTY Departure 52.5755
==================================================================================================
52.5755 [I I I I ] EMPTY Arrival 52.6179
==================================================================================================
52.6179 [A I I I ] EMPTY Cntx Swtch In 52.7179
==================================================================================================
52.7179 [A I I I ] EMPTY Arrival 52.7856
==================================================================================================
52.7856 [A A I I ] EMPTY Cntx Swtch In 52.8856
==================================================================================================
52.8856 [A A I I ] EMPTY Arrival 52.9198
==================================================================================================
52.9198 [A A A I ] EMPTY Arrival 52.9301
==================================================================================================
52.9301 [A A A A ] EMPTY Departure 53.0169
==================================================================================================
53.0169 [A I A A ] EMPTY Cntx Swtch In 53.0198
==================================================================================================
53.0198 [A I A A ] EMPTY Cntx Swtch In 53.0301
==================================================================================================
53.0301 [A I A A ] EMPTY Departure 53.0528
==================================================================================================
53.0528 [A I A I ] EMPTY Departure 53.1316
==================================================================================================
53.1316 [A I I I ] EMPTY Departure 53.1533
==================================================================================================
53.1533 [I I I I ] EMPTY Arrival 53.5775
==================================================================================================
53.5775 [A I I I ] EMPTY Cntx Swtch In 53.6775
==================================================================================================
53.6775 [A I I I ] EMPTY Departure 53.7687
==================================================================================================
53.7687 [I I I I ] EMPTY Arrival 54.1277
==================================================================================================
54.1277 [A I I I ] EMPTY Arrival 54.2087
==================================================================================================
54.2087 [A A I I ] EMPTY Cntx Swtch In 54.2277
==================================================================================================
54.2277 [A A I I ] EMPTY Cntx Swtch In 54.3087
==================================================================================================
54.3087 [A A I I ] EMPTY Departure 54.3383
==================================================================================================
54.3383 [I A I I ] EMPTY Departure 54.4283
==================================================================================================
54.4283 [I I I I ] EMPTY Arrival 54.7012
==================================================================================================
54.7012 [A I I I ] EMPTY Cntx Swtch In 54.8012
==================================================================================================
54.8012 [A I I I ] EMPTY Departure 54.892
==================================================================================================
54.892 [I I I I ] EMPTY Arrival 55.1601
==================================================================================================
55.1601 [A I I I ] EMPTY Cntx Swtch In 55.2601
==================================================================================================
55.2601 [A I I I ] EMPTY Departure 55.3533
==================================================================================================
55.3533 [I I I I ] EMPTY Arrival 55.7558
==================================================================================================
55.7558 [A I I I ] EMPTY Arrival 55.8397
==================================================================================================
55.8397 [A A I I ] EMPTY Cntx Swtch In 55.8558
==================================================================================================
55.8558 [A A I I ] EMPTY Cntx Swtch In 55.9397
==================================================================================================
55.9397 [A A I I ] EMPTY Departure 55.95
==================================================================================================
55.95 [I A I I ] EMPTY Arrival 56.0386
==================================================================================================
56.0386 [A A I I ] EMPTY Cntx Swtch In 56.1386
==================================================================================================
56.1386 [A A I I ] EMPTY Departure 56.2596
==================================================================================================
56.2596 [A I I I ] EMPTY Departure 56.5696
==================================================================================================
56.5696 [I I I I ] EMPTY Arrival 57.4653
==================================================================================================
57.4653 [A I I I ] EMPTY Cntx Swtch In 57.5653
==================================================================================================
57.5653 [A I I I ] EMPTY Departure 57.6019
==================================================================================================
57.6019 [I I I I ] EMPTY Arrival 59.11
==================================================================================================
59.11 [A I I I ] EMPTY Cntx Swtch In 59.21
==================================================================================================
59.21 [A I I I ] EMPTY Departure 59.2384
==================================================================================================
59.2384 [I I I I ] EMPTY Arrival 60.9014
==================================================================================================
60.9014 [A I I I ] EMPTY Cntx Swtch In 61.0014
==================================================================================================
61.0014 [A I I I ] EMPTY Departure 61.2525
==================================================================================================
noOfUsers,minRes,maxRes,meanRes,core1,core2,core3,core4,requestDrop,badput,goodput,throughput,cpu
10,0.220207,0.234482,0.22662,0.834038,0.0687259,0.00825653,0.000766111,0,0,1.22007,1.22007,0.2279466353
20,0.222687,0.236562,0.228632,0.762109,0.203703,0.0495719,0.00955323,0,0,2.56583,2.56583,0.2562342825
30,0.222509,0.23989,0.233047,0.742476,0.324445,0.125797,0.0362665,0,0,3.88323,3.88323,0.307246125
40,0.222676,0.234505,0.229202,0.74476,0.406768,0.202944,0.08497,0,0,5.18316,5.18316,0.3598605
50,0.22804,0.234375,0.231227,0.757533,0.487522,0.289509,0.144989,0,0,6.50528,6.50528,0.41988825
60,0.228841,0.233728,0.231025,0.774078,0.544897,0.368823,0.214166,0,0,7.77981,7.77981,0.475491
70,0.227245,0.230698,0.229012,0.795751,0.597925,0.433897,0.279895,0,0,9.11101,9.11101,0.526867
80,0.225441,0.235978,0.231854,0.815452,0.650456,0.499905,0.358475,0,0,10.39,10.39,0.581072
90,0.228656,0.235018,0.230895,0.835634,0.689084,0.563778,0.421747,0,0,11.7176,11.7176,0.62756075
100,0.226655,0.231964,0.229888,0.851056,0.718792,0.60697,0.47681,0,0,12.9832,12.9832,0.663407
110,0.227462,0.234925,0.230467,0.868215,0.758406,0.656162,0.541923,0,0,14.3743,14.3743,0.7061765
120,0.226358,0.231542,0.229212,0.883197,0.777061,0.689958,0.584569,0,0,15.5976,15.5976,0.73369625
130,0.22947,0.23431,0.232467,0.896372,0.807698,0.72745,0.638284,0,0,16.8742,16.8742,0.767451
140,0.230073,0.233299,0.231847,0.912509,0.823839,0.755724,0.674525,0,0,18.211,18.211,0.79164925
150,0.228971,0.232777,0.230775,0.919502,0.84101,0.780526,0.709839,0,0,19.5019,19.5019,0.81271925
160,0.228408,0.233301,0.230896,0.928382,0.855175,0.801105,0.74081,0,0,20.767,20.767,0.831368
170,0.227165,0.232794,0.230457,0.935325,0.869695,0.819798,0.763317,0,0,22.015,22.015,0.84703375
180,0.229477,0.232259,0.231317,0.944964,0.879955,0.840434,0.789193,0,0,23.3659,23.3659,0.8636365
190,0.226491,0.231776,0.23016,0.948041,0.885971,0.850928,0.808069,0,0,24.5844,24.5844,0.87325225
200,0.231244,0.232871,0.232134,0.955632,0.900057,0.866672,0.830417,0,0,25.9258,25.9258,0.8881945
210,0.228782,0.232699,0.231146,0.961193,0.903493,0.876841,0.843313,0,0,27.2028,27.2028,0.89621
220,0.230717,0.232834,0.231941,0.964905,0.908219,0.883887,0.853744,0,0,28.3956,28.3956,0.90268875
230,0.229089,0.232672,0.230734,0.967196,0.914941,0.891154,0.864168,0,0,29.7537,29.7537,0.90936475
240,0.226742,0.232248,0.23011,0.969406,0.917792,0.896636,0.873019,0,0,31.0091,31.0091,0.91421325
250,0.229857,0.232624,0.231448,0.972219,0.923264,0.903955,0.88526,0,0,32.252,32.252,0.9211745
260,0.229013,0.232703,0.230607,0.975119,0.92495,0.90868,0.889407,0,0,33.5738,33.5738,0.924539
270,0.229003,0.232981,0.231614,0.976381,0.929624,0.915216,0.899201,0,0,34.8791,34.8791,0.9301055
280,0.230169,0.233832,0.231665,0.977491,0.933419,0.920235,0.90423,0,0,36.1361,36.1361,0.93384375
290,0.230329,0.23354,0.232083,0.979059,0.932962,0.921021,0.907846,0,0,37.3426,37.3426,0.935222
300,0.232823,0.233792,0.233252,0.980514,0.938672,0.925997,0.915422,0,0,38.7231,38.7231,0.94015125
310,0.232798,0.234656,0.233716,0.981512,0.939536,0.928193,0.918027,0,0,39.9571,39.9571,0.941817
320,0.23065,0.234694,0.232761,0.983378,0.941215,0.932212,0.920744,0,0,41.3265,41.3265,0.94438725
330,0.232367,0.235471,0.234431,0.983031,0.939134,0.930148,0.921705,0,0,42.4835,42.4835,0.9435045
340,0.232686,0.238368,0.2352,0.984315,0.940366,0.931994,0.924242,0,0,43.7282,43.7282,0.94522925
350,0.233949,0.240624,0.237174,0.984739,0.94404,0.934936,0.928643,0,0,45.0989,45.0989,0.9480895
360,0.237259,0.24,0.23859,0.984839,0.943322,0.935311,0.92817,0,0,46.3395,46.3395,0.9479105
370,0.237456,0.24174,0.239402,0.985036,0.944427,0.937184,0.929892,0,0,47.5526,47.5526,0.94913475
380,0.242492,0.244459,0.243222,0.985372,0.943378,0.935363,0.929942,0,0,48.7183,48.7183,0.94851375
390,0.244548,0.249785,0.246093,0.985801,0.944173,0.938036,0.931237,0,0,50.0593,50.0593,0.94981175
400,0.247463,0.251938,0.250132,0.987481,0.946497,0.939733,0.93531,0,0,51.3883,51.3883,0.95225525
410,0.255054,0.25807,0.256374,0.986497,0.94604,0.940069,0.935556,0,0,52.6311,52.6311,0.9520405
420,0.254796,0.267585,0.26055,0.986738,0.945514,0.9398,0.934059,0,0,53.803,53.803,0.95152775
430,0.263313,0.274072,0.268704,0.98676,0.946413,0.939893,0.93649,0,0,54.9952,54.9952,0.952389
440,0.272263,0.284438,0.278676,0.987871,0.948072,0.942119,0.936897,0,0,56.2284,56.2284,0.95373975
450,0.282896,0.291682,0.286878,0.987097,0.946724,0.940379,0.935983,0,0,57.2628,57.2628,0.95254575
460,0.299393,0.311681,0.30399,0.988114,0.947562,0.942298,0.938273,0,0,58.5164,58.5164,0.95406175
470,0.31313,0.333407,0.325465,0.987636,0.949847,0.943326,0.939232,0,0,59.7206,59.7206,0.95501025
480,0.34159,0.38465,0.354914,0.98688,0.950725,0.943424,0.940208,0,0,60.6823,60.6823,0.95530925
490,0.383923,0.406977,0.396941,0.98734,0.949095,0.942524,0.937263,0,0,61.5206,61.5206,0.9540555
500,0.417734,0.455845,0.440373,0.9878,0.950952,0.944697,0.94062,0,0,62.5651,62.5651,0.95601725
510,0.476086,0.525378,0.505103,0.988887,0.950494,0.943712,0.940765,0,0,63.2934,63.2934,0.9559645
520,0.564032,0.620744,0.58456,0.986876,0.950201,0.943302,0.939408,0,0,63.7068,63.7068,0.95494675
530,0.675999,0.702813,0.686731,0.987684,0.952113,0.946546,0.94347,0,0,64.3526,64.3526,0.95745325
540,0.801738,0.842811,0.817496,0.988403,0.951719,0.946248,0.942027,0,0,64.4046,64.4046,0.95709925
550,0.9204,0.981418,0.957391,0.987763,0.952101,0.94714,0.943025,0,0,64.4634,64.4634,0.95750725
560,1.03649,1.08831,1.06411,0.987989,0.951304,0.945965,0.942422,0,0,64.7484,64.7484,0.95692
570,1.1859,1.24752,1.20557,0.988015,0.954791,0.948723,0.945708,0,0,65.0029,65.0029,0.95930925
580,1.30662,1.41054,1.36237,0.988912,0.954058,0.94865,0.945236,0,0,64.8862,64.8862,0.959214
590,1.46838,1.52534,1.50233,0.989544,0.956055,0.950857,0.947483,0,0,65.0162,65.0162,0.96098475
600,1.60934,1.68012,1.65046,0.988243,0.956619,0.952306,0.948669,0,0,65.0736,65.0736,0.96145925
610,1.75461,1.82344,1.78649,0.989342,0.956652,0.952596,0.948715,0,0,65.258,65.258,0.96182625
620,1.88658,1.96418,1.91623,0.989806,0.956047,0.950649,0.948849,0,0,65.2479,65.2479,0.96133775
630,2.00381,2.10542,2.05498,0.989664,0.957521,0.953309,0.94988,0,0,65.3973,65.3973,0.9625935
640,2.15323,2.23983,2.20118,0.989173,0.958919,0.953777,0.95116,0,0,65.4217,65.4217,0.96325725
650,2.2921,2.38669,2.3476,0.98985,0.959761,0.954879,0.951711,0,0,65.472,65.472,0.96405025
660,2.47884,2.52623,2.50663,0.989664,0.959462,0.95527,0.951669,0,0,65.4322,65.4322,0.96401625
670,2.62208,2.70581,2.6614,0.989447,0.961513,0.955606,0.952752,0,0,65.3887,65.3887,0.9648295
680,2.71857,2.81579,2.77155,0.989623,0.960874,0.956956,0.953418,0,0,65.6927,65.6927,0.96521775
690,2.88956,2.94282,2.922,0.990691,0.961688,0.956711,0.954587,0,0,65.6744,65.6744,0.96591925
700,3.0357,3.09404,3.06243,0.99026,0.962116,0.958787,0.954825,0,0,65.7498,65.7498,0.966497
710,3.17442,3.23101,3.19114,0.990585,0.963242,0.959159,0.956288,0,0,65.9132,65.9132,0.9673185
720,3.29838,3.40681,3.33446,0.989939,0.962248,0.958866,0.95595,0,0,65.8975,65.8975,0.96675075
730,3.45069,3.53177,3.48467,0.990379,0.963262,0.959501,0.957481,0,0,65.9095,65.9095,0.96765575
740,3.62877,3.69566,3.65901,0.990664,0.965057,0.961488,0.958912,0,0,65.8548,65.8548,0.96903025
750,3.71416,3.86376,3.7752,0.990539,0.96291,0.959717,0.956791,0,0,65.9078,65.9078,0.96748925
760,3.83712,4.00277,3.91172,0.990368,0.965106,0.96038,0.95835,0,0,66.0512,66.0512,0.968551
770,3.95886,4.08323,4.031,0.991134,0.964528,0.960552,0.957812,0,0,66.1462,66.1462,0.9685065
780,4.17206,4.26004,4.21654,0.990752,0.967539,0.963496,0.961565,0,0,66.0867,66.0867,0.970838
790,4.31171,4.37176,4.34451,0.991666,0.965942,0.962812,0.959966,0,0,66.1421,66.1421,0.9700965
800,4.40352,4.51679,4.47334,0.990845,0.966704,0.963223,0.960774,0,0,66.285,66.285,0.9703865
810,4.61338,4.65437,4.63403,0.991814,0.967001,0.962482,0.960075,0,0,66.1339,66.1339,0.970343
820,4.66808,4.80394,4.76324,0.99125,0.965489,0.962832,0.960329,0,0,66.2302,66.2302,0.969975
830,4.84859,4.97574,4.9075,0.991237,0.967592,0.963824,0.961732,0,0,66.3091,66.3091,0.97109625
840,4.96709,5.12903,5.04618,0.991882,0.967012,0.964048,0.961749,0,0,66.2836,66.2836,0.97117275
850,5.12468,5.26232,5.19407,0.991167,0.969438,0.965685,0.963361,0,0,66.4561,66.4561,0.97241275
860,5.29636,5.40946,5.35365,0.991544,0.968271,0.965149,0.963402,0,0,66.3309,66.3309,0.9720915
870,5.43426,5.55093,5.48794,0.991786,0.968743,0.965532,0.962778,0,0,66.3308,66.3308,0.97220975
880,5.56333,5.70187,5.65476,0.991761,0.970132,0.966985,0.964232,0,0,66.3531,66.3531,0.9732775
890,5.72122,5.83156,5.77222,0.991845,0.969281,0.965392,0.96382,0,0,66.4491,66.4491,0.9725845
900,5.87207,5.95099,5.91875,0.992206,0.968083,0.964057,0.962487,0,0,66.3392,66.3392,0.97170825
910,6.01751,6.06956,6.03946,0.991687,0.969325,0.966785,0.965193,0,0,66.5803,66.5803,0.9732475
920,6.17262,6.23456,6.20619,0.991454,0.970111,0.966413,0.964377,4.4,0,66.4005,66.4005,0.97308875
930,6.01523,6.33222,6.25351,0.992046,0.969131,0.966035,0.964283,9.6,0,66.5233,66.5233,0.97287375
940,6.34564,6.49615,6.39759,0.99283,0.971093,0.96781,0.965943,15,0,66.5095,66.5095,0.974419
950,6.30666,6.42539,6.38068,0.992439,0.969538,0.967382,0.965096,24.8,0,66.5675,66.5675,0.97361375
960,6.25791,6.49989,6.39004,0.992369,0.970657,0.968507,0.965753,32.2,0,66.5272,66.5272,0.9743215
970,6.3968,6.52706,6.43809,0.992172,0.97105,0.967447,0.965632,42,0,66.7096,66.7096,0.97407525
980,6.39718,6.43661,6.41069,0.99228,0.971458,0.968122,0.966381,62.8,0,66.5944,66.5944,0.97456025
990,6.14022,6.53513,6.36693,0.992138,0.970894,0.968266,0.966358,61,0,66.8509,66.8509,0.974414
1000,6.28789,6.54063,6.40295,0.992327,0.972351,0.968734,0.966779,75.6,0,66.6914,66.6914,0.97504775
\ No newline at end of file
noOfUsers,minRes,maxRes,meanRes,core1,core2,core3,core4,requestDrop,badput,goodput,throughput,noOfUsers,cpu,,minResRR,maxResRR,meanResRR,core1RR,core2RR,core3RR,core4RR,requestDropRR,badputRR,goodputRR,throughputRR,cpuRR
10,0.228463,0.238947,0.231439,0.801625,0.0753205,0.00810541,0.000591654,0,0,1.22515,1.22515,10,0.221410641,,0.230213,0.242785,0.235491,0.832345,0.0725517,0.00928128,0.000845173,0,0,1.22701,1.22701,0.221410641
20,0.22122,0.235257,0.227464,0.742305,0.200251,0.0464962,0.00906071,0,0,2.57086,2.57086,20,0.2495282275,,0.234928,0.250982,0.240965,0.767871,0.204056,0.0548834,0.0114769,0,0,2.55916,2.55916,0.2495282275
30,0.223306,0.234842,0.228859,0.732573,0.316717,0.117468,0.0371587,0,0,3.86467,3.86467,30,0.300979175,,0.229394,0.24721,0.24008,0.750708,0.318938,0.132811,0.0423925,0,0,3.86876,3.86876,0.300979175
40,0.227682,0.236584,0.231675,0.73752,0.412426,0.203194,0.0834648,0,0,5.18858,5.18858,40,0.3591512,,0.23697,0.24545,0.242542,0.75225,0.41611,0.219156,0.0969871,0,0,5.18435,5.18435,0.3591512
50,0.224651,0.238717,0.230278,0.752754,0.489812,0.291135,0.137301,0,0,6.51125,6.51125,50,0.4177505,,0.238482,0.243394,0.240262,0.765633,0.494566,0.30059,0.150552,0,0,6.49836,6.49836,0.4177505
60,0.225517,0.233745,0.229173,0.774828,0.544709,0.365734,0.20759,0,0,7.76782,7.76782,60,0.47321525,,0.239449,0.245472,0.242192,0.788831,0.56521,0.383191,0.230475,0,0,7.79104,7.79104,0.47321525
70,0.225768,0.228571,0.22704,0.790215,0.598392,0.429265,0.274563,0,0,9.08526,9.08526,70,0.52310875,,0.239696,0.244533,0.243257,0.808606,0.620928,0.460702,0.30563,0,0,9.10557,9.10557,0.52310875
80,0.228904,0.232205,0.230276,0.809997,0.652809,0.505637,0.356028,0,0,10.4338,10.4338,80,0.58111775,,0.237377,0.239517,0.239016,0.824358,0.65565,0.514515,0.366948,0,0,10.388,10.388,0.58111775
90,0.228482,0.232532,0.230415,0.831816,0.687411,0.55679,0.422944,0,0,11.6725,11.6725,90,0.62474025,,0.237759,0.245296,0.242158,0.845448,0.702974,0.578556,0.452338,0,0,11.7298,11.7298,0.62474025
100,0.227869,0.234367,0.230834,0.853134,0.726352,0.612352,0.484825,0,0,12.9953,12.9953,100,0.66916575,,0.239827,0.244577,0.241581,0.861907,0.736368,0.623384,0.502485,0,0,12.9608,12.9608,0.66916575
110,0.225694,0.232056,0.228934,0.864676,0.752753,0.650303,0.537734,0,0,14.2952,14.2952,110,0.7013665,,0.237764,0.241998,0.240644,0.875385,0.761637,0.667714,0.559025,0,0,14.2749,14.2749,0.7013665
120,0.227572,0.231733,0.229618,0.884077,0.774884,0.691289,0.585344,0,0,15.5768,15.5768,120,0.7338985,,0.239039,0.242599,0.240839,0.891255,0.790684,0.706849,0.606778,0,0,15.5731,15.5731,0.7338985
130,0.227577,0.23092,0.229706,0.897943,0.801286,0.721845,0.631417,0,0,16.8522,16.8522,130,0.76312275,,0.238335,0.24311,0.24074,0.901261,0.810892,0.736067,0.65351,0,0,16.9041,16.9041,0.76312275
140,0.224144,0.233442,0.228529,0.908114,0.819415,0.749546,0.666943,0,0,18.1627,18.1627,140,0.7860045,,0.238855,0.24467,0.240784,0.911485,0.832042,0.765259,0.691871,0,0,18.1923,18.1923,0.7860045
150,0.226535,0.232798,0.230159,0.917676,0.838797,0.779858,0.706456,0,0,19.4885,19.4885,150,0.81069675,,0.239809,0.246331,0.242064,0.922423,0.845311,0.790526,0.726371,0,0,19.4519,19.4519,0.81069675
160,0.226216,0.232935,0.230396,0.92661,0.854288,0.797757,0.736746,0,0,20.7315,20.7315,160,0.82885025,,0.238436,0.244068,0.241053,0.929879,0.859493,0.812542,0.752992,0,0,20.7219,20.7219,0.82885025
170,0.228723,0.233134,0.230542,0.934541,0.867609,0.820809,0.767031,0,0,22.0411,22.0411,170,0.8474975,,0.239102,0.242061,0.240634,0.93837,0.872196,0.830314,0.777548,0,0,22.0254,22.0254,0.8474975
180,0.229713,0.232345,0.231044,0.94252,0.876047,0.836695,0.78857,0,0,23.2792,23.2792,180,0.860958,,0.239466,0.244187,0.24114,0.94315,0.881387,0.846517,0.803128,0,0,23.2587,23.2587,0.860958
190,0.227878,0.231244,0.229859,0.949445,0.890827,0.854,0.809492,0,0,24.6956,24.6956,190,0.875941,,0.239468,0.242928,0.241492,0.948516,0.889308,0.854636,0.819263,0,0,24.6157,24.6157,0.875941
200,0.228041,0.230753,0.229656,0.952479,0.896676,0.867122,0.826395,0,0,25.9148,25.9148,200,0.885668,,0.239889,0.243,0.241649,0.951227,0.894807,0.870265,0.836435,0,0,25.8282,25.8282,0.885668
210,0.227539,0.23079,0.229549,0.956434,0.902978,0.873366,0.840667,0,0,27.1703,27.1703,210,0.89336125,,0.240848,0.242408,0.241615,0.955463,0.906512,0.881212,0.851085,0,0,27.2617,27.2617,0.89336125
220,0.229826,0.231252,0.230305,0.962616,0.911887,0.88665,0.857285,0,0,28.5622,28.5622,220,0.9046095,,0.238465,0.242087,0.240878,0.958729,0.910047,0.884872,0.860477,0,0,28.4773,28.4773,0.9046095
230,0.227838,0.23095,0.22955,0.966976,0.914974,0.892222,0.865971,0,0,29.748,29.748,230,0.91003575,,0.237221,0.244427,0.241511,0.96125,0.913586,0.893578,0.872662,0,0,29.6896,29.6896,0.91003575
240,0.228752,0.231466,0.229894,0.970086,0.919433,0.897189,0.873283,0,0,31.0077,31.0077,240,0.91499775,,0.240081,0.242453,0.241459,0.963039,0.916365,0.898358,0.879663,0,0,31.0286,31.0286,0.91499775
250,0.228812,0.23113,0.230108,0.972769,0.923811,0.905874,0.885585,0,0,32.3266,32.3266,250,0.92200975,,0.239848,0.242372,0.240851,0.965138,0.920569,0.903399,0.887639,0,0,32.3197,32.3197,0.92200975
260,0.228124,0.231439,0.229944,0.974811,0.929043,0.912612,0.895088,0,0,33.6701,33.6701,260,0.9278885,,0.241738,0.243088,0.242257,0.96546,0.923663,0.909824,0.894643,0,0,33.611,33.611,0.9278885
270,0.227391,0.23235,0.230665,0.976517,0.93204,0.915846,0.899897,0,0,34.9012,34.9012,270,0.931075,,0.241322,0.244032,0.242485,0.967686,0.922089,0.908897,0.89665,0,0,34.7572,34.7572,0.931075
280,0.228255,0.232812,0.230743,0.976084,0.932424,0.917648,0.901827,0,0,36.0997,36.0997,280,0.93199575,,0.241216,0.243978,0.242527,0.96894,0.927037,0.915074,0.903593,0,0,36.123,36.123,0.93199575
290,0.228881,0.234237,0.231323,0.978675,0.934517,0.922395,0.909523,0,0,37.3924,37.3924,290,0.9362775,,0.240961,0.243463,0.242524,0.968562,0.925639,0.916877,0.904251,0,0,37.3464,37.3464,0.9362775
300,0.229512,0.23341,0.231267,0.980515,0.938056,0.925628,0.913563,0,0,38.7325,38.7325,300,0.9394405,,0.240897,0.244993,0.242707,0.970557,0.9285,0.918721,0.909562,0,0,38.635,38.635,0.9394405
310,0.230805,0.23314,0.232293,0.981466,0.937225,0.926391,0.915883,0,0,39.9077,39.9077,310,0.94024125,,0.242623,0.244481,0.243487,0.970272,0.927166,0.919234,0.911823,0,0,39.8331,39.8331,0.94024125
320,0.231186,0.23319,0.232424,0.982581,0.94238,0.931894,0.922687,0,0,41.2753,41.2753,320,0.9448855,,0.242833,0.246545,0.244193,0.970559,0.93188,0.922917,0.914548,0,0,41.1857,41.1857,0.9448855
330,0.230923,0.236147,0.233494,0.983129,0.942818,0.934123,0.924967,0,0,42.5848,42.5848,330,0.94625925,,0.24224,0.247462,0.24542,0.97114,0.929249,0.920195,0.913519,0,0,42.4169,42.4169,0.94625925
340,0.232013,0.236749,0.234199,0.984506,0.942192,0.933937,0.925488,0,0,43.7245,43.7245,340,0.94653075,,0.246159,0.248849,0.246916,0.971554,0.930789,0.922299,0.916477,0,0,43.653,43.653,0.94653075
350,0.231713,0.234729,0.233489,0.985246,0.944972,0.935188,0.927309,0,0,45.0913,45.0913,350,0.94817875,,0.244805,0.252067,0.247848,0.971063,0.931025,0.924461,0.917063,0,0,44.9007,44.9007,0.94817875
360,0.232347,0.238017,0.235562,0.984173,0.944279,0.934244,0.928169,0,0,46.3021,46.3021,360,0.94771625,,0.249931,0.257013,0.253707,0.970902,0.930425,0.923748,0.91912,0,0,46.1146,46.1146,0.94771625
370,0.233584,0.242415,0.238485,0.985065,0.944552,0.937402,0.930233,0,0,47.5023,47.5023,370,0.949313,,0.251645,0.257151,0.254029,0.971668,0.930577,0.924707,0.919847,0,0,47.4818,47.4818,0.949313
380,0.236855,0.243779,0.240576,0.98593,0.94683,0.938443,0.932207,0,0,48.7659,48.7659,380,0.9508525,,0.259556,0.260698,0.260072,0.972294,0.933147,0.926751,0.923041,0,0,48.7589,48.7589,0.9508525
390,0.240403,0.245702,0.242636,0.987582,0.945558,0.937383,0.931868,0,0,50.0315,50.0315,390,0.95059775,,0.261231,0.26341,0.262025,0.971438,0.932102,0.926404,0.921905,0,0,49.9382,49.9382,0.95059775
400,0.243861,0.253997,0.248142,0.986476,0.947464,0.940136,0.934351,0,0,51.296,51.296,400,0.95210675,,0.265886,0.272408,0.269495,0.970633,0.931172,0.925578,0.921796,0,0,51.1419,51.1419,0.95210675
410,0.249389,0.256971,0.252672,0.985837,0.950336,0.942888,0.936999,0,0,52.6371,52.6371,410,0.954015,,0.271958,0.282089,0.277116,0.971333,0.932525,0.925477,0.92252,0,0,52.3416,52.3416,0.954015
420,0.250024,0.261938,0.257478,0.987729,0.947095,0.941444,0.935737,0,0,53.7759,53.7759,420,0.95300125,,0.271623,0.297832,0.283592,0.971813,0.935929,0.929095,0.92451,0,0,53.738,53.738,0.95300125
430,0.261671,0.268036,0.264752,0.98726,0.950097,0.942641,0.938786,0,0,55.0504,55.0504,430,0.954696,,0.288876,0.300771,0.294646,0.97108,0.934426,0.928076,0.923804,0,0,54.8396,54.8396,0.954696
440,0.274322,0.282148,0.278752,0.98804,0.949349,0.942048,0.938142,0,0,56.1207,56.1207,440,0.95439475,,0.313655,0.327141,0.320416,0.970397,0.930978,0.925058,0.921598,0,0,55.8319,55.8319,0.95439475
450,0.277832,0.293559,0.287396,0.98857,0.950686,0.944816,0.940616,0,0,57.4873,57.4873,450,0.956172,,0.329125,0.363192,0.344132,0.971108,0.93312,0.925673,0.922954,0,0,57.0159,57.0159,0.956172
460,0.294724,0.310641,0.300963,0.987411,0.949327,0.943337,0.938987,0,0,58.5492,58.5492,460,0.9547655,,0.352404,0.362664,0.357487,0.970462,0.933818,0.927021,0.922883,0,0,58.1261,58.1261,0.9547655
470,0.30485,0.327852,0.317538,0.987955,0.951408,0.945383,0.939508,0,0,59.676,59.676,470,0.9560635,,0.402856,0.411729,0.406474,0.970645,0.931005,0.924968,0.922311,0,0,58.9359,58.9359,0.9560635
480,0.332251,0.34884,0.340096,0.988391,0.950464,0.944228,0.939893,0,0,60.7516,60.7516,480,0.955744,,0.45225,0.470003,0.462721,0.970307,0.934529,0.927654,0.924351,0,0,59.9286,59.9286,0.955744
490,0.369829,0.397494,0.38106,0.988737,0.950644,0.944578,0.940363,0,0,61.6728,61.6728,490,0.9560805,,0.50951,0.562489,0.531183,0.971561,0.932313,0.927801,0.922535,0,0,60.5633,60.5633,0.9560805
500,0.401439,0.430288,0.417895,0.987377,0.951747,0.945637,0.940976,0,0,62.6812,62.6812,500,0.95643425,,0.600167,0.631741,0.617963,0.970218,0.933536,0.927744,0.924579,0,0,61.1162,61.1162,0.95643425
510,0.497734,0.527332,0.507455,0.988207,0.952204,0.945789,0.941825,0,0,63.1674,63.1674,510,0.95700625,,0.657102,0.74343,0.711441,0.970845,0.935553,0.930179,0.92624,0,0,61.7085,61.7085,0.95700625
520,0.554077,0.591618,0.573751,0.989359,0.950105,0.943551,0.94,0,0,63.7259,63.7259,520,0.95575375,,0.808741,0.908326,0.85809,0.970283,0.935168,0.929287,0.926134,0,0,61.7833,61.7833,0.95575375
530,0.654667,0.702793,0.679623,0.989616,0.955319,0.948122,0.943384,0,0,64.3138,64.3138,530,0.95911025,,0.932283,1.03425,0.986917,0.970035,0.932781,0.928898,0.924266,0,0,61.8612,61.8612,0.95911025
540,0.732468,0.807664,0.783333,0.989234,0.952861,0.947621,0.944223,0,0,64.6795,64.6795,540,0.95848475,,1.12172,1.18411,1.15046,0.971175,0.936512,0.931684,0.928471,0,0,61.97,61.97,0.95848475
550,0.853321,0.974895,0.898474,0.988744,0.952991,0.947955,0.945199,0,0,64.8313,64.8313,550,0.95872225,,1.24307,1.27671,1.25365,0.970094,0.938628,0.933735,0.929252,0,0,62.4666,62.4666,0.95872225
560,1.00379,1.07285,1.03742,0.989185,0.955322,0.950413,0.946337,0,0,65.0824,65.0824,560,0.96031425,,1.36968,1.45962,1.41829,0.971819,0.937669,0.931313,0.928951,0,0,62.2938,62.2938,0.96031425
570,1.17517,1.18148,1.17866,0.989447,0.955119,0.949749,0.946268,0,0,65.0812,65.0812,570,0.96014575,,1.4907,1.58292,1.53124,0.970569,0.937217,0.931414,0.928591,0,0,62.5505,62.5505,0.96014575
580,1.31058,1.37162,1.33871,0.99058,0.958839,0.953038,0.950107,0,0,65.2812,65.2812,580,0.963141,,1.6195,1.71119,1.68144,0.972156,0.938616,0.934777,0.931946,0,0,62.7311,62.7311,0.963141
590,1.42,1.49476,1.46176,0.989557,0.95816,0.951449,0.948646,0,0,65.3296,65.3296,590,0.961953,,1.78489,1.86348,1.84139,0.972072,0.941343,0.936069,0.932606,0,0,62.7445,62.7445,0.961953
600,1.51195,1.64682,1.60151,0.989823,0.958649,0.9527,0.949741,0,0,65.3881,65.3881,600,0.96272825,,1.97512,2.07078,2.0129,0.972143,0.938641,0.93412,0.93144,0,0,62.5136,62.5136,0.96272825
610,1.68139,1.78551,1.74742,0.989809,0.955535,0.951811,0.949231,0,0,65.3359,65.3359,610,0.9615965,,2.11853,2.18919,2.14462,0.971462,0.94116,0.935939,0.932973,0,0,62.7298,62.7298,0.9615965
620,1.82475,1.94473,1.89327,0.990924,0.961142,0.956291,0.952978,0,0,65.5681,65.5681,620,0.96533375,,2.24908,2.34624,2.31376,0.971871,0.941197,0.936197,0.934042,0,0,62.6853,62.6853,0.96533375
630,1.99581,2.07955,2.04302,0.990418,0.959089,0.95362,0.950894,0,0,65.3665,65.3665,630,0.96350525,,2.40612,2.49284,2.4556,0.97181,0.942161,0.93873,0.935036,0,0,62.8171,62.8171,0.96350525
640,2.1136,2.2238,2.1599,0.990505,0.960355,0.954693,0.951624,0,0,65.647,65.647,640,0.96429425,,2.57246,2.61864,2.589,0.9723,0.941643,0.937612,0.933933,0,0,62.8697,62.8697,0.96429425
650,2.2761,2.33954,2.30896,0.990121,0.960965,0.956838,0.953707,0,0,65.7678,65.7678,650,0.96540775,,2.70453,2.82396,2.779,0.971694,0.943398,0.938978,0.936741,0,0,62.78,62.78,0.96540775
660,2.36537,2.52797,2.45099,0.990579,0.963038,0.957968,0.955508,0,0,65.8202,65.8202,660,0.96677325,,2.85922,2.94274,2.91461,0.972252,0.942379,0.938063,0.935319,0,0,62.8118,62.8118,0.96677325
670,2.57573,2.61305,2.59161,0.991672,0.960774,0.956658,0.953354,0,0,65.7772,65.7772,670,0.9656145,,3.01173,3.0877,3.04514,0.972778,0.942985,0.939369,0.936931,0,0,62.9922,62.9922,0.9656145
680,2.67157,2.80179,2.73418,0.991123,0.96363,0.959515,0.955978,0,0,65.9181,65.9181,680,0.9675615,,3.12737,3.24137,3.19655,0.972767,0.943719,0.939444,0.936637,0,0,63.0275,63.0275,0.9675615
690,2.82806,2.90738,2.87116,0.992146,0.96428,0.959203,0.957533,0,0,66.0488,66.0488,690,0.9682905,,3.31891,3.40316,3.3684,0.972838,0.944453,0.940597,0.937677,0,0,62.9591,62.9591,0.9682905
700,3.00751,3.09821,3.04525,0.991681,0.963371,0.959025,0.956399,0,0,65.8611,65.8611,700,0.967619,,3.41567,3.52096,3.48539,0.972992,0.945246,0.940955,0.938022,0,0,63.1819,63.1819,0.967619
710,3.09578,3.21271,3.15461,0.99205,0.962868,0.958794,0.956487,0,0,66.004,66.004,710,0.96754975,,3.60324,3.68528,3.63309,0.972956,0.944927,0.939861,0.93757,0,0,63.1208,63.1208,0.96754975
720,3.26735,3.35913,3.29475,0.991398,0.965293,0.960317,0.957552,0,0,66.1067,66.1067,720,0.96864,,3.76555,3.83927,3.80124,0.973361,0.948052,0.944176,0.941774,0,0,63.2331,63.2331,0.96864
730,3.39133,3.44498,3.41977,0.991788,0.965199,0.960673,0.957637,0,0,66.2553,66.2553,730,0.96882425,,3.86854,3.96921,3.93006,0.973652,0.94677,0.943245,0.940708,0,0,63.3597,63.3597,0.96882425
740,3.52247,3.60202,3.55748,0.991937,0.965146,0.961207,0.958782,0,0,66.3413,66.3413,740,0.969268,,4.03156,4.16734,4.09056,0.97296,0.947759,0.943553,0.941776,0,0,63.3332,63.3332,0.969268
750,3.62524,3.76526,3.68225,0.992484,0.965685,0.961507,0.959261,0,0,66.5198,66.5198,750,0.96973425,,4.17896,4.2835,4.23455,0.973635,0.94755,0.943992,0.941213,0,0,63.3794,63.3794,0.96973425
760,3.83775,3.89981,3.85931,0.991921,0.965946,0.962271,0.960454,0,0,66.3351,66.3351,760,0.970148,,4.39668,4.42659,4.40746,0.973399,0.949319,0.945264,0.942523,0,0,63.3141,63.3141,0.970148
770,3.97638,4.109,4.03469,0.991928,0.968311,0.963768,0.96161,0,0,66.2482,66.2482,770,0.97140425,,4.47566,4.62525,4.54464,0.973082,0.947498,0.943754,0.942265,0,0,63.3399,63.3399,0.97140425
780,4.0956,4.17504,4.1395,0.992056,0.968137,0.963545,0.961143,0,0,66.4311,66.4311,780,0.97122025,,4.68251,4.72761,4.70632,0.973552,0.949652,0.946382,0.94371,0,0,63.3957,63.3957,0.97122025
790,4.23135,4.31338,4.27808,0.992017,0.967419,0.963391,0.960525,0,0,66.443,66.443,790,0.970838,,4.7649,4.87834,4.8218,0.973806,0.948636,0.944696,0.942967,0,0,63.4966,63.4966,0.970838
800,4.39899,4.46051,4.43528,0.992127,0.967836,0.964425,0.962224,0,0,66.4256,66.4256,800,0.971653,,4.9309,5.05608,5.00013,0.97318,0.948226,0.94525,0.942962,0,0,63.3896,63.3896,0.971653
810,4.51705,4.65623,4.5977,0.992173,0.968094,0.964843,0.962761,0,0,66.3686,66.3686,810,0.97196775,,5.06669,5.16223,5.12625,0.973253,0.950618,0.946514,0.944829,0,0,63.617,63.617,0.97196775
820,4.70314,4.78043,4.73467,0.993647,0.97088,0.966282,0.963498,0,0,66.4862,66.4862,820,0.97357675,,5.20143,5.33377,5.29454,0.97334,0.950555,0.947062,0.944883,0,0,63.5413,63.5413,0.97357675
830,4.80296,4.86673,4.84125,0.99299,0.968361,0.964802,0.96294,0,0,66.6129,66.6129,830,0.97227325,,5.36061,5.46554,5.42179,0.974088,0.949601,0.946311,0.944496,0,0,63.6094,63.6094,0.97227325
840,4.9509,5.03693,4.99434,0.993044,0.970101,0.966368,0.963861,0,0,66.6444,66.6444,840,0.9733435,,5.52857,5.66349,5.59471,0.973822,0.950117,0.947821,0.944826,0,0,63.5569,63.5569,0.9733435
850,5.08359,5.17431,5.13324,0.992964,0.970965,0.966998,0.964389,0,0,66.6837,66.6837,850,0.973829,,5.67652,5.76357,5.71252,0.973963,0.952146,0.948272,0.94585,0,0,63.8316,63.8316,0.973829
860,5.251,5.30939,5.28472,0.992989,0.96998,0.966317,0.964338,0,0,66.6337,66.6337,860,0.973406,,5.82742,5.94608,5.86929,0.973767,0.951757,0.948419,0.946275,0,0,63.7629,63.7629,0.973406
870,5.41809,5.46564,5.44491,0.992925,0.971196,0.967609,0.965432,0,0,66.6098,66.6098,870,0.9742905,,5.99911,6.0505,6.02711,0.973912,0.951679,0.948368,0.946616,0,0,63.7439,63.7439,0.9742905
880,5.55863,5.60987,5.58757,0.993109,0.970885,0.96767,0.965506,0,0,66.6266,66.6266,880,0.9742925,,6.13965,6.25596,6.20809,0.974237,0.951618,0.947755,0.945924,0,0,63.5652,63.5652,0.9742925
890,5.65297,5.77583,5.71987,0.993248,0.970276,0.966932,0.964739,0,0,66.6447,66.6447,890,0.97379875,,6.30507,6.35274,6.32629,0.9737,0.95154,0.947861,0.94595,0,0,63.7208,63.7208,0.97379875
900,5.8317,5.87403,5.85635,0.994004,0.972231,0.968824,0.966423,0,0,66.7774,66.7774,900,0.9753705,,6.4692,6.52066,6.49862,0.974505,0.952722,0.949717,0.948225,0,0,63.7071,63.7071,0.9753705
910,5.96381,6.04628,5.99762,0.993806,0.97163,0.968146,0.966316,0,0,66.7363,66.7363,910,0.9749745,,6.53384,6.63926,6.607,0.973665,0.952351,0.948685,0.946805,3.6,0,63.777,63.777,0.9749745
920,6.12598,6.20864,6.1519,0.993646,0.971282,0.967961,0.966172,0,0,66.7024,66.7024,920,0.97476525,,6.62892,6.73393,6.70504,0.974363,0.953446,0.950329,0.948818,11.2,0,63.7274,63.7274,0.97476525
930,6.1997,6.31527,6.27246,0.993618,0.971657,0.968678,0.966797,4.2,0,66.7921,66.7921,930,0.9751875,,6.60341,6.82302,6.70264,0.974011,0.953158,0.950147,0.948048,21.6,0,63.7872,63.7872,0.9751875
940,6.19379,6.39503,6.28073,0.993672,0.97238,0.968988,0.967274,13.4,0,66.8637,66.8637,940,0.9755785,,6.52945,6.87217,6.70964,0.974501,0.95484,0.952074,0.950096,34,0,63.9328,63.9328,0.9755785
950,6.28415,6.43388,6.34471,0.99339,0.972076,0.968253,0.967112,21.4,0,66.9057,66.9057,950,0.97520775,,6.67263,6.79346,6.70941,0.973896,0.953621,0.950732,0.948883,38.6,0,64.1105,64.1105,0.97520775
960,6.37756,6.48747,6.43929,0.993721,0.972056,0.969118,0.966948,23.6,0,66.6964,66.6964,960,0.97546075,,6.47803,6.7756,6.6851,0.974184,0.954327,0.951226,0.949077,51.6,0,63.9271,63.9271,0.97546075
970,6.35329,6.42483,6.38989,0.993639,0.973702,0.970885,0.969091,40.6,0,67.0086,67.0086,970,0.97682925,,6.57578,6.7784,6.69546,0.973918,0.954828,0.951373,0.950043,57.8,0,64.1351,64.1351,0.97682925
980,6.18489,6.44004,6.34348,0.993853,0.974043,0.971215,0.968899,50.6,0,67.1706,67.1706,980,0.9770025,,6.7068,6.79102,6.75535,0.97442,0.954815,0.951882,0.949417,67.2,0,64.0367,64.0367,0.9770025
990,6.29353,6.50975,6.40349,0.994164,0.974406,0.971666,0.970013,59,0,67.1179,67.1179,990,0.97756225,,6.665,6.8186,6.75297,0.974236,0.954157,0.950929,0.949213,79.8,0,63.9264,63.9264,0.97756225
1000,6.32727,6.56787,6.41687,0.994022,0.973881,0.970703,0.968762,68,275102,-129443,67.17,1000,0.976842,,6.53379,6.78981,6.72069,0.974359,0.955267,0.952407,0.951092,88.2,0,64.1295,64.1295,0.976842
\ No newline at end of file
noOfUsers,minRes,maxRes,meanRes,core1,core2,core3,core4,requestDrop,badput,goodput,throughput,cpu
10,0.21901,0.243883,0.233182,0.805677,0.076234,0.00855713,0.000518023,0,0,1.21748,1.21748,0.2227465383
20,0.226544,0.236564,0.230273,0.742093,0.201199,0.0532654,0.00980034,0,0,2.54621,2.54621,0.251589435
30,0.225707,0.236013,0.230772,0.732718,0.311681,0.127541,0.0421137,0,0,3.87693,3.87693,0.303513425
40,0.228662,0.234167,0.230818,0.736387,0.407038,0.209631,0.0889299,0,0,5.1883,5.1883,0.360496475
50,0.233259,0.242409,0.236152,0.749038,0.490878,0.303067,0.162786,0,0,6.51467,6.51467,0.42644225
60,0.24095,0.247025,0.244619,0.773868,0.565191,0.393765,0.252824,0,0,7.79757,7.79757,0.496412
70,0.246093,0.25787,0.252141,0.794962,0.620661,0.474652,0.344648,0,0,9.09754,9.09754,0.55873075
80,0.262486,0.285597,0.273537,0.826342,0.683261,0.565208,0.446355,0,0,10.3707,10.3707,0.6302915
90,0.288484,0.312569,0.303445,0.852831,0.742128,0.65094,0.552076,0,0,11.6026,11.6026,0.69949375
100,0.333756,0.350957,0.341611,0.885191,0.79173,0.724758,0.651196,0,0,12.8202,12.8202,0.76321875
110,0.408122,0.45408,0.425211,0.915599,0.841684,0.792662,0.743167,0,0,13.9283,13.9283,0.823278
120,0.526017,0.597432,0.555766,0.945003,0.89086,0.862233,0.829215,0,0,14.9579,14.9579,0.88182775
130,0.748353,0.901675,0.811233,0.970403,0.921909,0.906527,0.891269,0,0,15.6737,15.6737,0.922527
140,1.08948,1.23558,1.15908,0.983054,0.946023,0.93901,0.931381,0,0,16.2131,16.2131,0.949867
150,1.53331,1.70765,1.61738,0.988401,0.953302,0.949061,0.944992,0,0,16.4888,16.4888,0.958939
160,2.09587,2.30225,2.18027,0.991474,0.961476,0.957452,0.955189,0,0,16.575,16.575,0.96639775
170,2.63076,2.91285,2.76266,0.991307,0.962575,0.958999,0.956506,0,0,16.5959,16.5959,0.96734675
180,3.17136,3.3598,3.2934,0.99218,0.965827,0.962147,0.960217,0,0,16.6928,16.6928,0.97009275
190,3.82178,3.92523,3.88201,0.992385,0.967201,0.963469,0.961854,0,0,16.6804,16.6804,0.97122725
200,4.35326,4.54425,4.48198,0.992931,0.968512,0.965488,0.963191,0,0,16.6855,16.6855,0.9725305
210,4.86768,5.08705,4.98898,0.993599,0.969895,0.966961,0.965141,0,0,16.7906,16.7906,0.973899
220,5.46273,5.71483,5.60345,0.993039,0.971955,0.96899,0.96709,0,0,16.7524,16.7524,0.9752685
230,6.01813,6.40005,6.16312,0.994252,0.973267,0.970364,0.969003,0,0,16.7977,16.7977,0.9767215
240,6.69106,6.84031,6.74458,0.994302,0.973858,0.971389,0.969741,0,0,16.8047,16.8047,0.9773225
250,7.23799,7.41588,7.32073,0.994294,0.975301,0.972594,0.970456,0,0,16.8259,16.8259,0.97816125
260,7.7166,7.88195,7.79278,0.994474,0.975863,0.972895,0.971609,0,0,16.9458,16.9458,0.97871025
270,8.32946,8.52843,8.43377,0.994593,0.97682,0.973895,0.97224,0,0,16.8855,16.8855,0.979387
280,8.86287,9.05621,8.97969,0.994818,0.97687,0.974244,0.972973,0,0,16.923,16.923,0.97972625
290,9.44156,9.56621,9.49737,0.994947,0.978044,0.975665,0.97477,0,0,16.9929,16.9929,0.9808565
300,10.036,10.2885,10.1685,0.994879,0.97901,0.976908,0.975781,0,0,16.9141,16.9141,0.9816445
\ No newline at end of file
noOfUsers,minRes,maxRes,meanRes,core1,core2,core3,core4,requestDrop,badput,goodput,throughput,cpu
10,0.190667,0.21787,0.201857,0.82333,0.0841692,0.014788,0.00345859,0,0,1.42635,1.42635,0.2314364475
20,0.199035,0.210044,0.203153,0.798309,0.196761,0.079776,0.0363281,0,0,2.97697,2.97697,0.277793525
30,0.203262,0.21423,0.209029,0.76264,0.309122,0.146135,0.0693007,0,0,4.51843,4.51843,0.321799425
40,0.204644,0.216103,0.212196,0.760825,0.397723,0.22541,0.119624,0,0,6.04769,6.04769,0.3758955
50,0.213763,0.223113,0.220467,0.775982,0.482178,0.314226,0.195218,0,0,7.5632,7.5632,0.441901
60,0.224188,0.237236,0.230024,0.78819,0.562142,0.403317,0.276534,0,0,9.07675,9.07675,0.50754575
70,0.235408,0.246706,0.240512,0.811744,0.620895,0.493847,0.371172,0,0,10.5735,10.5735,0.5744145
80,0.249855,0.269592,0.255589,0.83638,0.679232,0.568223,0.458814,0,0,12.0497,12.0497,0.63566225
90,0.279208,0.295326,0.28564,0.865432,0.743229,0.654484,0.565146,0,0,13.4957,13.4957,0.70707275
100,0.313085,0.356884,0.327089,0.896406,0.798072,0.736706,0.668642,0,0,14.8952,14.8952,0.7749565
110,0.365141,0.423852,0.390994,0.924276,0.84127,0.798108,0.750381,0,0,16.2226,16.2226,0.82850875
120,0.521493,0.59154,0.548444,0.958286,0.892379,0.871358,0.844415,0,0,17.2834,17.2834,0.8916095
130,0.728247,0.794795,0.755171,0.980421,0.925877,0.918731,0.90847,0,0,18.1746,18.1746,0.93337475
140,0.990167,1.19569,1.09598,0.993504,0.946414,0.944478,0.941179,0,0,18.6681,18.6681,0.95639375
150,1.42569,1.53799,1.49138,0.99616,0.952749,0.951902,0.951437,0,0,18.9721,18.9721,0.963062
160,1.77039,2.11055,1.98366,0.99669,0.956199,0.955338,0.954481,0,0,19.0416,19.0416,0.965677
170,2.38595,2.50505,2.44748,0.996314,0.958941,0.958179,0.957692,0,0,19.1478,19.1478,0.9677815
180,2.90875,3.01504,2.94504,0.997019,0.961361,0.960819,0.960139,0,0,19.1888,19.1888,0.9698345
190,3.28017,3.58136,3.44316,0.997448,0.963182,0.962741,0.96248,0,0,19.2202,19.2202,0.97146275
200,3.88964,4.08808,3.9769,0.997925,0.964642,0.964248,0.964037,0,0,19.1829,19.1829,0.972713
210,4.41287,4.53571,4.48845,0.997703,0.967075,0.966445,0.966439,0,0,19.1796,19.1796,0.9744155
220,4.78028,4.91197,4.86189,0.997468,0.968213,0.967389,0.966947,0,0,19.4279,19.4279,0.97500425
230,5.42648,5.51252,5.45454,0.997548,0.96941,0.968759,0.968378,0,0,19.2896,19.2896,0.97602375
240,5.84276,6.0735,5.93042,0.997717,0.970777,0.970079,0.969674,0,0,19.3392,19.3392,0.97706175
250,6.27173,6.51885,6.3955,0.997744,0.972202,0.971321,0.970847,0,0,19.4101,19.4101,0.9780285
260,6.86994,6.98044,6.92665,0.997838,0.973116,0.972548,0.972228,0,0,19.3791,19.3791,0.9789325
270,7.42277,7.51181,7.47217,0.997666,0.97419,0.973812,0.973378,0,0,19.3274,19.3274,0.9797615
280,7.83873,7.92267,7.87558,0.998011,0.974901,0.974254,0.973971,0,0,19.4765,19.4765,0.98028425
290,8.4417,8.50479,8.46446,0.998014,0.975409,0.974884,0.974562,0,0,19.3703,19.3703,0.98071725
300,8.81683,9.0005,8.88533,0.998102,0.97627,0.975939,0.975735,0,0,19.4823,19.4823,0.9815115
\ No newline at end of file
noOfUsers,minRes,maxRes,meanRes,core1,core2,core3,core4,requestDrop,badput,goodput,throughput,cpu
10,0.289153,0.29688,0.292574,0.840383,0.055383,0.00524928,0.000358977,0,0.406847,0.840192,1.24704,0.2253435643
20,0.291268,0.298242,0.294891,0.766197,0.162205,0.0359708,0.00600688,0,0.858957,1.77125,2.63021,0.24259492
30,0.293001,0.296449,0.294921,0.738672,0.270251,0.0926647,0.0251881,0,1.3073,2.70612,4.01342,0.28169395
40,0.295696,0.298002,0.296982,0.736901,0.364525,0.165273,0.0609177,0,1.77405,3.62103,5.39509,0.331904175
50,0.296894,0.300697,0.299729,0.74287,0.445297,0.245378,0.117096,0,2.21795,4.55846,6.7764,0.38766025
60,0.304154,0.307568,0.305803,0.759556,0.519874,0.331295,0.183445,0,2.67216,5.47995,8.1521,0.4485425
70,0.312497,0.316525,0.314582,0.779401,0.584412,0.411899,0.263952,0,3.13934,6.3839,9.52325,0.509916
80,0.323803,0.329054,0.325505,0.800433,0.64151,0.491083,0.349945,0,3.58896,7.29388,10.8828,0.57074275
90,0.344235,0.34797,0.346174,0.825013,0.698739,0.57062,0.444002,0,4.05584,8.16954,12.2254,0.6345935
100,0.368084,0.375034,0.371583,0.851356,0.751159,0.646218,0.536067,0,4.49879,9.09478,13.5936,0.6962
110,0.408074,0.417355,0.413382,0.877725,0.800392,0.718032,0.629505,0,5.00444,9.87854,14.883,0.7564135
120,0.469914,0.490267,0.478129,0.905088,0.848248,0.787967,0.720179,0,5.48957,10.6843,16.1738,0.8153705
130,0.575273,0.593982,0.587517,0.93248,0.893003,0.851695,0.805745,0,6.01988,11.3466,17.3665,0.87073075
140,0.742389,0.770277,0.754414,0.957089,0.932327,0.908516,0.880227,0,6.57854,11.8832,18.4617,0.91953975
150,1.05404,1.07034,1.06117,0.977286,0.963118,0.951255,0.937788,0,7.25006,12.0853,19.3354,0.95736175
160,1.56091,1.5838,1.57116,0.989026,0.981617,0.977097,0.972013,0,8.03877,11.8857,19.9245,0.97993825
170,2.22446,2.30968,2.26222,0.994756,0.990033,0.988722,0.987192,0,8.89633,11.441,20.3373,0.99017575
180,3.14986,3.27056,3.19498,0.996489,0.99268,0.992049,0.991658,0,9.82805,10.7225,20.5506,0.993219
190,4.21827,4.32673,4.28167,0.996956,0.993913,0.993556,0.99335,0,10.7344,10.0183,20.7526,0.99444375
200,5.38047,5.57072,5.492,0.997282,0.99456,0.994287,0.994096,0,11.5924,9.37752,20.9699,0.99505625
210,6.76803,6.93482,6.86765,0.997446,0.994938,0.994678,0.994522,0,12.4104,8.75819,21.1686,0.995396
220,8.39149,8.48063,8.42742,0.997671,0.995561,0.995288,0.995141,0,13.167,8.17746,21.3445,0.99591525
230,10.1451,10.248,10.197,0.997832,0.996013,0.995771,0.99566,0,13.8862,7.62998,21.5162,0.996319
240,12.2242,12.4425,12.3275,0.998041,0.99639,0.996203,0.996101,0,14.5622,7.06364,21.6258,0.99668375
250,14.4552,14.6189,14.5406,0.998171,0.996577,0.996407,0.996286,0,15.1818,6.59971,21.7815,0.99686025
260,16.8817,17.2109,17.0942,0.998277,0.996901,0.996734,0.996657,0,15.7792,6.14236,21.9216,0.99714225
270,19.9847,20.302,20.0937,0.998446,0.997245,0.997095,0.997016,0,16.3247,5.69287,22.0176,0.9974505
280,22.6781,23.4213,23.1106,0.998573,0.99743,0.997298,0.997246,0,16.8419,5.33428,22.1762,0.99763675
290,26.6694,26.9033,26.8054,0.998663,0.997488,0.997379,0.99732,0,17.326,4.94777,22.2738,0.9977125
300,30.6912,31.5801,31.0727,0.998742,0.997919,0.997817,0.997754,0,17.7683,4.57634,22.3446,0.998058
\ No newline at end of file
file,total,cpu,meanRes,noOfUsers,load Duration,,throughput,,error-file,error_abort,error_abort_max_conn_retries,error_connect_emfile,error_unknown_msg,fraction of packets dropped,users,success
20220204-2327,5,0.3375,0.21,1,60,,0.08333333333,,20220205-0045,1,0,0,0,0,500,1048
20220204-2329,115,9.175,0.21,10,60,,1.916666667,,20220205-0046,1,5,20,0,0.004642525534,1000,1072
20220204-2330,190,13.46,0.32,20,60,,3.166666667,,20220205-0048,1,505,2020,0,0.3168130489,1500,1089
20220204-2332,299,23.9875,0.39,30,60,,4.983333333,,20220205-0049,1,1005,4020,0,0.4787994283,2000,1094
20220204-2333,402,33.2325,0.46,40,60,,6.7,,20220205-0050,1,1505,6020,1,0.5777351248,2500,1100
20220204-2335,509,38.8,0.58,50,60,,8.483333333,,20220205-0053,1,2005,8020,0,0.6461488882,3000,1098
20220205-0025,616,45.3,0.43,60,60,,10.26666667,,20220205-0057,1,2505,10020,0,0.7056338028,3500,1045
20220204-2339,665,51.0275,0.7,70,60,,11.08333333,,20220205-0058,1,3005,12020,0,0.7334635099,4000,1092
20220204-2341,760,60.715,0.71,80,60,,12.66666667,,20220205-0100,1,3505,14020,0,0.7612945265,4500,1099
20220204-2343,863,69.7975,0.82,90,60,,14.38333333,,20220205-0037,1,4005,16020,0,0.7877655389,5000,1079
20220204-2350,969,78.7654,0.91,100,60,,16.15,,,,,,,,,
20220204-2352,981,85.3427,1.27,110,60,,16.35,,,,,,,,,
20220204-2356,1068,94.3183,1.38,120,60,,17.8,,,,,,,,,
20220205-0002,1051,97.8744,1.83,130,60,,17.51666667,,,,,,,,,
20220205-1238,1078,99.8976,2.51,140,60,,17.96666667,,,,,,,,,
20220205-1240,1061,100,2.82,150,60,,17.68333333,,,,,,,,,
20220205-1242,1100,100,3.25,160,60,,18.33333333,,,,,,,,,
20220205-1219,1068,100,3.76,170,60,,17.8,,,,,,,,,
20220205-1221,1112,100,4.09,180,60,,18.53333333,,,,,,,,,
20220205-1222,1095,100,4.56,190,60,,18.25,,,,,,,,,
20220205-1232,1053,100,5.81,200,60,,17.55,,,,,,,,,
\ No newline at end of file
noOfUsers,minRes,maxRes,meanRes,core1,core2,core3,core4,requestDrop,badput,goodput,throughput,cpu
10,0.230213,0.242785,0.235491,0.832345,0.0725517,0.00928128,0.000845173,0,0,1.22701,1.22701,0.2287557883
20,0.234928,0.250982,0.240965,0.767871,0.204056,0.0548834,0.0114769,0,0,2.55916,2.55916,0.259571825
30,0.229394,0.24721,0.24008,0.750708,0.318938,0.132811,0.0423925,0,0,3.86876,3.86876,0.311212375
40,0.23697,0.24545,0.242542,0.75225,0.41611,0.219156,0.0969871,0,0,5.18435,5.18435,0.371125775
50,0.238482,0.243394,0.240262,0.765633,0.494566,0.30059,0.150552,0,0,6.49836,6.49836,0.42783525
60,0.239449,0.245472,0.242192,0.788831,0.56521,0.383191,0.230475,0,0,7.79104,7.79104,0.49192675
70,0.239696,0.244533,0.243257,0.808606,0.620928,0.460702,0.30563,0,0,9.10557,9.10557,0.5489665
80,0.237377,0.239517,0.239016,0.824358,0.65565,0.514515,0.366948,0,0,10.388,10.388,0.59036775
90,0.237759,0.245296,0.242158,0.845448,0.702974,0.578556,0.452338,0,0,11.7298,11.7298,0.644829
100,0.239827,0.244577,0.241581,0.861907,0.736368,0.623384,0.502485,0,0,12.9608,12.9608,0.681036
110,0.237764,0.241998,0.240644,0.875385,0.761637,0.667714,0.559025,0,0,14.2749,14.2749,0.71594025
120,0.239039,0.242599,0.240839,0.891255,0.790684,0.706849,0.606778,0,0,15.5731,15.5731,0.7488915
130,0.238335,0.24311,0.24074,0.901261,0.810892,0.736067,0.65351,0,0,16.9041,16.9041,0.7754325
140,0.238855,0.24467,0.240784,0.911485,0.832042,0.765259,0.691871,0,0,18.1923,18.1923,0.80016425
150,0.239809,0.246331,0.242064,0.922423,0.845311,0.790526,0.726371,0,0,19.4519,19.4519,0.82115775
160,0.238436,0.244068,0.241053,0.929879,0.859493,0.812542,0.752992,0,0,20.7219,20.7219,0.8387265
170,0.239102,0.242061,0.240634,0.93837,0.872196,0.830314,0.777548,0,0,22.0254,22.0254,0.854607
180,0.239466,0.244187,0.24114,0.94315,0.881387,0.846517,0.803128,0,0,23.2587,23.2587,0.8685455
190,0.239468,0.242928,0.241492,0.948516,0.889308,0.854636,0.819263,0,0,24.6157,24.6157,0.87793075
200,0.239889,0.243,0.241649,0.951227,0.894807,0.870265,0.836435,0,0,25.8282,25.8282,0.8881835
210,0.240848,0.242408,0.241615,0.955463,0.906512,0.881212,0.851085,0,0,27.2617,27.2617,0.898568
220,0.238465,0.242087,0.240878,0.958729,0.910047,0.884872,0.860477,0,0,28.4773,28.4773,0.90353125
230,0.237221,0.244427,0.241511,0.96125,0.913586,0.893578,0.872662,0,0,29.6896,29.6896,0.910269
240,0.240081,0.242453,0.241459,0.963039,0.916365,0.898358,0.879663,0,0,31.0286,31.0286,0.91435625
250,0.239848,0.242372,0.240851,0.965138,0.920569,0.903399,0.887639,0,0,32.3197,32.3197,0.91918625
260,0.241738,0.243088,0.242257,0.96546,0.923663,0.909824,0.894643,0,0,33.611,33.611,0.9233975
270,0.241322,0.244032,0.242485,0.967686,0.922089,0.908897,0.89665,0,0,34.7572,34.7572,0.9238305
280,0.241216,0.243978,0.242527,0.96894,0.927037,0.915074,0.903593,0,0,36.123,36.123,0.928661
290,0.240961,0.243463,0.242524,0.968562,0.925639,0.916877,0.904251,0,0,37.3464,37.3464,0.92883225
300,0.240897,0.244993,0.242707,0.970557,0.9285,0.918721,0.909562,0,0,38.635,38.635,0.931835
310,0.242623,0.244481,0.243487,0.970272,0.927166,0.919234,0.911823,0,0,39.8331,39.8331,0.93212375
320,0.242833,0.246545,0.244193,0.970559,0.93188,0.922917,0.914548,0,0,41.1857,41.1857,0.934976
330,0.24224,0.247462,0.24542,0.97114,0.929249,0.920195,0.913519,0,0,42.4169,42.4169,0.93352575
340,0.246159,0.248849,0.246916,0.971554,0.930789,0.922299,0.916477,0,0,43.653,43.653,0.93527975
350,0.244805,0.252067,0.247848,0.971063,0.931025,0.924461,0.917063,0,0,44.9007,44.9007,0.935903
360,0.249931,0.257013,0.253707,0.970902,0.930425,0.923748,0.91912,0,0,46.1146,46.1146,0.93604875
370,0.251645,0.257151,0.254029,0.971668,0.930577,0.924707,0.919847,0,0,47.4818,47.4818,0.93669975
380,0.259556,0.260698,0.260072,0.972294,0.933147,0.926751,0.923041,0,0,48.7589,48.7589,0.93880825
390,0.261231,0.26341,0.262025,0.971438,0.932102,0.926404,0.921905,0,0,49.9382,49.9382,0.93796225
400,0.265886,0.272408,0.269495,0.970633,0.931172,0.925578,0.921796,0,0,51.1419,51.1419,0.93729475
410,0.271958,0.282089,0.277116,0.971333,0.932525,0.925477,0.92252,0,0,52.3416,52.3416,0.93796375
420,0.271623,0.297832,0.283592,0.971813,0.935929,0.929095,0.92451,0,0,53.738,53.738,0.94033675
430,0.288876,0.300771,0.294646,0.97108,0.934426,0.928076,0.923804,0,0,54.8396,54.8396,0.9393465
440,0.313655,0.327141,0.320416,0.970397,0.930978,0.925058,0.921598,0,0,55.8319,55.8319,0.93700775
450,0.329125,0.363192,0.344132,0.971108,0.93312,0.925673,0.922954,0,0,57.0159,57.0159,0.93821375
460,0.352404,0.362664,0.357487,0.970462,0.933818,0.927021,0.922883,0,0,58.1261,58.1261,0.938546
470,0.402856,0.411729,0.406474,0.970645,0.931005,0.924968,0.922311,0,0,58.9359,58.9359,0.93723225
480,0.45225,0.470003,0.462721,0.970307,0.934529,0.927654,0.924351,0,0,59.9286,59.9286,0.93921025
490,0.50951,0.562489,0.531183,0.971561,0.932313,0.927801,0.922535,0,0,60.5633,60.5633,0.9385525
500,0.600167,0.631741,0.617963,0.970218,0.933536,0.927744,0.924579,0,0,61.1162,61.1162,0.93901925
510,0.657102,0.74343,0.711441,0.970845,0.935553,0.930179,0.92624,0,0,61.7085,61.7085,0.94070425
520,0.808741,0.908326,0.85809,0.970283,0.935168,0.929287,0.926134,0,0,61.7833,61.7833,0.940218
530,0.932283,1.03425,0.986917,0.970035,0.932781,0.928898,0.924266,0,0,61.8612,61.8612,0.938995
540,1.12172,1.18411,1.15046,0.971175,0.936512,0.931684,0.928471,0,0,61.97,61.97,0.9419605
550,1.24307,1.27671,1.25365,0.970094,0.938628,0.933735,0.929252,0,0,62.4666,62.4666,0.94292725
560,1.36968,1.45962,1.41829,0.971819,0.937669,0.931313,0.928951,0,0,62.2938,62.2938,0.942438
570,1.4907,1.58292,1.53124,0.970569,0.937217,0.931414,0.928591,0,0,62.5505,62.5505,0.94194775
580,1.6195,1.71119,1.68144,0.972156,0.938616,0.934777,0.931946,0,0,62.7311,62.7311,0.94437375
590,1.78489,1.86348,1.84139,0.972072,0.941343,0.936069,0.932606,0,0,62.7445,62.7445,0.9455225
600,1.97512,2.07078,2.0129,0.972143,0.938641,0.93412,0.93144,0,0,62.5136,62.5136,0.944086
610,2.11853,2.18919,2.14462,0.971462,0.94116,0.935939,0.932973,0,0,62.7298,62.7298,0.9453835
620,2.24908,2.34624,2.31376,0.971871,0.941197,0.936197,0.934042,0,0,62.6853,62.6853,0.94582675
630,2.40612,2.49284,2.4556,0.97181,0.942161,0.93873,0.935036,0,0,62.8171,62.8171,0.94693425
640,2.57246,2.61864,2.589,0.9723,0.941643,0.937612,0.933933,0,0,62.8697,62.8697,0.946372
650,2.70453,2.82396,2.779,0.971694,0.943398,0.938978,0.936741,0,0,62.78,62.78,0.94770275
660,2.85922,2.94274,2.91461,0.972252,0.942379,0.938063,0.935319,0,0,62.8118,62.8118,0.94700325
670,3.01173,3.0877,3.04514,0.972778,0.942985,0.939369,0.936931,0,0,62.9922,62.9922,0.94801575
680,3.12737,3.24137,3.19655,0.972767,0.943719,0.939444,0.936637,0,0,63.0275,63.0275,0.94814175
690,3.31891,3.40316,3.3684,0.972838,0.944453,0.940597,0.937677,0,0,62.9591,62.9591,0.94889125
700,3.41567,3.52096,3.48539,0.972992,0.945246,0.940955,0.938022,0,0,63.1819,63.1819,0.94930375
710,3.60324,3.68528,3.63309,0.972956,0.944927,0.939861,0.93757,0,0,63.1208,63.1208,0.9488285
720,3.76555,3.83927,3.80124,0.973361,0.948052,0.944176,0.941774,0,0,63.2331,63.2331,0.95184075
730,3.86854,3.96921,3.93006,0.973652,0.94677,0.943245,0.940708,0,0,63.3597,63.3597,0.95109375
740,4.03156,4.16734,4.09056,0.97296,0.947759,0.943553,0.941776,0,0,63.3332,63.3332,0.951512
750,4.17896,4.2835,4.23455,0.973635,0.94755,0.943992,0.941213,0,0,63.3794,63.3794,0.9515975
760,4.39668,4.42659,4.40746,0.973399,0.949319,0.945264,0.942523,0,0,63.3141,63.3141,0.95262625
770,4.47566,4.62525,4.54464,0.973082,0.947498,0.943754,0.942265,0,0,63.3399,63.3399,0.95164975
780,4.68251,4.72761,4.70632,0.973552,0.949652,0.946382,0.94371,0,0,63.3957,63.3957,0.953324
790,4.7649,4.87834,4.8218,0.973806,0.948636,0.944696,0.942967,0,0,63.4966,63.4966,0.95252625
800,4.9309,5.05608,5.00013,0.97318,0.948226,0.94525,0.942962,0,0,63.3896,63.3896,0.9524045
810,5.06669,5.16223,5.12625,0.973253,0.950618,0.946514,0.944829,0,0,63.617,63.617,0.9538035
820,5.20143,5.33377,5.29454,0.97334,0.950555,0.947062,0.944883,0,0,63.5413,63.5413,0.95396
830,5.36061,5.46554,5.42179,0.974088,0.949601,0.946311,0.944496,0,0,63.6094,63.6094,0.953624
840,5.52857,5.66349,5.59471,0.973822,0.950117,0.947821,0.944826,0,0,63.5569,63.5569,0.9541465
850,5.67652,5.76357,5.71252,0.973963,0.952146,0.948272,0.94585,0,0,63.8316,63.8316,0.95505775
860,5.82742,5.94608,5.86929,0.973767,0.951757,0.948419,0.946275,0,0,63.7629,63.7629,0.9550545
870,5.99911,6.0505,6.02711,0.973912,0.951679,0.948368,0.946616,0,0,63.7439,63.7439,0.95514375
880,6.13965,6.25596,6.20809,0.974237,0.951618,0.947755,0.945924,0,0,63.5652,63.5652,0.9548835
890,6.30507,6.35274,6.32629,0.9737,0.95154,0.947861,0.94595,0,0,63.7208,63.7208,0.95476275
900,6.4692,6.52066,6.49862,0.974505,0.952722,0.949717,0.948225,0,0,63.7071,63.7071,0.95629225
910,6.53384,6.63926,6.607,0.973665,0.952351,0.948685,0.946805,3.6,0,63.777,63.777,0.9553765
920,6.62892,6.73393,6.70504,0.974363,0.953446,0.950329,0.948818,11.2,0,63.7274,63.7274,0.956739
930,6.60341,6.82302,6.70264,0.974011,0.953158,0.950147,0.948048,21.6,0,63.7872,63.7872,0.956341
940,6.52945,6.87217,6.70964,0.974501,0.95484,0.952074,0.950096,34,0,63.9328,63.9328,0.95787775
950,6.67263,6.79346,6.70941,0.973896,0.953621,0.950732,0.948883,38.6,0,64.1105,64.1105,0.956783
960,6.47803,6.7756,6.6851,0.974184,0.954327,0.951226,0.949077,51.6,0,63.9271,63.9271,0.9572035
970,6.57578,6.7784,6.69546,0.973918,0.954828,0.951373,0.950043,57.8,0,64.1351,64.1351,0.9575405
980,6.7068,6.79102,6.75535,0.97442,0.954815,0.951882,0.949417,67.2,0,64.0367,64.0367,0.9576335
990,6.665,6.8186,6.75297,0.974236,0.954157,0.950929,0.949213,79.8,0,63.9264,63.9264,0.95713375
1000,6.53379,6.78981,6.72069,0.974359,0.955267,0.952407,0.951092,88.2,0,64.1295,64.1295,0.95828125
\ No newline at end of file
noOfUsers,minRes,maxRes,meanRes,core1,core2,core3,core4,requestDrop,badput,goodput,throughput,cpu
10,0.209452,0.219369,0.214647,0.84667,0.0905674,0.018458,0.00363962,0,0,1.42301,1.42301,0.239833755
20,0.209206,0.218232,0.213233,0.798977,0.206779,0.081316,0.0292806,0,0,2.97559,2.97559,0.27908815
30,0.220079,0.224613,0.221896,0.780252,0.31938,0.1656,0.0747528,0,0,4.50981,4.50981,0.3349962
40,0.220414,0.230108,0.226337,0.781236,0.413383,0.2483,0.135788,0,0,6.03109,6.03109,0.39467675
50,0.228141,0.239007,0.234843,0.784957,0.509061,0.340274,0.206003,0,0,7.54587,7.54587,0.46007375
60,0.235606,0.241835,0.238774,0.804591,0.575888,0.424878,0.292549,0,0,9.06545,9.06545,0.5244765
70,0.252002,0.260823,0.257576,0.826186,0.651549,0.525221,0.402992,0,0,10.541,10.541,0.601487
80,0.270645,0.281601,0.274208,0.855338,0.709454,0.607649,0.509913,0,0,12.018,12.018,0.6705885
90,0.288774,0.313253,0.303276,0.884321,0.768862,0.693067,0.607788,0,0,13.4472,13.4472,0.7385095
100,0.353381,0.392133,0.369559,0.917787,0.822382,0.772535,0.711155,0,0,14.7957,14.7957,0.80596475
110,0.446746,0.485505,0.465278,0.944576,0.870714,0.837854,0.80402,0,0,16.0379,16.0379,0.864291
120,0.617448,0.640955,0.632822,0.966773,0.907697,0.891094,0.873933,0,0,17.078,17.078,0.90987425
130,0.942564,1.01202,0.972548,0.986248,0.937439,0.933842,0.927478,0,0,17.6285,17.6285,0.94625175
140,1.34626,1.50681,1.4327,0.991277,0.948388,0.947098,0.945659,0,0,17.8532,17.8532,0.9581055
150,1.77707,1.96638,1.8443,0.993275,0.953075,0.952056,0.951029,0,0,18.153,18.153,0.96235875
160,2.25682,2.44097,2.38045,0.993491,0.955025,0.954499,0.954473,0,0,18.167,18.167,0.964372
170,2.91873,2.97794,2.9514,0.993189,0.957679,0.957278,0.956601,0,0,18.1054,18.1054,0.96618675
180,3.30606,3.5631,3.44301,0.993279,0.960349,0.959469,0.958276,0,0,18.203,18.203,0.96784325
190,3.86289,4.06828,3.95572,0.99398,0.960819,0.961031,0.960405,0,0,18.2531,18.2531,0.96905875
200,4.44046,4.56253,4.5116,0.99321,0.963177,0.962813,0.962486,0,0,18.2287,18.2287,0.9704215
210,4.91642,5.13971,5.04316,0.993896,0.964638,0.963646,0.96371,0,0,18.2452,18.2452,0.9714725
220,5.43674,5.60862,5.52296,0.994062,0.966428,0.965488,0.965152,0,0,18.3405,18.3405,0.9727825
230,5.92447,6.14869,6.03394,0.993835,0.967348,0.966729,0.966065,0,0,18.3876,18.3876,0.97349425
240,6.45254,6.76555,6.6104,0.993479,0.968268,0.967953,0.966954,0,0,18.3243,18.3243,0.9741635
250,6.95678,7.18368,7.10445,0.993993,0.96937,0.968757,0.968361,0,0,18.3875,18.3875,0.97512025
260,7.5488,7.79158,7.69539,0.994179,0.971021,0.970457,0.969923,0,0,18.3249,18.3249,0.976395
270,8.06715,8.20963,8.17339,0.993901,0.971475,0.970885,0.970351,0,0,18.3961,18.3961,0.976653
280,8.51274,8.76195,8.66632,0.994039,0.972138,0.971766,0.971401,0,0,18.4522,18.4522,0.977336
290,9.18782,9.30478,9.24899,0.994316,0.973186,0.972593,0.972232,0,0,18.3982,18.3982,0.97808175
300,9.50375,9.75936,9.66341,0.994237,0.97366,0.973539,0.972954,0,0,18.5339,18.5339,0.9785975
\ No newline at end of file
noOfUsers,minRes,maxRes,meanRes,core1,core2,core3,core4,requestDrop,badput,goodput,throughput,cpu
10,0.234608,0.259963,0.245962,0.929255,0.0632818,0.00970415,0.000813569,0,0,1.22068,1.22068,0.2507636298
20,0.246201,0.258947,0.254228,0.856596,0.1889,0.059967,0.0128061,0,0,2.54863,2.54863,0.279567275
30,0.246423,0.255068,0.250859,0.814565,0.289798,0.130542,0.045893,0,0,3.84957,3.84957,0.3201995
40,0.249278,0.25881,0.253865,0.784906,0.382192,0.221342,0.10864,0,0,5.17645,5.17645,0.37427
50,0.250674,0.266751,0.261137,0.770695,0.467405,0.313365,0.188182,0,0,6.47201,6.47201,0.43491175
60,0.269289,0.27978,0.274324,0.782305,0.541545,0.403697,0.283647,0,0,7.73502,7.73502,0.5027985
70,0.280365,0.300257,0.287459,0.786562,0.599357,0.491139,0.378596,0,0,9.02975,9.02975,0.5639135
80,0.303644,0.316792,0.308824,0.806948,0.659387,0.57136,0.47431,0,0,10.306,10.306,0.62800125
90,0.357785,0.369442,0.363986,0.831239,0.723949,0.65807,0.586453,0,0,11.5242,11.5242,0.69992775
100,0.414425,0.480146,0.438378,0.860966,0.770791,0.727061,0.678473,0,0,12.6587,12.6587,0.75932275
110,0.536764,0.588922,0.561706,0.887223,0.817494,0.790577,0.756958,0,0,13.7106,13.7106,0.813063
120,0.795551,0.853145,0.817803,0.913726,0.868155,0.853189,0.8406,0,0,14.5032,14.5032,0.8689175
130,1.09039,1.18646,1.15233,0.92416,0.883295,0.875368,0.867602,0,0,15.0948,15.0948,0.88760625
140,1.63145,1.77835,1.68896,0.931674,0.892342,0.888244,0.886073,0,0,15.271,15.271,0.89958325
150,2.22059,2.40171,2.3194,0.931604,0.897805,0.893572,0.892231,0,0,15.2852,15.2852,0.903803
160,2.84225,2.97195,2.91849,0.932287,0.899893,0.897624,0.895926,0,0,15.3898,15.3898,0.9064325
170,3.59948,3.84567,3.69616,0.931996,0.90358,0.899889,0.897909,0,0,15.184,15.184,0.9083435
180,4.1167,4.29251,4.21799,0.931858,0.906312,0.902268,0.901505,0,0,15.3749,15.3749,0.91048575
190,4.71412,4.85002,4.77459,0.93273,0.905213,0.90345,0.901405,0,0,15.4518,15.4518,0.9106995
200,5.27249,5.51856,5.42079,0.932684,0.906753,0.9038,0.902049,0,0,15.4602,15.4602,0.9113215
210,6.0543,6.2172,6.13929,0.932625,0.908877,0.906822,0.90514,0,0,15.3645,15.3645,0.913366
220,6.59298,6.76267,6.70253,0.932961,0.910737,0.90852,0.907119,0,0,15.4736,15.4736,0.91483425
230,7.09458,7.48268,7.30053,0.933219,0.910323,0.908437,0.907119,0,0,15.4807,15.4807,0.9147745
240,7.69577,8.07463,7.85582,0.933271,0.911457,0.909324,0.908244,0,0,15.5727,15.5727,0.915574
250,8.44619,8.63199,8.54906,0.933131,0.912183,0.910312,0.909598,0,0,15.5083,15.5083,0.916306
260,8.96896,9.33043,9.17033,0.93324,0.913834,0.912127,0.910895,0,0,15.5483,15.5483,0.917524
270,9.74056,9.91975,9.83805,0.932769,0.914583,0.912362,0.911598,0,0,15.5126,15.5126,0.917828
280,10.1504,10.5092,10.3649,0.933103,0.914584,0.913064,0.911764,0,0,15.5999,15.5999,0.91812875
290,10.8949,11.0321,10.969,0.933212,0.914886,0.912982,0.912071,0,0,15.6247,15.6247,0.91828775
300,11.438,11.6559,11.5238,0.933188,0.91637,0.914104,0.913352,0,0,15.6885,15.6885,0.9192535
\ No newline at end of file
noOfUsers,minRes,maxRes,meanRes,core1,core2,core3,core4,requestDrop,badput,goodput,throughput,cpu
10,0.331164,0.349904,0.341353,0.8294,0.108816,0.0203268,0.00220854,0,0,1.21197,1.21197,0.240187835
20,0.336386,0.347223,0.343056,0.7672,0.276431,0.104512,0.0303652,0,0,2.52412,2.52412,0.29462705
30,0.342971,0.349695,0.346042,0.756199,0.409101,0.223061,0.103564,0,0,3.83989,3.83989,0.37298125
40,0.342374,0.346034,0.343593,0.766991,0.509592,0.334505,0.188407,0,0,5.11681,5.11681,0.44987375
50,0.33625,0.348038,0.342832,0.786361,0.585579,0.438271,0.288062,0,0,6.39158,6.39158,0.52456825
60,0.34211,0.34926,0.344218,0.806003,0.65194,0.523459,0.390452,0,0,7.69779,7.69779,0.5929635
70,0.339595,0.348471,0.343082,0.82491,0.698093,0.590441,0.478914,0,0,8.99482,8.99482,0.6480895
80,0.338638,0.347081,0.342556,0.844587,0.737102,0.649645,0.552471,0,0,10.2497,10.2497,0.69595125
90,0.342164,0.344555,0.342826,0.859215,0.770218,0.698233,0.615046,0,0,11.5332,11.5332,0.735678
100,0.339615,0.347054,0.343783,0.868368,0.791453,0.733988,0.664646,0,0,12.802,12.802,0.76461375
110,0.335413,0.344729,0.341339,0.875922,0.810859,0.770456,0.710899,0,0,14.1283,14.1283,0.792034
120,0.339446,0.345595,0.342848,0.882901,0.823495,0.789425,0.741354,0,0,15.3336,15.3336,0.80929375
130,0.338536,0.344353,0.342194,0.889673,0.837154,0.810443,0.772459,0,0,16.6593,16.6593,0.82743225
140,0.340899,0.345411,0.343966,0.891515,0.842453,0.819863,0.791309,0,0,17.9069,17.9069,0.836285
150,0.339766,0.345959,0.342974,0.892353,0.8487,0.830748,0.805982,0,0,19.166,19.166,0.84444575
160,0.339187,0.346082,0.342243,0.896581,0.851777,0.839339,0.822997,0,0,20.4821,20.4821,0.8526735
170,0.342526,0.346561,0.343727,0.897119,0.855472,0.841982,0.830271,0,0,21.6988,21.6988,0.856211
180,0.340844,0.345022,0.343087,0.892534,0.858295,0.848889,0.84062,0,0,22.9893,22.9893,0.8600845
190,0.337827,0.345771,0.343055,0.893742,0.855762,0.851146,0.841829,0,0,24.2732,24.2732,0.86061975
200,0.345355,0.348146,0.346728,0.886899,0.853701,0.850069,0.845125,0,0,25.4689,25.4689,0.8589485
210,0.344173,0.345722,0.344931,0.887218,0.853319,0.846856,0.843129,0,0,26.7416,26.7416,0.8576305
220,0.343422,0.348218,0.345193,0.886513,0.854233,0.851153,0.850003,0,0,28.0426,28.0426,0.8604755
230,0.345669,0.349088,0.347409,0.883048,0.849614,0.84586,0.845808,0,0,29.2409,29.2409,0.8560825
240,0.343844,0.349983,0.346442,0.880755,0.848573,0.848873,0.848001,0,0,30.5853,30.5853,0.8565505
250,0.348176,0.35687,0.351701,0.875043,0.845256,0.844879,0.845787,0,0,31.8121,31.8121,0.85274125
260,0.353101,0.359327,0.356449,0.871904,0.839329,0.841199,0.838992,0,0,32.9836,32.9836,0.847856
270,0.356482,0.362883,0.359386,0.870827,0.842112,0.83882,0.839951,0,0,34.3047,34.3047,0.8479275
280,0.365705,0.374483,0.369149,0.865929,0.83741,0.836234,0.833928,0,0,35.5861,35.5861,0.84337525
290,0.377501,0.383402,0.380712,0.866379,0.836126,0.828919,0.828966,0,0,36.7785,36.7785,0.8400975
300,0.388591,0.396877,0.392157,0.864481,0.829968,0.826163,0.825118,0,0,37.8338,37.8338,0.8364325
310,0.406685,0.422262,0.412446,0.857719,0.83147,0.822266,0.822842,0,0,38.9851,38.9851,0.83357425
320,0.439833,0.449136,0.444656,0.856996,0.822249,0.81837,0.818847,0,0,40.1307,40.1307,0.8291155
330,0.468986,0.489971,0.480941,0.855182,0.820864,0.817072,0.815335,0,0,41.2252,41.2252,0.82711325
340,0.540266,0.565217,0.555674,0.852015,0.818024,0.816181,0.809744,0,0,42.0088,42.0088,0.823991
350,0.628869,0.659124,0.642609,0.852438,0.817946,0.810052,0.808141,0,0,42.7151,42.7151,0.82214425
360,0.716375,0.791033,0.755661,0.852501,0.816059,0.814527,0.809956,0,0,43.3638,43.3638,0.82326075
370,0.891385,1.00135,0.944378,0.852983,0.817817,0.81163,0.807202,0,0,43.5797,43.5797,0.822408
380,1.08332,1.14854,1.12542,0.850216,0.818385,0.813095,0.809751,0,0,43.7485,43.7485,0.82286175
390,1.31254,1.37885,1.35861,0.849594,0.819571,0.816517,0.813334,0,0,43.9171,43.9171,0.824754
400,1.5285,1.58084,1.54199,0.848962,0.817839,0.813345,0.809891,0,0,43.9323,43.9323,0.82250925
410,1.76663,1.79576,1.7778,0.848885,0.817244,0.812589,0.812055,0,0,43.9168,43.9168,0.82269325
420,1.96212,1.99698,1.98289,0.85083,0.818138,0.815677,0.811839,0,0,43.9716,43.9716,0.824121
430,2.12967,2.24223,2.19238,0.851493,0.820371,0.817364,0.812649,0,0,44.1138,44.1138,0.82546925
440,2.37678,2.45781,2.40383,0.852015,0.82064,0.820403,0.813868,0,0,44.1881,44.1881,0.8267315
450,2.56356,2.63938,2.60887,0.852514,0.821797,0.818753,0.814999,0,0,44.2504,44.2504,0.82701575
460,2.76502,2.81013,2.78752,0.851302,0.824224,0.817393,0.817821,0,0,44.4359,44.4359,0.827685
470,2.93054,3.06621,3.03233,0.849234,0.823382,0.818649,0.818729,0,0,44.39,44.39,0.8274985
480,3.1702,3.26708,3.21937,0.85135,0.825847,0.821963,0.817645,0,0,44.5159,44.5159,0.82920125
490,3.42577,3.45963,3.43992,0.849883,0.82379,0.82028,0.819981,0,0,44.4873,44.4873,0.8284835
500,3.61425,3.70775,3.65185,0.850673,0.820996,0.822104,0.820308,0,0,44.4841,44.4841,0.82852025
510,3.85026,3.91563,3.87855,0.847096,0.825682,0.823898,0.819009,0,0,44.5273,44.5273,0.82892125
520,4.04973,4.07216,4.06333,0.849274,0.829062,0.822305,0.82009,0,0,44.7002,44.7002,0.83018275
530,4.21587,4.29482,4.26444,0.854224,0.825589,0.825668,0.821703,0,0,44.7861,44.7861,0.831796
540,4.49137,4.54925,4.52293,0.849095,0.827848,0.820091,0.822087,0,0,44.6151,44.6151,0.82978025
550,4.69821,4.76522,4.72223,0.850984,0.829298,0.823543,0.821968,0,0,44.7183,44.7183,0.83144825
560,4.92432,4.96603,4.94664,0.850097,0.827008,0.825809,0.822471,0,0,44.686,44.686,0.83134625
570,5.06744,5.20269,5.1357,0.848434,0.828909,0.825656,0.824562,0,0,44.8402,44.8402,0.83189025
580,5.34275,5.37154,5.35685,0.851708,0.826936,0.826911,0.82462,0,0,44.8293,44.8293,0.83254375
590,5.53235,5.608,5.56993,0.851054,0.828584,0.824579,0.823736,0,0,44.805,44.805,0.83198825
600,5.76909,5.78265,5.77526,0.850576,0.829012,0.825794,0.825796,0,0,44.8511,44.8511,0.8327945
610,5.93307,6.01501,5.96784,0.8485,0.829005,0.825828,0.824577,0,0,44.9115,44.9115,0.8319775
620,6.14874,6.2777,6.2092,0.848696,0.829721,0.825368,0.824404,0,0,44.9025,44.9025,0.83204725
630,6.35958,6.39222,6.38262,0.850573,0.831985,0.828645,0.825605,0,0,45.0336,45.0336,0.834202
640,6.51612,6.69198,6.60985,0.850657,0.831188,0.827445,0.827042,0,0,45.0303,45.0303,0.834083
650,6.80224,6.88721,6.85434,0.849429,0.83025,0.829359,0.825487,0,0,44.9667,44.9667,0.83363125
660,6.96121,7.06196,7.02251,0.850571,0.831286,0.829823,0.827145,0,0,45.101,45.101,0.83470625
670,7.19611,7.29304,7.25317,0.848628,0.832202,0.829153,0.827353,0,0,45.067,45.067,0.834334
680,7.43914,7.51009,7.476,0.850737,0.833243,0.827299,0.827526,0,0,45.0552,45.0552,0.83470125
690,7.62116,7.73564,7.69217,0.850242,0.830963,0.830109,0.825145,0,0,45.0611,45.0611,0.83411475
700,7.83906,7.96615,7.89499,0.852903,0.833123,0.829022,0.827633,0,0,45.0956,45.0956,0.83567025
710,8.06023,8.12791,8.0893,0.850609,0.832302,0.830258,0.830486,0,0,45.1687,45.1687,0.83591375
720,8.28495,8.38652,8.32418,0.848541,0.832249,0.831046,0.829942,0,0,45.1726,45.1726,0.8354445
730,8.44445,8.56713,8.51277,0.850902,0.831878,0.829177,0.82873,0,0,45.1683,45.1683,0.83517175
740,8.68436,8.75913,8.72369,0.849093,0.832208,0.829952,0.828524,0,0,45.1702,45.1702,0.83494425
750,8.90066,9.00277,8.93522,0.851065,0.833227,0.829772,0.829943,0,0,45.2195,45.2195,0.83600175
760,9.11006,9.25279,9.17384,0.850443,0.833797,0.830054,0.829234,0,0,45.1909,45.1909,0.835882
770,9.31794,9.42266,9.36007,0.851151,0.833739,0.83157,0.832147,0,0,45.31,45.31,0.83715175
780,9.54661,9.62364,9.58836,0.850404,0.832919,0.830917,0.830543,0,0,45.3039,45.3039,0.83619575
790,9.6577,9.84534,9.78069,0.848216,0.834452,0.832427,0.8336,3.6,0,45.2992,45.2992,0.83717375
800,9.76928,9.94159,9.84459,0.852565,0.835374,0.833668,0.831906,9.8,0,45.4895,45.4895,0.83837825
810,9.71959,10.0356,9.93597,0.852767,0.834862,0.833243,0.830671,14.6,0,45.4546,45.4546,0.83788575
820,9.62781,10.0572,9.8612,0.850158,0.835415,0.832402,0.831033,34.2,0,45.3208,45.3208,0.837252
830,9.78288,9.96986,9.85838,0.849175,0.835798,0.833704,0.831155,44.4,0,45.3895,45.3895,0.837458
\ No newline at end of file
import matplotlib.pyplot as plt
import pandas as pd
# from mplfinance.original_flavor import candlestick_ohlc
# from mplfinance import candlestick_ohlc
figure_count=0
def get_figure_count():
global figure_count
figure_count=figure_count+1
return figure_count
def plot_graphs(data,tag):
# Plot
plt.figure(get_figure_count(),figsize=(6.8, 4.2))
x = data['noOfUsers']
plt.plot(x, data['throughput'], label="fcfs")
plt.plot(x, data['throughputRR'], label="Round Robin")
# plt.xticks(x, data['noOfUsers'])
plt.xlabel('Number of Users')
plt.ylabel('Throughput (replies/sec)')
plt.title('Throughput VS No of users')
plt.tight_layout()
plt.grid()
plt.savefig(tag+'Throughput VS No of users')
# Plot
plt.figure(get_figure_count(),figsize=(6.8, 4.2))
# x = range(len(data['noOfUsers']))
plt.plot(x, data['meanRes'], label="fcfs")
plt.plot(x, data['meanResRR'], label="Round Robin")
# plt.xticks(x, data['noOfUsers'])
plt.xlabel('Number of Users')
plt.ylabel('Response Time (sec)')
plt.title('Response Time VS No of users')
plt.tight_layout()
plt.grid()
plt.savefig(tag+'Response Time VS No of users')
# # Plot
plt.figure(get_figure_count(),figsize=(6.8, 4.2))
# x = range(len(data['noOfUsers']))
plt.plot(x, data['cpu'], label="fcfs")
plt.plot(x, data['cpuRR'], label="Round Robin")
# plt.xticks(x, data['noOfUsers'])
plt.xlabel('Number of Users')
plt.ylabel('cpu utilization')
plt.title('CPU Utilization VS No of users')
plt.tight_layout()
plt.grid()
plt.savefig(tag+'CPU Utilization VS No of users')
# Plot
plt.figure(get_figure_count(),figsize=(6.8, 4.2))
# x = range(len(data['noOfUsers']))
plt.plot(x, data['requestDrop'], label="fcfs")
plt.plot(x, data['requestDropRR'], label="Round Robin")
# plt.xticks(x, data['noOfUsers'])
plt.xlabel('Number of Users')
plt.ylabel('Requests dropped')
plt.title('Requests Dropped VS No of users')
plt.tight_layout()
plt.grid()
plt.savefig(tag+'Requests Dropped VS No of users')
# plt.show()
plt.show(block=False)
return
def plot_compareGraphs(rr,fcfs,m,label1,label2,label3,maxUser,tag):
fcfs = fcfs[fcfs['noOfUsers']<maxUser]
rr = rr[rr['noOfUsers']<maxUser]
x = rr['noOfUsers']
plt.figure(get_figure_count(),figsize=(6.8, 4.2))
plt.plot(x,rr['meanRes'],label=label1)
plt.plot(x,fcfs['meanRes'],label=label2)
plt.plot(x,m['meanRes'],label=label3)
plt.xlabel('No Of Users')
plt.ylabel('Response Time')
plt.title('Response Time VS No of users')
plt.legend()
plt.grid()
plt.tight_layout()
plt.savefig(tag+'Comparision Response Time')
plt.figure(get_figure_count(),figsize=(6.8, 4.2))
plt.plot(x,rr['throughput'],label=label1)
plt.plot(x,fcfs['throughput'],label=label2)
plt.plot(x,m['throughput'],label=label3)
plt.xlabel('No Of Users')
plt.ylabel('Throughput')
plt.title('Throughput VS No of users')
plt.legend()
plt.grid()
plt.tight_layout()
plt.savefig(tag+'Comparision Throughput')
plt.figure(get_figure_count(),figsize=(6.8, 4.2))
plt.plot(x,rr['cpu'],label=label1)
plt.plot(x,fcfs['cpu'],label=label2)
plt.plot(x,m['cpu'],label=label3)
plt.xlabel('No Of Users')
plt.ylabel('CPU Utilization')
plt.title('CPU Utilization VS No of users')
plt.legend()
plt.grid()
plt.tight_layout()
plt.savefig(tag+'Comparision CPU Utlization')
plt.show(block=False)
return
def plot_confident_graph(data,tag):
data['Open']=data['minRes']
data['Low']=data['minRes']
data['High']=data['maxRes']
data['Close']=data['maxRes']
data1 = data[['noOfUsers', 'Open', 'High',
'Low', 'Close']]
plt.figure(get_figure_count())
candlestick_ohlc(plt.axes(), data1.values, width =2,
colorup = 'blue', colordown = 'red',
alpha = 1)
plt.grid(True)
plt.xlabel('No Of Users')
plt.ylabel('Response Time')
plt.title('Confidence Plot Response Time ')
plt.tight_layout()
plt.savefig(tag+'Confidence Interval Response Time')
plt.show(block=False)
return
def plot_tp_gp_bp(data,tag):
plt.figure(get_figure_count())
x = data['noOfUsers']
plt.plot(x,data['badput'],label='badput')
plt.plot(x,data['goodput'],label='goodput')
plt.plot(x,data['throughput'],label='throughput')
plt.xlabel('No Of Users')
plt.ylabel('throughput')
plt.grid()
# plt.tight_layout()
plt.legend()
plt.title('Throughput GoodPut Badput')
plt.savefig(tag+'GBBP')
plt.show(block = False)
return
def plot_curiocity(data,tag):
data = data[data['meanRes']<2]
plt.figure(get_figure_count(),figsize=(6.8, 4.2))
plt.plot(data['meanRes'], data['throughput'])
plt.xlabel('Response time (sec)')
plt.ylabel('throughput')
plt.title('Throughput Vs Response time')
plt.tight_layout()
plt.grid()
plt.savefig(tag+'Throughput Vs Response time')
plt.show(block=False)
plt.figure(get_figure_count(),figsize=(6.8, 4.2))
plt.plot(data['cpu'], data['throughput'])
plt.xlabel('cpu')
plt.ylabel('throughput')
plt.title('Throughput Vs cpu')
plt.tight_layout()
plt.grid()
plt.savefig(tag+'Throughput Vs cpu')
plt.show(block=False)
return
def metric_plot_generation():
fcfs = "data/Assignment 2 data - FCFS comparision.csv"
fcfs1000 = "data/Assignment 2 data - FCFS 1000 data.csv"
roundRobin = 'data/Assignment 2 data - RR comparision.csv'
measureFile = 'data/Assignment 2 data - Measurement Closed.csv'
rr001 = "data/Assignment 2 data - 1000 RR.csv"
rr_01 = "data/Assignment 2 data - RR 0.01.csv"
rr_1 = "data/Assignment 2 data - rr1.csv"
gpbp = "data/Assignment 2 data - Goodput Badput B.csv"
fcfs1000_data = pd.read_csv(fcfs1000)
fcfs_data = pd.read_csv(fcfs)
rr_data = pd.read_csv(roundRobin)
measureData = pd.read_csv(measureFile)
rr001_data = pd.read_csv(rr001)
rr01_data = pd.read_csv(rr_01)
rr1_data = pd.read_csv(rr_1)
gpbp_data = pd.read_csv(gpbp)
measureData = measureData[['noOfUsers','meanRes','cpu','throughput']]
measureData = measureData[measureData['noOfUsers']>1]
measureData['cpu'] = measureData['cpu']/100
# plot_graphs(gpbp_data,'gpbp_rr_')
# plot_graphs(fcfs_data,'fcfs_')
plot_graphs(fcfs1000_data,'fcfs_')
# plot_graphs(rr_data,'rr_')
# plot_graphs(rr001_data,'rr001_')
# plot_graphs(rr01_data,'rr01_')
# plot_graphs(rr1_data,'rr1_')
# plot_graphs(gpbp_data,'gpbp_rr_')
# plot_confident_graph(fcfs1000_data,'fcfs1000_')
# plot_tp_gp_bp(gpbp_data,'rr')
# plot_compareGraphs(rr_data,fcfs_data,measureData,'Round Robin','FCFS','MEASURED DATA',210,'m_cmp_')
# plot_compareGraphs(rr001_data,rr01_data,rr1_data,'ctx time : 0.001','ctx time : 0.01','ctx time : 0.1',840,'ctx_Cmp_')
return
if __name__ == "__main__":
# file = 'Report.csv'
# data = pd.read_csv(file)
# plot_graphs(data,'New_')
metric_plot_generation()
plt.pause(1.0) # Pause for interval seconds.
input("hit[enter] to end.")
plt.close('all')
1
0.2
5
1
1
20
5
\ No newline at end of file
File added
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment