Skip to content

Commit

Permalink
Merge pull request #18 from ducted/feature/15-use-memavailable-where-…
Browse files Browse the repository at this point in the history
…available

Feature/15 use memavailable where available
  • Loading branch information
calston committed Jan 24, 2017
2 parents e65e143 + a966649 commit 1169840
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 1 deletion.
7 changes: 6 additions & 1 deletion duct/sources/linux/basic.py
Original file line number Diff line number Diff line change
Expand Up @@ -262,10 +262,15 @@ class Memory(Source):
def _parse_stats(self, mem):
dat = {}
for l in mem:
if ':' not in l:
continue
k, v = l.replace(':', '').split()[:2]
dat[k] = int(v)

free = dat['MemFree'] + dat['Buffers'] + dat['Cached']
if 'MemAvailable' in dat:
free = dat['MemAvailable']
else:
free = dat['MemFree'] + dat['Buffers'] + dat['Cached']
total = dat['MemTotal']
used = total - free

Expand Down
34 changes: 34 additions & 0 deletions duct/tests/test_sources.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,40 @@ def test_basic_memory(self):

s.get()

def test_basic_memory_avail(self):
s = basic.Memory(
{'interval': 1.0, 'service': 'mem', 'ttl': 60}, self._qb, None)

out = """MemTotal: 8048992 kB
MemFree: 2774664 kB
MemAvailable: 5631108 kB
Buffers: 145408 kB
Cached: 3183724 kB
SwapCached: 0 kB\n"""
event = s._parse_stats(out.split('\n'))

used, total = event.description.split()[-1].split('/')
used = int(used)
total = int(total)
avail = total - used

self.assertEquals(avail, 5631108)

out = """MemTotal: 8048992 kB
MemFree: 2774664 kB
Buffers: 145408 kB
Cached: 3183724 kB
SwapCached: 0 kB\n"""
event = s._parse_stats(out.split('\n'))

used, total = event.description.split()[-1].split('/')
used = int(used)
total = int(total)
avail = total - used

self.assertEquals(avail, 6103796)


def test_basic_load(self):
self.skip_if_no_hostname()
s = basic.LoadAverage(
Expand Down

0 comments on commit 1169840

Please sign in to comment.