Mac下vmstat
2436 ワード
macの下にlinux/unixのvmstatはなく、vm_のみstat;
sh-3.2# vm_statMach Virtual Memory Statistics: (page size of 4096 bytes)Pages free: 191876.Pages active: 433086.Pages inactive: 141819.Pages speculative: 23119.Pages throttled: 0.Pages wired down: 254606.Pages purgeable: 11895."Translation faults": 20445131.Pages copy-on-write: 1435992.Pages zero filled: 10414067.Pages reactivated: 39459.Pages purged: 23388.File-backed pages: 172905.Anonymous pages: 425119.Pages stored in compressor: 12595.Pages occupied by compressor: 3399.Decompressions: 5824.Compressions: 26966.Pageins: 1626450.Pageouts: 4218.Swapins: 1487.Swapouts: 5130.
次の複雑なtopコマンドは使いたくない
sh-3.2# top -l 1 -s 0 | grep PhysMemPhysMem: 3277M used (992M wired), 817M unused.
次のpythonで
sh-3.2# ./mem.py
Wired Memory: 1013 MBActive Memory: 1951 MBInactive Memory: 573 MBFree Memory: 423 MBReal Mem Total (ps): 3180.027 MB
sh-3.2# vm_statMach Virtual Memory Statistics: (page size of 4096 bytes)Pages free: 191876.Pages active: 433086.Pages inactive: 141819.Pages speculative: 23119.Pages throttled: 0.Pages wired down: 254606.Pages purgeable: 11895."Translation faults": 20445131.Pages copy-on-write: 1435992.Pages zero filled: 10414067.Pages reactivated: 39459.Pages purged: 23388.File-backed pages: 172905.Anonymous pages: 425119.Pages stored in compressor: 12595.Pages occupied by compressor: 3399.Decompressions: 5824.Compressions: 26966.Pageins: 1626450.Pageouts: 4218.Swapins: 1487.Swapouts: 5130.
次の複雑なtopコマンドは使いたくない
sh-3.2# top -l 1 -s 0 | grep PhysMemPhysMem: 3277M used (992M wired), 817M unused.
次のpythonで
#!/usr/bin/python
import subprocess
import re
# Get process info
ps = subprocess.Popen(['ps', '-caxm', '-orss,comm'], stdout=subprocess.PIPE).communicate()[0]
vm = subprocess.Popen(['vm_stat'], stdout=subprocess.PIPE).communicate()[0]
# Iterate processes
processLines = ps.split('
')
sep = re.compile('[\s]+')
rssTotal = 0 # kB
for row in range(1,len(processLines)):
rowText = processLines[row].strip()
rowElements = sep.split(rowText)
try:
rss = float(rowElements[0]) * 1024
except:
rss = 0 # ignore...
rssTotal += rss
# Process vm_stat
vmLines = vm.split('
')
sep = re.compile(':[\s]+')
vmStats = {}
for row in range(1,len(vmLines)-2):
rowText = vmLines[row].strip()
rowElements = sep.split(rowText)
vmStats[(rowElements[0])] = int(rowElements[1].strip('\.')) * 4096
print 'Wired Memory:\t\t%d MB' % ( vmStats["Pages wired down"]/1024/1024 )
print 'Active Memory:\t\t%d MB' % ( vmStats["Pages active"]/1024/1024 )
print 'Inactive Memory:\t%d MB' % ( vmStats["Pages inactive"]/1024/1024 )
print 'Free Memory:\t\t%d MB' % ( vmStats["Pages free"]/1024/1024 )
print 'Real Mem Total (ps):\t%.3f MB' % ( rssTotal/1024/1024 )
sh-3.2# ./mem.py
Wired Memory: 1013 MBActive Memory: 1951 MBInactive Memory: 573 MBFree Memory: 423 MBReal Mem Total (ps): 3180.027 MB