OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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
std::vector< double > vcpu_usage_percent_
Definition: vm_stat.h:53
uint16_t vm_cpu_count_
Definition: vm_stat.h:68
void ProcessData()
Definition: vm_stat.cc:69
uint32_t pid_
Definition: vm_stat.h:60
double cpu_usage_
Definition: vm_stat.h:50
time_t prev_cpu_snapshot_time_
Definition: vm_stat.h:51
void ExecCmd(std::string cmd, DoneCb cb)
Definition: vm_stat.cc:74
std::string disk_name_
Definition: vm_stat.h:65
virtual ~VmStat()
Definition: vm_stat.cc:41
bool BuildVmMsg(UveVirtualMachineAgent *uve)
Definition: vm_stat.cc:147
VrouterAgentVmState::type vm_state_
Definition: vm_stat.h:66
boost::uuids::uuid uuid
static const uint32_t kRetryCount
Definition: vm_stat.h:20
uint32_t disk_size_
Definition: vm_stat.h:64
Definition: vm_stat.h:17
bool BuildVmStatsMsg(VirtualMachineStats *uve)
Definition: vm_stat.cc:127
void ReadData(const boost::system::error_code &ec, size_t read_bytes, DoneCb &cb)
Definition: vm_stat.cc:45
std::stringstream data_
Definition: vm_stat.h:56
DoneCb call_back_
Definition: vm_stat.h:62
void SendVmCpuStats()
Definition: vm_stat.cc:179
uint16_t prev_vm_cpu_count_
Definition: vm_stat.h:69
VrouterAgentVmState::type prev_vm_state_
Definition: vm_stat.h:67
uint8_t type
Definition: load_balance.h:109
void Stop()
Definition: vm_stat.cc:214
DISALLOW_COPY_AND_ASSIGN(VmStat)
Definition: agent.h:358
uint32_t virt_memory_
Definition: vm_stat.h:46
uint32_t mem_usage_
Definition: vm_stat.h:45
uint32_t virt_memory_peak_
Definition: vm_stat.h:47
uint32_t virtual_size_
Definition: vm_stat.h:63
VmStat(Agent *agent, const boost::uuids::uuid &vm_uuid)
Definition: vm_stat.cc:27
std::vector< double > prev_vcpu_usage_
Definition: vm_stat.h:52
uint32_t vm_memory_quota_
Definition: vm_stat.h:48
bool marked_delete_
Definition: vm_stat.h:59
char rx_buff_[kBufLen]
Definition: vm_stat.h:55
virtual void Start()
Definition: vm_stat.cc:211
void StartTimer()
Definition: vm_stat.cc:205
double prev_cpu_stat_
Definition: vm_stat.h:49
Agent * agent_
Definition: vm_stat.h:43
virtual bool TimerExpiry()
Definition: vm_stat.cc:201
boost::asio::posix::stream_descriptor input_
Definition: vm_stat.h:57
static const uint16_t kInvalidCpuCount
Definition: vm_stat.h:21
Timer * timer_
Definition: vm_stat.h:58
bool marked_delete() const
Definition: vm_stat.h:26
boost::function< void(void)> DoneCb
Definition: vm_stat.h:22
Definition: timer.h:54
static const size_t kBufLen
Definition: vm_stat.h:19
uint32_t retry_
Definition: vm_stat.h:61
const boost::uuids::uuid vm_uuid_
Definition: vm_stat.h:44
time_t prev_vcpu_snapshot_time_
Definition: vm_stat.h:54