

def collect(self):
    '\n        Collect memory stats\n        '
    if os.access(self.PROC, os.R_OK):
        file = open(self.PROC)
        data = file.read()
        file.close()
        for line in data.splitlines():
            try:
                (name, value, units) = line.split()
                name = name.rstrip(':')
                value = int(value)
                if ((name not in _KEY_MAPPING) and ('detailed' not in self.config)):
                    continue
                for unit in self.config['byte_unit']:
                    value = diamond.convertor.binary.convert(value=value, oldUnit=units, newUnit=unit)
                    self.publish(name, value, metric_type='GAUGE')
                    break
            except ValueError:
                continue
        return True
    else:
        if (not psutil):
            self.log.error('Unable to import psutil')
            self.log.error('No memory metrics retrieved')
            return None
        phymem_usage = psutil.phymem_usage()
        virtmem_usage = psutil.virtmem_usage()
        units = 'B'
        for unit in self.config['byte_unit']:
            value = diamond.convertor.binary.convert(value=phymem_usage.total, oldUnit=units, newUnit=unit)
            self.publish('MemTotal', value, metric_type='GAUGE')
            value = diamond.convertor.binary.convert(value=phymem_usage.free, oldUnit=units, newUnit=unit)
            self.publish('MemFree', value, metric_type='GAUGE')
            value = diamond.convertor.binary.convert(value=virtmem_usage.total, oldUnit=units, newUnit=unit)
            self.publish('SwapTotal', value, metric_type='GAUGE')
            value = diamond.convertor.binary.convert(value=virtmem_usage.free, oldUnit=units, newUnit=units)
            self.publish('SwapFree', value, metric_type='GAUGE')
            break
        return True
    return None

dataset/ETHPy150Open BrightcoveOS/Diamond/src/collectors/memory/memory.py MemoryCollector.collect/VarMisuse@387/516 `unit`->`units`