def memory(self): """ Uses /proc/meminfo to obtain information on memory usage See `man 5 proc` for more information """ mem_info = dict_from_file('/proc/meminfo') total = to_bytes(*mem_info['MemTotal:'].split()) free = to_bytes(*mem_info['MemFree:'].split()) buffers = to_bytes(*mem_info['Buffers:'].split()) cached = to_bytes(*mem_info['Cached:'].split()) available = free + buffers + cached pavailable = (available * 100) / total used = total - available pused = (used * 100) / total return { 'total': total, 'free': free, 'buffers': buffers, 'cached': cached, 'available': available, 'pavailable': pavailable, 'used': used, 'pused': pused, }
def test_returns_dict(self): ensure_contains_only_formatted_lines(FILE_PATH, 'key value') d = dict_from_file(FILE_PATH) assert_is_instance(d, dict) assert_less(0, len(d))
def swap_info(self): """ Obtains information from /proc/vmstat See `man 5 proc` for more information """ vmstat = dict_from_file('/proc/vmstat') return SwapInfo(read=int(vmstat['pswpin']), write=int(vmstat['pswpout']))
def _process_status(self, process_id): process_status_file_path = os.path.join('/proc', process_id, 'status') process_status = dict_from_file(process_status_file_path, ':\t') process_status['Uid'] = int(process_status['Uid'].split('\t') [0]) # only effective UID is needed process_status['State'] = PROCESS_STATE_MAP.get( process_status['State'], 'sleep') # VmSize field can be missing # See ${linux}/fs/proc/array.c:proc_pid_status for more information if 'VmSize' in process_status: process_status['VmSize'] = to_bytes( *process_status['VmSize'].split()) else: process_status['VmSize'] = 0 return process_status
def _process_status(self, process_id): process_status_file_path = os.path.join('/proc', process_id, 'status') process_status = dict_from_file(process_status_file_path, ':\t') process_status['Uid'] = int( process_status['Uid'].split('\t')[0] ) # only effective UID is needed process_status['State'] = PROCESS_STATE_MAP.get( process_status['State'], 'sleep' ) # VmSize field can be missing # See ${linux}/fs/proc/array.c:proc_pid_status for more information if 'VmSize' in process_status: process_status['VmSize'] = to_bytes( *process_status['VmSize'].split()) else: process_status['VmSize'] = 0 return process_status
def test_lines_without_value_are_not_included(self): ensure_contains_only_formatted_lines(FILE_PATH, 'key') d = dict_from_file(FILE_PATH) assert_equal(0, len(d))