Skip to content

Commit ea3d112

Browse files
author
Brian LaShomb
committed
Create freemem.py
1 parent 363520d commit ea3d112

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

freemem.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#!/usr/bin/env python
2+
3+
import subprocess
4+
import re
5+
6+
# Get process info
7+
ps = subprocess.Popen(['ps', '-caxm', '-orss,comm'], stdout=subprocess.PIPE).communicate()[0]
8+
vm = subprocess.Popen(['vm_stat'], stdout=subprocess.PIPE).communicate()[0]
9+
10+
# Iterate processes
11+
processLines = ps.split('\n')
12+
sep = re.compile('[\s]+')
13+
rssTotal = 0 # kB
14+
for row in range(1,len(processLines)):
15+
rowText = processLines[row].strip()
16+
rowElements = sep.split(rowText)
17+
try:
18+
rss = float(rowElements[0]) * 1024
19+
except:
20+
rss = 0 # ignore...
21+
rssTotal += rss
22+
23+
# Process vm_stat
24+
vmLines = vm.split('\n')
25+
sep = re.compile(':[\s]+')
26+
vmStats = {}
27+
for row in range(1,len(vmLines)-2):
28+
rowText = vmLines[row].strip()
29+
rowElements = sep.split(rowText)
30+
vmStats[(rowElements[0])] = int(rowElements[1].strip('\.')) * 4096
31+
32+
print 'Wired Memory:\t\t%d MB' % ( vmStats["Pages wired down"]/1024/1024 )
33+
print 'Active Memory:\t\t%d MB' % ( vmStats["Pages active"]/1024/1024 )
34+
print 'Inactive Memory:\t%d MB' % ( vmStats["Pages inactive"]/1024/1024 )
35+
print 'Free Memory:\t\t%d MB' % ( vmStats["Pages free"]/1024/1024 )
36+
print 'Real Mem Total (ps):\t%.3f MB' % ( rssTotal/1024/1024 )

0 commit comments

Comments
 (0)