Correct a bug on the critical limit for procecess / Take into acount the number of core in the process CPU limits

This commit is contained in:
Nicolas Hennion 2013-01-31 21:51:37 +01:00
parent 6ec4216c36
commit 62db083233
2 changed files with 33 additions and 22 deletions

View File

@ -23,4 +23,4 @@ http://packages.debian.org/fr/sid/glances
Nicolas Bourges for the Windows installer Nicolas Bourges for the Windows installer
Aljaž Srebrnič for the MacPorts package Aljaž Srebrnič for the MacPorts package
https://distfiles.macports.org/glances/ http://www.macports.org/ports.php?by=name&substr=glances

View File

@ -19,7 +19,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
__appname__ = 'glances' __appname__ = 'glances'
__version__ = "1.6" __version__ = "1.7alpha"
__author__ = "Nicolas Hennion <nicolas@nicolargo.com>" __author__ = "Nicolas Hennion <nicolas@nicolargo.com>"
__licence__ = "LGPL" __licence__ = "LGPL"
@ -345,14 +345,23 @@ class glancesLimits:
def getFSCritical(self): def getFSCritical(self):
return self.getCritical('FS') return self.getCritical('FS')
def getProcessCareful(self, stat=''): def getProcessCareful(self, stat='', core=1):
return self.getCareful('PROCESS_' + stat.upper()) if (stat.upper() != 'CPU'):
# Use core only for CPU
core = 1
return self.getCareful('PROCESS_' + stat.upper()) * core
def getProcessWarning(self, stat=''): def getProcessWarning(self, stat='', core=1):
return self.getWarning('PROCESS_' + stat.upper()) if (stat.upper() != 'CPU'):
# Use core only for CPU
core = 1
return self.getWarning('PROCESS_' + stat.upper()) * core
def getProcessCritical(self, stat=''): def getProcessCritical(self, stat='', core=1):
return self.getWarning('PROCESS_' + stat.upper()) if (stat.upper() != 'CPU'):
# Use core only for CPU
core = 1
return self.getCritical('PROCESS_' + stat.upper()) * core
class glancesLogs: class glancesLogs:
@ -1528,30 +1537,31 @@ class glancesScreen:
""" """
return self.__colors_list2[self.__getSensorsAlert(current)] return self.__colors_list2[self.__getSensorsAlert(current)]
def __getProcessAlert(self, current=0, max=100, stat=''): def __getProcessAlert(self, current=0, max=100, stat='', core=1):
# If current < CAREFUL of max then alert = OK # If current < CAREFUL of max then alert = OK
# If current > CAREFUL of max then alert = CAREFUL # If current > CAREFUL of max then alert = CAREFUL
# If current > WARNING of max then alert = WARNING # If current > WARNING of max then alert = WARNING
# If current > CRITICAL of max then alert = CRITICAL # If current > CRITICAL of max then alert = CRITICAL
# If stat == 'CPU', get core into account...
try: try:
variable = (current * 100) / max variable = (current * 100) / max
except ZeroDivisionError: except ZeroDivisionError:
return 'DEFAULT' return 'DEFAULT'
if variable > limits.getProcessCritical(stat=stat): if variable > limits.getProcessCritical(stat=stat, core=core):
return 'CRITICAL' return 'CRITICAL'
elif variable > limits.getProcessWarning(stat=stat): elif variable > limits.getProcessWarning(stat=stat, core=core):
return 'WARNING' return 'WARNING'
elif variable > limits.getProcessCareful(stat=stat): elif variable > limits.getProcessCareful(stat=stat, core=core):
return 'CAREFUL' return 'CAREFUL'
return 'OK' return 'OK'
def __getProcessCpuColor(self, current=0, max=100): def __getProcessCpuColor(self, current=0, max=100, core=1):
return self.__colors_list[self.__getProcessAlert(current, max, 'CPU')] return self.__colors_list[self.__getProcessAlert(current, max, 'CPU', core)]
def __getProcessCpuColor2(self, current=0, max=100): def __getProcessCpuColor2(self, current=0, max=100, core=1):
return self.__colors_list2[self.__getProcessAlert(current, max, 'CPU')] return self.__colors_list2[self.__getProcessAlert(current, max, 'CPU', core)]
def __getProcessMemColor(self, current=0, max=100): def __getProcessMemColor(self, current=0, max=100):
return self.__colors_list[self.__getProcessAlert(current, max, 'MEM')] return self.__colors_list[self.__getProcessAlert(current, max, 'MEM')]
@ -1666,7 +1676,8 @@ class glancesScreen:
network_count + diskio_count) network_count + diskio_count)
log_count = self.displayLog(self.network_y + sensors_count + network_count + log_count = self.displayLog(self.network_y + sensors_count + network_count +
diskio_count + fs_count) diskio_count + fs_count)
self.displayProcess(processcount, processlist, stats.getSortedBy(), log_count) self.displayProcess(processcount, processlist, stats.getSortedBy(),
log_count=log_count, core=stats.getCore())
self.displayCaption(cs_status=cs_status) self.displayCaption(cs_status=cs_status)
self.displayNow(stats.getNow()) self.displayNow(stats.getNow())
self.displayHelp(core=stats.getCore()) self.displayHelp(core=stats.getCore())
@ -2330,7 +2341,7 @@ class glancesScreen:
else: else:
return 0 return 0
def displayProcess(self, processcount, processlist, sortedby='', log_count=0): def displayProcess(self, processcount, processlist, sortedby='', log_count=0, core=1):
# Process # Process
if not processcount: if not processcount:
return 0 return 0
@ -2495,7 +2506,7 @@ class glancesScreen:
self.term_window.addnstr( self.term_window.addnstr(
self.process_y + 3 + processes, process_x + 12, self.process_y + 3 + processes, process_x + 12,
format(cpu_percent, '>5.1f'), 5, format(cpu_percent, '>5.1f'), 5,
self.__getProcessCpuColor2(cpu_percent)) self.__getProcessCpuColor2(cpu_percent, core=core))
# MEM% # MEM%
memory_percent = processlist[processes]['memory_percent'] memory_percent = processlist[processes]['memory_percent']
self.term_window.addnstr( self.term_window.addnstr(
@ -2743,9 +2754,9 @@ class glancesScreen:
limits_table_y, limits_table_x, limits_table_y, limits_table_x,
"{0:^16} {1:^{width}}{2:^{width}}{3:^{width}}{4:^{width}}".format( "{0:^16} {1:^{width}}{2:^{width}}{3:^{width}}{4:^{width}}".format(
_("CPU Process %"), '0', _("CPU Process %"), '0',
limits.getProcessCareful(stat='CPU'), limits.getProcessCareful(stat='CPU', core=core),
limits.getProcessWarning(stat='CPU'), limits.getProcessWarning(stat='CPU', core=core),
limits.getProcessCritical(stat='CPU'), limits.getProcessCritical(stat='CPU', core=core),
width=width), 79) width=width), 79)
limits_table_y += 1 limits_table_y += 1
self.term_window.addnstr( self.term_window.addnstr(