I forgot to commit loadavg.h and loadavg.cpp
git-svn-id: svn://ttmath.org/publicrep/winix/trunk@579 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
114
core/loadavg.h
Executable file
114
core/loadavg.h
Executable file
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
* This file is a part of CMSLU -- Content Management System like Unix
|
||||
* and is not publicly distributed
|
||||
*
|
||||
* Copyright (c) 2008-2010, Tomasz Sowa
|
||||
* All rights reserved.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef headerfilecmslucoreloadavg
|
||||
#define headerfilecmslucoreloadavg
|
||||
|
||||
#include <ctime>
|
||||
|
||||
|
||||
|
||||
|
||||
// in seconds
|
||||
#define WINIX_LOADAVG_GRANULARITY1 2
|
||||
#define WINIX_LOADAVG_GRANULARITY5 15
|
||||
#define WINIX_LOADAVG_GRANULARITY15 45
|
||||
|
||||
|
||||
|
||||
class LoadAvg
|
||||
{
|
||||
public:
|
||||
LoadAvg();
|
||||
~LoadAvg();
|
||||
LoadAvg & operator=(const LoadAvg & l);
|
||||
LoadAvg(const LoadAvg & l);
|
||||
|
||||
void StartRequest();
|
||||
void StopRequest();
|
||||
|
||||
double LoadAvgNow(); // load average withing last WINIX_LOADAVG_GRANULARITY1 seconds
|
||||
double LoadAvg1();
|
||||
double LoadAvg5();
|
||||
double LoadAvg15();
|
||||
|
||||
double ReqPerSecNow();
|
||||
double ReqPerSec1();
|
||||
double ReqPerSec5();
|
||||
double ReqPerSec15();
|
||||
|
||||
private:
|
||||
|
||||
struct Times
|
||||
{
|
||||
double dr; // time for the request (in seconds)
|
||||
double dp; // time for the pause between requestes (in seconds)
|
||||
long req; // how many requests
|
||||
|
||||
void Clear()
|
||||
{
|
||||
dr = 0.0;
|
||||
dp = 0.0;
|
||||
req = 0;
|
||||
}
|
||||
|
||||
Times & operator=(const Times & t)
|
||||
{
|
||||
dr = t.dr;
|
||||
dp = t.dp;
|
||||
req = t.req;
|
||||
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
void CheckTimers();
|
||||
void UpdateTimer1();
|
||||
void UpdateTimer5();
|
||||
void UpdateTimer15();
|
||||
|
||||
Times current1;
|
||||
Times current5;
|
||||
Times current15;
|
||||
|
||||
void CreateTable(size_t seconds, size_t granulatiry, Times* & tab, size_t & len);
|
||||
void CreateTable();
|
||||
|
||||
void MoveTab(Times * tab, size_t len);
|
||||
void SumTab(Times * tab, size_t len, double expected, Times & t);
|
||||
|
||||
void Calculate1();
|
||||
void Calculate5();
|
||||
void Calculate15();
|
||||
|
||||
bool was_stop_request;
|
||||
timespec start_req, stop_req;
|
||||
|
||||
Times * tab1;
|
||||
size_t len1;
|
||||
|
||||
Times * tab5;
|
||||
size_t len5;
|
||||
|
||||
Times * tab15;
|
||||
size_t len15;
|
||||
|
||||
double cache_load1;
|
||||
double cache_load5;
|
||||
double cache_load15;
|
||||
|
||||
double cache_req_per_sec1;
|
||||
double cache_req_per_sec5;
|
||||
double cache_req_per_sec15;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user