summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.server.scripts
diff options
context:
space:
mode:
authorTim <timothyasir@gluster.com>2011-07-26 17:35:11 +0530
committerTim <timothyasir@gluster.com>2011-07-26 17:35:11 +0530
commit78b66abd6bc3fd4d5966ad72c2acd86ccb32d4e4 (patch)
tree696b6fbc66bcd2dcf47bdb6f94e3f4994de8d923 /src/com.gluster.storage.management.server.scripts
parent5d2ca5c87d524ea78e45f8b7241e53e3451a21b6 (diff)
Added function to get average cpu usage and fixed bug in getCpuUsageAvg() function
Diffstat (limited to 'src/com.gluster.storage.management.server.scripts')
-rw-r--r--src/com.gluster.storage.management.server.scripts/src/Utils.py49
-rwxr-xr-xsrc/com.gluster.storage.management.server.scripts/src/get_server_details.py2
2 files changed, 23 insertions, 28 deletions
diff --git a/src/com.gluster.storage.management.server.scripts/src/Utils.py b/src/com.gluster.storage.management.server.scripts/src/Utils.py
index fe2816d0..3408c14a 100644
--- a/src/com.gluster.storage.management.server.scripts/src/Utils.py
+++ b/src/com.gluster.storage.management.server.scripts/src/Utils.py
@@ -386,41 +386,36 @@ def getCpuUsage():
result[fields[0]] = tuple(data)
return result
+def _getCpuStatList():
+ try:
+ fp = open("/proc/stat")
+ cpuStatList = map(float, fp.readline().split()[1:])
+ fp.close()
+ return cpuStatList
+ except IOError, e:
+ Utils.log("Failed to open /proc/stat: %s" % str(e))
+ return None
+
+def getCpuUsageAvg():
+ st1 = _getCpuStatList()
+ time.sleep(2)
+ st2 = _getCpuStatList()
+ if not (st1 and st2):
+ return None
+ delta = [st2[i] - st1[i] for i in range(len(st1))]
+ cpuPercent = sum(delta[:3]) / delta[3] * 100.0
+ return str('%.4f' % cpuPercent)
def getLoadavg():
- """-> 5-tuple containing the following numbers in order:
- - 1-minute load average (float)
- - 5-minute load average (float)
- - 15-minute load average (float)
- - Number of threads/processes currently executing (<= number of
- CPUs) (int)
- - Number of threads/processes that exist on the system (int)
- - The PID of the most recently-created process on the system (int)
- """
try:
loadavgstr = open('/proc/loadavg', 'r').readline().strip()
except IOError:
syslog.syslog(syslog.LOG_ERR, "failed to find cpu load")
return None
- data = loadavgstr.split()
- avg1, avg5, avg15 = map(float, data[:3])
- threads_and_procs_running, threads_and_procs_total = map(int,
- data[3].split('/'))
- most_recent_pid = int(data[4])
- ncpus = 1
- final_avg = ""
- if hasattr(os, "sysconf"):
- if os.sysconf_names.has_key("SC_NPROCESSORS_ONLN"):
- # Linux
- ncpus = os.sysconf("SC_NPROCESSORS_ONLN")
- if isinstance(ncpus, int) and ncpus > 0:
- final_avg = "%.4f" % (1.0 * avg1 / ncpus)
-
- # Future return everything when needed
- # Commenting this for the time being
- # avg5, avg15, threads_and_procs_running, threads_and_procs_total, most_recent_pid
- return final_avg
+ data = map(float, loadavgstr.split()[1:])
+ # returns 1 minute load average
+ return data[0]
def getInfinibandPortStatus():
diff --git a/src/com.gluster.storage.management.server.scripts/src/get_server_details.py b/src/com.gluster.storage.management.server.scripts/src/get_server_details.py
index cda1518b..9c3da741 100755
--- a/src/com.gluster.storage.management.server.scripts/src/get_server_details.py
+++ b/src/com.gluster.storage.management.server.scripts/src/get_server_details.py
@@ -30,7 +30,7 @@ from optparse import OptionParser
def getServerDetails(listall):
serverName = socket.gethostname()
meminfo = getMeminfo()
- cpu = 100 * float(getLoadavg())
+ cpu = getCpuUsageAvg()
nameServerList, domain, searchDomain = readResolvConfFile()
if not domain:
domain = [None]