diff options
Diffstat (limited to 'glances/plugins/glances_diskio.py')
-rw-r--r-- | glances/plugins/glances_diskio.py | 86 |
1 files changed, 60 insertions, 26 deletions
diff --git a/glances/plugins/glances_diskio.py b/glances/plugins/glances_diskio.py index 25b2bfe7..1439bfa4 100644 --- a/glances/plugins/glances_diskio.py +++ b/glances/plugins/glances_diskio.py @@ -21,8 +21,7 @@ import operator -# Import Glances libs -from glances.core.glances_timer import getTimeSinceLastUpdate +from glances.timer import getTimeSinceLastUpdate from glances.plugins.glances_plugin import GlancesPlugin import psutil @@ -44,8 +43,7 @@ class Plugin(GlancesPlugin): def __init__(self, args=None): """Init the plugin.""" - GlancesPlugin.__init__( - self, args=args, items_history_list=items_history_list) + super(Plugin, self).__init__(args=args, items_history_list=items_history_list) # We want to display the stat in the curse interface self.display_curse = True @@ -96,7 +94,20 @@ class Plugin(GlancesPlugin): diskio_new = diskiocounters for disk in diskio_new: + # By default, RamFS is not displayed (issue #714) + if self.args is not None and not self.args.diskio_show_ramfs and disk.startswith('ram'): + continue + + # Do not take hide disk into account + if self.is_hide(disk): + continue + + # Compute count and bit rate try: + read_count = (diskio_new[disk].read_count - + self.diskio_old[disk].read_count) + write_count = (diskio_new[disk].write_count - + self.diskio_old[disk].write_count) read_bytes = (diskio_new[disk].read_bytes - self.diskio_old[disk].read_bytes) write_bytes = (diskio_new[disk].write_bytes - @@ -104,6 +115,8 @@ class Plugin(GlancesPlugin): diskstat = { 'time_since_update': time_since_update, 'disk_name': disk, + 'read_count': read_count, + 'write_count': write_count, 'read_bytes': read_bytes, 'write_bytes': write_bytes} except KeyError: @@ -130,7 +143,7 @@ class Plugin(GlancesPlugin): def update_views(self): """Update stats views.""" # Call the father's method - GlancesPlugin.update_views(self) + super(Plugin, self).update_views() # Add specifics informations # Alert @@ -154,15 +167,18 @@ class Plugin(GlancesPlugin): # Header msg = '{0:9}'.format('DISK I/O') ret.append(self.curse_add_line(msg, "TITLE")) - msg = '{0:>7}'.format('R/s') - ret.append(self.curse_add_line(msg)) - msg = '{0:>7}'.format('W/s') - ret.append(self.curse_add_line(msg)) + if args.diskio_iops: + msg = '{0:>7}'.format('IOR/s') + ret.append(self.curse_add_line(msg)) + msg = '{0:>7}'.format('IOW/s') + ret.append(self.curse_add_line(msg)) + else: + msg = '{0:>7}'.format('R/s') + ret.append(self.curse_add_line(msg)) + msg = '{0:>7}'.format('W/s') + ret.append(self.curse_add_line(msg)) # Disk list (sorted by name) for i in sorted(self.stats, key=operator.itemgetter(self.get_key())): - # Do not display hidden interfaces - if self.is_hide(i['disk_name']): - continue # Is there an alias for the disk name ? disk_real_name = i['disk_name'] disk_name = self.has_alias(i['disk_name']) @@ -175,19 +191,37 @@ class Plugin(GlancesPlugin): disk_name = '_' + disk_name[-8:] msg = '{0:9}'.format(disk_name) ret.append(self.curse_add_line(msg)) - txps = self.auto_unit( - int(i['read_bytes'] // i['time_since_update'])) - rxps = self.auto_unit( - int(i['write_bytes'] // i['time_since_update'])) - msg = '{0:>7}'.format(txps) - ret.append(self.curse_add_line(msg, - self.get_views(item=i[self.get_key()], - key='read_bytes', - option='decoration'))) - msg = '{0:>7}'.format(rxps) - ret.append(self.curse_add_line(msg, - self.get_views(item=i[self.get_key()], - key='write_bytes', - option='decoration'))) + if args.diskio_iops: + # count + txps = self.auto_unit( + int(i['read_count'] // i['time_since_update'])) + rxps = self.auto_unit( + int(i['write_count'] // i['time_since_update'])) + msg = '{0:>7}'.format(txps) + ret.append(self.curse_add_line(msg, + self.get_views(item=i[self.get_key()], + key='read_count', + option='decoration'))) + msg = '{0:>7}'.format(rxps) + ret.append(self.curse_add_line(msg, + self.get_views(item=i[self.get_key()], + key='write_count', + option='decoration'))) + else: + # Bitrate + txps = self.auto_unit( + int(i['read_bytes'] // i['time_since_update'])) + rxps = self.auto_unit( + int(i['write_bytes'] // i['time_since_update'])) + msg = '{0:>7}'.format(txps) + ret.append(self.curse_add_line(msg, + self.get_views(item=i[self.get_key()], + key='read_bytes', + option='decoration'))) + msg = '{0:>7}'.format(rxps) + ret.append(self.curse_add_line(msg, + self.get_views(item=i[self.get_key()], + key='write_bytes', + option='decoration'))) return ret |