vmstat.py

import os


#定义Vmstat这个类
class VmStat(object):
   def __init__(self):
       self.vmstat_file = open('/proc/vmstat')
       self.vmstat = self.read()

   def read(self):
       def extract(line):
           return int(line.split()[1]) * 1024
 
       for line in self.vmstat_file:
           if line.startswith('pgpgin'):
              pgpgin = extract(line)
           if line.startswith('pgpgout'):
              pgpgout = extract(line)
              break
              
       self.vmstat_file.seek(0) 
   #这里将文件位置重新设置为0即文件的开始位置,可以避免再次打开文件
       return pgpgin,pgpgout

   def delta(self):
       now = self.read()
       delta = now[0] - self.vmstat[0], now[1] - self.vmstat[1]
       self.vmstat = now
       return delta

这段程序主要的作用是获取/proc/vmstat文件中pgpgin和pgpgout两行的值。

pgpgin – Number of kilobytes the system has paged in from disk per second.
pgpgout – Number of kilobytes the system has paged out to disk per second

pgpgin 以KB表示系统从磁盘置入到内存的页面大小

pgpgout 以KB表示系统从内存置出到磁盘的页面大小


通过读取/proc/vmstat每行的内容,找出pgpgin和pgpgout的值并乘以1024换成B。