MOON
Server: Apache
System: Linux srvsg2.lunchactually.com 3.10.0-957.27.2.el7.x86_64 #1 SMP Mon Jul 29 17:46:05 UTC 2019 x86_64
User: gldblog (1018)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: //usr/share/dstat/dstat_lustre.py
# Author: Brock Palen <[email protected]>, Kilian Vavalotti <[email protected]>

class dstat_plugin(dstat):
    def __init__(self):
        self.nick = ('read', 'write')

    def check(self):
        if not os.path.exists('/proc/fs/lustre/llite'):
            raise Exception, 'Lustre filesystem not found'
        info(1, 'Module %s is still experimental.' % self.filename)

    def name(self):
        return [mount for mount in os.listdir('/proc/fs/lustre/llite')]

    def vars(self):
        return [mount for mount in os.listdir('/proc/fs/lustre/llite')]

    def extract(self):
        for name in self.vars:
            for l in open(os.path.join('/proc/fs/lustre/llite', name, 'stats')).splitlines():
                if len(l) < 6: continue
                if l[0] == 'read_bytes':
                    read = long(l[6])
                elif l[0] == 'write_bytes':
                    write = long(l[6])
            self.set2[name] = (read, write)
            self.val[name] = ( (self.set2[name][0] - self.set1[name][0]) * 1.0 / elapsed,
                               (self.set2[name][1] - self.set1[name][1]) * 1.0 / elapsed )
        if step == op.delay:
            self.set1.update(self.set2)

# vim:ts=4:sw=4