OpenSDN source code
vm_stat.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef vnsw_agent_vm_stat_h
6 #define vnsw_agent_vm_stat_h
7 
8 #include <vector>
9 #include <sandesh/common/vns_types.h>
10 #include <virtual_machine_types.h>
11 #include <boost/uuid/uuid_io.hpp>
12 #include "base/timer.h"
13 #include <cmn/agent_cmn.h>
14 
15 class VmStatData;
16 
17 class VmStat {
18 public:
19  static const size_t kBufLen = 4098;
20  static const uint32_t kRetryCount = 3;
21  static const uint16_t kInvalidCpuCount = 0xFFFF;
22  typedef boost::function<void(void)> DoneCb;
23 
24  VmStat(Agent *agent, const boost::uuids::uuid &vm_uuid);
25  virtual ~VmStat();
26  bool marked_delete() const { return marked_delete_; }
27 
28  virtual void Start();
29  void Stop();
30  void ProcessData();
31 private:
32  bool BuildVmStatsMsg(VirtualMachineStats *uve);
33  bool BuildVmMsg(UveVirtualMachineAgent *uve);
34  void ReadData(const boost::system::error_code &ec, size_t read_bytes,
35  DoneCb &cb);
36  virtual bool TimerExpiry();
37 
38 protected:
39  void StartTimer();
40  void ExecCmd(std::string cmd, DoneCb cb);
41  void SendVmCpuStats();
42 
45  uint32_t mem_usage_;
46  uint32_t virt_memory_;
48  uint32_t vm_memory_quota_;
50  double cpu_usage_;
52  std::vector<double> prev_vcpu_usage_;
53  std::vector<double> vcpu_usage_percent_;
56  std::stringstream data_;
57  boost::asio::posix::stream_descriptor input_;
60  uint32_t pid_;
61  uint32_t retry_;
63  uint32_t virtual_size_;
64  uint32_t disk_size_;
65  std::string disk_name_;
68  uint16_t vm_cpu_count_;
71 };
72 #endif // vnsw_agent_vm_stat_h
Definition: agent.h:360
Definition: timer.h:54
Definition: vm_stat.h:17
virtual void Start()
Definition: vm_stat.cc:211
uint32_t disk_size_
Definition: vm_stat.h:64
uint32_t pid_
Definition: vm_stat.h:60
DoneCb call_back_
Definition: vm_stat.h:62
void SendVmCpuStats()
Definition: vm_stat.cc:179
boost::asio::posix::stream_descriptor input_
Definition: vm_stat.h:57
boost::function< void(void)> DoneCb
Definition: vm_stat.h:22
double prev_cpu_stat_
Definition: vm_stat.h:49
virtual bool TimerExpiry()
Definition: vm_stat.cc:201
std::vector< double > vcpu_usage_percent_
Definition: vm_stat.h:53
bool BuildVmMsg(UveVirtualMachineAgent *uve)
Definition: vm_stat.cc:147
uint32_t virt_memory_
Definition: vm_stat.h:46
uint32_t virtual_size_
Definition: vm_stat.h:63
void ProcessData()
Definition: vm_stat.cc:69
VrouterAgentVmState::type vm_state_
Definition: vm_stat.h:66
void StartTimer()
Definition: vm_stat.cc:205
uint16_t vm_cpu_count_
Definition: vm_stat.h:68
static const uint32_t kRetryCount
Definition: vm_stat.h:20
void Stop()
Definition: vm_stat.cc:214
void ExecCmd(std::string cmd, DoneCb cb)
Definition: vm_stat.cc:74
DISALLOW_COPY_AND_ASSIGN(VmStat)
const boost::uuids::uuid vm_uuid_
Definition: vm_stat.h:44
double cpu_usage_
Definition: vm_stat.h:50
static const uint16_t kInvalidCpuCount
Definition: vm_stat.h:21
uint32_t retry_
Definition: vm_stat.h:61
virtual ~VmStat()
Definition: vm_stat.cc:41
std::string disk_name_
Definition: vm_stat.h:65
time_t prev_cpu_snapshot_time_
Definition: vm_stat.h:51
static const size_t kBufLen
Definition: vm_stat.h:19
VrouterAgentVmState::type prev_vm_state_
Definition: vm_stat.h:67
char rx_buff_[kBufLen]
Definition: vm_stat.h:55
uint32_t vm_memory_quota_
Definition: vm_stat.h:48
Timer * timer_
Definition: vm_stat.h:58
uint32_t virt_memory_peak_
Definition: vm_stat.h:47
void ReadData(const boost::system::error_code &ec, size_t read_bytes, DoneCb &cb)
Definition: vm_stat.cc:45
std::vector< double > prev_vcpu_usage_
Definition: vm_stat.h:52
uint32_t mem_usage_
Definition: vm_stat.h:45
bool marked_delete() const
Definition: vm_stat.h:26
time_t prev_vcpu_snapshot_time_
Definition: vm_stat.h:54
bool BuildVmStatsMsg(VirtualMachineStats *uve)
Definition: vm_stat.cc:127
std::stringstream data_
Definition: vm_stat.h:56
uint16_t prev_vm_cpu_count_
Definition: vm_stat.h:69
bool marked_delete_
Definition: vm_stat.h:59
VmStat(Agent *agent, const boost::uuids::uuid &vm_uuid)
Definition: vm_stat.cc:27
Agent * agent_
Definition: vm_stat.h:43
uint8_t type
Definition: load_balance.h:2
boost::uuids::uuid uuid