monasca-agent/monasca_agent/common/psutil_wrapper.py

140 lines
3.6 KiB
Python

# Copyright 2017 Fujitsu LIMITED
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from collections import namedtuple
import psutil as psutil_orig
sconn = namedtuple('sconn', ['fd', 'family', 'type', 'laddr', 'raddr',
'status', 'pid'])
psutil = psutil_orig
def cpu_count(logical=True):
if logical:
return psutil.NUM_CPUS
else:
raise NotImplementedError
def net_connections(kind='inet'):
ret = set()
for p in psutil.process_iter():
try:
for c in p.connections(kind):
conn = sconn(c.fd, c.family, c.type, c.laddr, c.raddr,
c.status, p.pid)
ret.add(conn)
except (psutil.AccessDenied, psutil.NoSuchProcess):
pass
return list(ret)
def children(self, recursive=False):
return psutil.Process.get_children(self, recursive=recursive)
def connections(self, kind='inet'):
return psutil.Process.get_connections(self, kind=kind)
def cpu_affinity(self, cpus=None):
return psutil.Process.get_cpu_affinity(self)
def cpu_percent(self, interval=None):
return psutil.Process.get_cpu_percent(self, interval=interval)
def cpu_times(self):
return psutil.Process.get_cpu_times(self)
def memory_info_ex(self):
return psutil.Process.get_ext_memory_info(self)
def io_counters(self):
return psutil.Process.get_io_counters(self)
def ionice(self, ioclass=None, value=None):
return psutil.Process.get_ionice(self)
def memory_info(self):
return psutil.Process.get_memory_info(self)
def memory_maps(self, grouped=True):
return psutil.Process.get_memory_maps(self, grouped=grouped)
def memory_percent(self):
return psutil.Process.get_memory_percent(self)
def nice(self, value=None):
return psutil.Process.get_nice(self)
def num_ctx_switches(self):
return psutil.Process.get_num_ctx_switches(self)
def num_fds(self):
return psutil.Process.get_num_fds(self)
def num_threads(self):
return psutil.Process.get_num_threads(self)
def open_files(self):
return psutil.Process.get_open_files(self)
def threads(self):
return psutil.Process.get_threads(self)
def cwd(self):
return psutil.Process.getcwd(self)
if psutil.version_info < (2, 0):
psutil.cpu_count = cpu_count
psutil.Process.children = children
psutil.Process.connections = connections
psutil.Process.cpu_affinity = cpu_affinity
psutil.Process.cpu_percent = cpu_percent
psutil.Process.cpu_times = cpu_times
psutil.Process.memory_info_ex = memory_info_ex
psutil.Process.io_counters = io_counters
psutil.Process.ionice = ionice
psutil.Process.memory_info = memory_info
psutil.Process.memory_maps = memory_maps
psutil.Process.memory_percent = memory_percent
psutil.Process.nice = nice
psutil.Process.num_ctx_switches = num_ctx_switches
psutil.Process.num_fds = num_fds
psutil.Process.num_threads = num_threads
psutil.Process.open_files = open_files
psutil.Process.threads = threads
psutil.Process.cwd = cwd
if psutil.version_info < (2, 1):
psutil.net_connections = net_connections