vmstat&Linux Shell 内存监控

来源:互联网 发布:苹果刷机软件 编辑:程序博客网 时间:2024/04/28 00:34

                                   

 

 

1.查看当前系统内存使用状况(free):

free命令有以下几个常用选项:

-b 以字节为单位显示数据。

-k 以千字节(KB)为单位显示数据(缺省值)。

-m 以兆(MB)为单位显示数据。

-s delay 该选项将使free持续不断的刷新,每次刷新之间的间隔为delay指定的秒数,如果含有小数点,将精确到毫秒,如0.5为500毫秒,1为一秒。

free命令输出的表格中包含以下几列:

total: 总计物理内存的大小。

used: 已使用的内存数量。

free: 可用的内存数量。

Shared: 多个进程共享的内存总额。

Buffers/cached:磁盘缓存的大小。

见以下具体示例和输出说明:



[root@Rony ~]$ free -k

total used free shared buffers cached

Mem: 262328 242000 20328 0 17336 42488

-/+ buffers/cache: 182176 80152

Swap: 786416 36 786380




对于free命令的输出,我们只需关注红色高亮的输出行和绿色高亮的输出行,见如下具体解释:

红色输出行:该行使从操作系统的角度来看待输出数据的,used(242000)表示内核(Kernel)+Applications+buffers+cached。free(20382)表示系统还有多少内存可供使用。

绿色输出行:该行则是从应用程序的角度来看输出数据的。其free = 操作系统used + buffers + cached,既:

80152 = 20328 + 17336 + 42488





[root@Rony ~]$ free -m

total used free shared buffers cached

Mem: 256 236 19 0 16 41

-/+ buffers/cache: 178 78

Swap: 199 0 199



2. 虚拟内存的实时监控工具(vmstat)
vmstat命令用来获得UNIX系统有关进程、虚存、页面交换空间及CPU活动的信息。这些信息反映了系统的负载情况。vmstat首次运行时显示自系统启动开始的各项统计信息,之后运行vmstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

[root@Rony ~]$ vmstat 1 3 #这是vmstat最为常用的方式,其含义为每隔1秒输出一条,一共输出3条后程序退出。
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 36 20740 16888 42212 0 0 0 1 7 1 0 0 100 0 0
0 0 36 20740 16888 42212 0 0 0 0 41 38 0 0 100 0 0
0 0 36 20740 16888 42212 0 0 0 0 29 42 0 0 100 0 0


[root@Rony ~]$vmstat 1 #其含义为每隔1秒输出一条,直到按CTRL+C后退出。


下面将给出输出表格中每一列的含义说明:

        有关进程的信息有:(procs)

r: 在就绪状态等待的进程数。

b: 在等待状态等待的进程数。

有关内存的信息有:(memory)

swpd: 正在使用的swap大小,单位为KB。

free: 空闲的内存空间。

buff: 已使用的buff大小,对块设备的读写进行缓冲。

cache: 已使用的cache大小,文件系统的cache。

有关页面交换空间的信息有:(swap)

si: 交换内存使用,由磁盘调入内存。

so: 交换内存使用,由内存调入磁盘。

有关IO块设备的信息有:(io)

bi: 从块设备读入的数据总量(读磁盘) (KB/s)

bo: 写入到块设备的数据总理(写磁盘) (KB/s)

有关故障的信息有:(system)

in: 在指定时间内的每秒中断次数。

sy: 在指定时间内每秒系统调用次数。

cs: 在指定时间内每秒上下文切换的次数。

有关CPU的信息有:(cpu)

us: 在指定时间间隔内CPU在用户态的利用率。

sy: 在指定时间间隔内CPU在核心态的利用率。

id: 在指定时间间隔内CPU空闲时间比。

wa: 在指定时间间隔内CPU因为等待I/O而空闲的时间比。


vmstat 可以用来确定一个系统的工作是受限于CPU还是受限于内存:如果CPU的sy和us值相加的百分比接近100%,或者运行队列(r)中等待的进程数总是不等于0,且经常大于4,同时id也经常小于40,则该系统受限于CPU;如果bi、bo的值总是不等于0,则该系统受限于内存。






3. 输出当前系统中占用内存最多的5条命令:


#1) 通过ps命令列出当前主机正在运行的所有进程。

#2) 按照第五个字段基于数值的形式进行正常排序(由小到大)。

#3) 仅显示最后5条输出。

[root@Rony ~]$ ps aux | sort -k 5n | tail -5
mysql 25492 0.0 3.3 39860 8680 ? Sl Dec13 0:01 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysql --log-error=/usr/local/mysql/var/Rony.err --pid-file=/usr/local/mysql/var/Rony.pid --socket=/tmp/mysql.sock --port=3306
www 25379 0.0 10.3 40212 27216 ? S Dec13 1:20 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
www 25375 0.0 11.0 42016 29052 ? S Dec13 1:17 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
www 25376 0.0 11.2 42260 29416 ? S Dec13 1:20 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
www 25381 0.0 12.6 45884 33156 ? S Dec13 1:19 /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf

4. 获取当前系统物理内存的总大小:


#1) 以兆(MB)为单位输出系统当前的内存使用状况。

#2) 通过grep定位到Mem行,该行是以操作系统为视角统计数据的。

#3) 通过awk打印出该行的第二列,即total列。


[root@Rony ~]$ free -m | grep "Mem" | awk '{print $2, "MB"}'

256 MB



原创粉丝点击