Skip to content

Commit

Permalink
Merge "Flatten NodeStatus.system_mem_cpu_info structure to access all…
Browse files Browse the repository at this point in the history
… fields" into R3.1
  • Loading branch information
Zuul authored and opencontrail-ci-admin committed Jan 13, 2017
2 parents a8a508f + 163c69c commit 4ffdd8a
Show file tree
Hide file tree
Showing 5 changed files with 125 additions and 82 deletions.
150 changes: 95 additions & 55 deletions src/analytics/viz.sandesh
Original file line number Diff line number Diff line change
Expand Up @@ -2084,88 +2084,128 @@ const list<stat_table> _STAT_TABLES = [
]
},
{
'display_name' : 'Analytics System Memory CPU Usage',
'display_name' : 'Analytics System Memory Usage',
'stat_type' : 'NodeStatus'
'stat_attr' : 'system_mem_cpu_usage',
'stat_attr' : 'system_mem_usage',
'obj_table' : COLLECTOR_INFO_TABLE,
'attributes': [
{ 'name' : 'system_mem_cpu_usage.mem_info.total', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.used', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.free', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.buffers', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.cached', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_load.one_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_load.five_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_load.fifteen_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_share', 'datatype' : 'double', 'index' : true},
{ 'name' : 'system_mem_usage.total', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.used', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.free', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.buffers', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.cached', 'datatype' : 'int', 'index' : false},
]
},
{
'display_name' : 'Database System Memory CPU Usage',
'display_name' : 'Database System Memory Usage',
'stat_type' : 'NodeStatus'
'stat_attr' : 'system_mem_cpu_usage',
'stat_attr' : 'system_mem_usage',
'obj_table' : DATABASE_INFO_TABLE,
'attributes': [
{ 'name' : 'system_mem_cpu_usage.mem_info.total', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.used', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.free', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.buffers', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.cached', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_load.one_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_load.five_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_load.fifteen_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_share', 'datatype' : 'double', 'index' : true},
{ 'name' : 'system_mem_usage.total', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.used', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.free', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.buffers', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.cached', 'datatype' : 'int', 'index' : false},
]
},
{
'display_name' : 'Config System Memory CPU Usage',
'display_name' : 'Config System Memory Usage',
'stat_type' : 'NodeStatus'
'stat_attr' : 'system_mem_cpu_usage',
'stat_attr' : 'system_mem_usage',
'obj_table' : CONFIG_NODE_TABLE,
'attributes': [
{ 'name' : 'system_mem_cpu_usage.mem_info.total', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.used', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.free', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.buffers', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.cached', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_load.one_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_load.five_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_load.fifteen_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_share', 'datatype' : 'double', 'index' : true},
{ 'name' : 'system_mem_usage.total', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.used', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.free', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.buffers', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.cached', 'datatype' : 'int', 'index' : false},
]
},
{
'display_name' : 'Control-node System Memory CPU Usage',
'display_name' : 'Control-node System Memory Usage',
'stat_type' : 'NodeStatus'
'stat_attr' : 'system_mem_cpu_usage',
'stat_attr' : 'system_mem_usage',
'obj_table' : BGP_ROUTER_TABLE,
'attributes': [
{ 'name' : 'system_mem_cpu_usage.mem_info.total', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.used', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.free', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.buffers', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.cached', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_load.one_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_load.five_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_load.fifteen_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_share', 'datatype' : 'double', 'index' : true},
{ 'name' : 'system_mem_usage.total', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.used', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.free', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.buffers', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.cached', 'datatype' : 'int', 'index' : false},
]
},
{
'display_name' : 'Vrouter System Memory CPU Usage',
'display_name' : 'Vrouter System Memory Usage',
'stat_type' : 'NodeStatus'
'stat_attr' : 'system_mem_cpu_usage',
'stat_attr' : 'system_mem_usage',
'obj_table' : VROUTER_TABLE,
'attributes': [
{ 'name' : 'system_mem_cpu_usage.mem_info.total', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.used', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.free', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.buffers', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.mem_info.cached', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_load.one_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_load.five_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_load.fifteen_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_cpu_usage.cpu_share', 'datatype' : 'double', 'index' : true},
{ 'name' : 'system_mem_usage.total', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.used', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.free', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.buffers', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_mem_usage.cached', 'datatype' : 'int', 'index' : false},
]
},
{
'display_name' : 'Analytics System CPU Usage',
'stat_type' : 'NodeStatus'
'stat_attr' : 'system_cpu_usage',
'obj_table' : COLLECTOR_INFO_TABLE,
'attributes': [
{ 'name' : 'system_cpu_usage.one_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_cpu_usage.five_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_cpu_usage.fifteen_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_cpu_usage.cpu_share', 'datatype' : 'double', 'index' : true},
]
},
{
'display_name' : 'Database System CPU Usage',
'stat_type' : 'NodeStatus'
'stat_attr' : 'system_cpu_usage',
'obj_table' : DATABASE_INFO_TABLE,
'attributes': [
{ 'name' : 'system_cpu_usage.one_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_cpu_usage.five_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_cpu_usage.fifteen_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_cpu_usage.cpu_share', 'datatype' : 'double', 'index' : true},
]
},
{
'display_name' : 'Config System CPU Usage',
'stat_type' : 'NodeStatus'
'stat_attr' : 'system_cpu_usage',
'obj_table' : CONFIG_NODE_TABLE,
'attributes': [
{ 'name' : 'system_cpu_usage.one_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_cpu_usage.five_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_cpu_usage.fifteen_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_cpu_usage.cpu_share', 'datatype' : 'double', 'index' : true},
]
},
{
'display_name' : 'Control-node System CPU Usage',
'stat_type' : 'NodeStatus'
'stat_attr' : 'system_cpu_usage',
'obj_table' : BGP_ROUTER_TABLE,
'attributes': [
{ 'name' : 'system_cpu_usage.one_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_cpu_usage.five_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_cpu_usage.fifteen_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_cpu_usage.cpu_share', 'datatype' : 'double', 'index' : true},
]
},
{
'display_name' : 'Vrouter System CPU Usage',
'stat_type' : 'NodeStatus'
'stat_attr' : 'system_cpu_usage',
'obj_table' : VROUTER_TABLE,
'attributes': [
{ 'name' : 'system_cpu_usage.one_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_cpu_usage.five_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_cpu_usage.fifteen_min_avg', 'datatype' : 'int', 'index' : false},
{ 'name' : 'system_cpu_usage.cpu_share', 'datatype' : 'double', 'index' : true},
]
},
{
Expand Down
11 changes: 6 additions & 5 deletions src/base/sandesh/cpuinfo.sandesh
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,11 @@ struct SystemCpuInfo {
}

/**
* This structure carries system memory and cpu information
* This structure carries system's cpu information.
*/
struct SystemMemCpuUsage {
1: SysMemInfo mem_info;
2: CpuLoadAvg cpu_load;
3: double cpu_share;
struct SysCpuInfo {
1: double one_min_avg;
2: double five_min_avg;
3: double fifteen_min_avg;
4: double cpu_share;
}
3 changes: 2 additions & 1 deletion src/base/sandesh/nodeinfo.sandesh
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,9 @@ struct NodeStatus {
9: optional string build_info
// map key is <module_id>:<inst_id>
10: optional map<string,cpuinfo.ProcessCpuInfo> process_mem_cpu_usage (tags=".__key,.cpu_share")
11: optional cpuinfo.SystemMemCpuUsage system_mem_cpu_usage(tags=".cpu_share")
12: optional cpuinfo.SystemCpuInfo system_cpu_info
13: optional cpuinfo.SysMemInfo system_mem_usage(tags="")
14: optional cpuinfo.SysCpuInfo system_cpu_usage(tags=".cpu_share")
}

/**
Expand Down
22 changes: 12 additions & 10 deletions src/nodemgr/common/cpuinfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def get_num_thread_per_core (self):
return int(proc.communicate()[0])
#end get_num_thread_per_core

def _get_sys_mem_info(self):
def get_sys_mem_info(self):
virtmem_info = psutil.virtual_memory()
sys_mem_info = SysMemInfo()
sys_mem_info.total = virtmem_info.total/1024
Expand All @@ -57,7 +57,17 @@ def _get_sys_mem_info(self):
sys_mem_info.buffers = virtmem_info.buffers/1024
sys_mem_info.cached = virtmem_info.cached/1024
return sys_mem_info
#end _get_sys_mem_info
#end get_sys_mem_info

def get_sys_cpu_info(self):
cpu_load_avg = self._get_cpu_load_avg()
sys_cpu_info = SysCpuInfo()
sys_cpu_info.one_min_avg = cpu_load_avg.one_min_avg
sys_cpu_info.five_min_avg = cpu_load_avg.five_min_avg
sys_cpu_info.fifteen_min_avg = cpu_load_avg.fifteen_min_avg
sys_cpu_info.cpu_share = self._get_sys_cpu_share()
return sys_cpu_info
#end get_sys_cpu_info

def _get_cpu_load_avg(self):
load_avg = os.getloadavg()
Expand Down Expand Up @@ -96,14 +106,6 @@ def _get_sys_cpu_share(self):
return 0
#end _get_sys_cpu_share

def get_sys_mem_cpu_info(self):
sys_mem_cpu = SystemMemCpuUsage()
sys_mem_cpu.cpu_load = self._get_cpu_load_avg()
sys_mem_cpu.mem_info = self._get_sys_mem_info()
sys_mem_cpu.cpu_share = self._get_sys_cpu_share()
return sys_mem_cpu
#end get_sys_mem_cpu_info

def _get_process_cpu_share(self):
last_cpu = self.last_cpu
last_time = self.last_time
Expand Down
21 changes: 10 additions & 11 deletions src/nodemgr/common/event_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -395,13 +395,6 @@ def send_system_cpu_info(self):
data=node_status)
node_status_uve.send()

def get_system_mem_cpu_usage(self):
system_mem_cpu_usage_data = MemCpuUsageData(os.getpid(), self.last_cpu, self.last_time)
system_mem_cpu_usage = system_mem_cpu_usage_data.get_sys_mem_cpu_info()
self.last_cpu = system_mem_cpu_usage_data.last_cpu
self.last_time = system_mem_cpu_usage_data.last_time
return system_mem_cpu_usage

def get_all_processes_mem_cpu_usage(self):
process_mem_cpu_usage = {}
for key in self.process_state_db:
Expand Down Expand Up @@ -560,16 +553,22 @@ def event_tick_60(self):
if self.update_process_core_file_list():
self.send_process_state_db(['default'])

process_mem_cpu_usage = self.get_all_processes_mem_cpu_usage()

# get system mem/cpu usage
system_mem_cpu_usage = self.get_system_mem_cpu_usage()
system_mem_cpu_usage_data = MemCpuUsageData(os.getpid(), self.last_cpu, self.last_time)
system_mem_usage = system_mem_cpu_usage_data.get_sys_mem_info()
system_cpu_usage = system_mem_cpu_usage_data.get_sys_cpu_info()

# get processes mem/cpu usage
process_mem_cpu_usage = self.get_all_processes_mem_cpu_usage()
# update last_cpu/time after all processing is complete
self.last_cpu = system_mem_cpu_usage_data.last_cpu
self.last_time = system_mem_cpu_usage_data.last_time

# send above encoded buffer
node_status = NodeStatus(name=socket.gethostname(),
disk_usage_info=disk_usage_info,
system_mem_cpu_usage=system_mem_cpu_usage,
system_mem_usage=system_mem_usage,
system_cpu_usage=system_cpu_usage,
process_mem_cpu_usage=process_mem_cpu_usage)
# encode other core file
if self.update_all_core_file():
Expand Down

0 comments on commit 4ffdd8a

Please sign in to comment.