Remoto - VFS: cpuUsage.h Source File
Remoto - VFS
cpuUsage.h
Go to the documentation of this file.
1 
2 #ifndef CPUUSAGE_H
3 #define CPUUSAGE_H
4 
5 #include <QList>
6 #include <QPair>
7 
8 #include "VFS_application.h"
9 
10 #define MAX_SAMPLES 3600 //in seconds
11 
12 class cpuUsage : public VFS_application
13 {
14  Q_OBJECT
15 
16  public:
17  Q_INVOKABLE explicit cpuUsage();
18  virtual ~cpuUsage();
19 
20  static QString code(QString nodename, QString libname, QString &error);
21 
22  bool isContainer();
23 
24  protected:
25  virtual QByteArray icon();
26  void timerEvent(QTimerEvent *event);
27 
28  private:
29  // virtual void ls(VFS_request *r);
30  virtual void read(VFS_request *r);
31  // virtual void write(VFS_request *r);
32  virtual void metadata(VFS_request *r);
33  // virtual void report(VFS_request *r);
34  // virtual void submit(VFS_request *r);
35  // virtual void rm(VFS_request *r);
36 
37  QString runCommand(QString which);
38  void getCPUSample(quint64 t);
39  void getRAMSample(quint64 t);
40  void getREQSample(quint64 t);
41 
42  QString _kernel;
44  float _scale;
45 
46  QList< QPair<quint64,double> > _cpuSamples;
47  QList< QPair<quint64,double> > _ramSamples;
48  QList< QPair<quint64,quint16> > _reqSamples;
49 
50  QJsonObject _cpu_diff;
51  QJsonObject _ram_diff;
52  QJsonObject _req_diff;
53 
54  private slots:
55  virtual void initialize();
56 };
57 
58 #endif // CPUUSAGE_H
A common base class for all things that want to act like an application or include ACL support.
The base class for all requests between nodes.
Definition: VFS_node.h:54
A VFS_application plugin for reporting CPU and RAM usage over time.
Definition: cpuUsage.h:13
QJsonObject _cpu_diff
The CPU diff.
Definition: cpuUsage.h:50
int _processors
The number of processors available on this machine.
Definition: cpuUsage.h:43
virtual QByteArray icon()
Return the icon.
Definition: cpuUsage.cpp:83
void getRAMSample(quint64 t)
Get a RAM sample.
Definition: cpuUsage.cpp:211
QList< QPair< quint64, double > > _ramSamples
The RAM samples recorded.
Definition: cpuUsage.h:47
virtual void metadata(VFS_request *r)
Fetch the metadata of this node.
Definition: cpuUsage.cpp:89
virtual void initialize()
Start the sample timer.
Definition: cpuUsage.cpp:63
QJsonObject _req_diff
The VFS_request sample diff.
Definition: cpuUsage.h:52
float _scale
The amount to scale processor values.
Definition: cpuUsage.h:44
virtual ~cpuUsage()
Definition: cpuUsage.cpp:55
void getREQSample(quint64 t)
Take a sample of the current VFS_request::_refcount.
Definition: cpuUsage.cpp:232
static QString code(QString nodename, QString libname, QString &error)
Fetch code from this node.
Definition: cpuUsage.cpp:141
QString runCommand(QString which)
Execute a shell command to gather sample data.
Definition: cpuUsage.cpp:261
QList< QPair< quint64, quint16 > > _reqSamples
The VFS_request count sample recorded.
Definition: cpuUsage.h:48
bool isContainer()
This is always false.
Definition: cpuUsage.cpp:73
virtual void read(VFS_request *r)
Return the data contents of this node, or if it's a container call ls()
Definition: cpuUsage.cpp:108
Q_INVOKABLE cpuUsage()
The cpuUsage constructor.
Definition: cpuUsage.cpp:25
QString _kernel
The kernel string reported by Qt.
Definition: cpuUsage.h:42
QList< QPair< quint64, double > > _cpuSamples
The CPU samples recorded.
Definition: cpuUsage.h:46
void timerEvent(QTimerEvent *event)
Gather the CPU and RAM samples.
Definition: cpuUsage.cpp:157
void getCPUSample(quint64 t)
Get a CPU sample.
Definition: cpuUsage.cpp:192
QJsonObject _ram_diff
The RAM diff.
Definition: cpuUsage.h:51