命令输出:
- robert@robert-ubuntu1410:~$ free
- total used free shared buffers cached
- Mem: 2049416 1646480 402936 13280 118596 646288
- -/+ buffers/cache: 881596 1167820
- Swap: 2095100 1480 2093620
内存使用并不只有简单的占用和空闲两个状态,从上面的输出发现里面有buffer和cache的数据,从字面意义上来讲,都是缓存,那么弄清楚缓存什么数据才能有效的区分这两种缓存。
从上面命令的输出,我们可以看到,Buffer 118M, Cache 646M。其实,这两个内存区域都是用来缓存磁盘数据的,只不过缓存的数据是不同的:
- buffers一般都不太大,在一个通用的Linux系统中,一般都是在几十到几百M字节,用于存储磁盘块设备的元数据,比如哪些块属于哪些文件,文件的权限,目录等信息。
- cached一般会很大, 一般都是G字节以上, 用于存储读写文件的页, 当对一个文件进行读的时候, 会取磁盘文件页到此内存区域,然后从内存进行读取,当写入一个文件,会先写到此缓存,并将相关的页面标记为”dirty”。
buffers用于存储元数据,一般占用的空间不大,对它的关注也不多,cached一般会很大,随着读写磁盘的多少而自动的增加而减少,这也取决于物理内存是否够用,如果应用使用物理内存较多,操作系统会适当的缩小cached来保证用户进程对内存的需要。
2、pmap
此命令用来报告进程占用内存的详细情况,可以用来查出某些内存瓶颈问题的根源原因。
使用方式:
- pmap -d 2862
命令输出:
- robert@robert-ubuntu1410:~$ pmap -d 2862
- 2862: java -server -Xms512m -Xmx512m -Xmn128m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=60 -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCDetails -Xloggc:./logs/gc.log -cp /home/robert/working/workspace/vesta-id-generator/releases/vesta-id-generator-0.0.1-release/bin/vesta-rest-0.0.1/extlib -jar ./lib/vesta-rest-0.0.
- Address Kbytes Mode Offset Device Mapping
- 0000000008048000 4 r-x-- 0000000000000000 008:00001 java
- 0000000008049000 4 rw--- 0000000000000000 008:00001 java
- 000000000a017000 872 rw--- 0000000000000000 000:00000 [ anon ]
- 00000000be800000 896 rw--- 0000000000000000 000:00000 [ anon ]
- 00000000be8e0000 128 ----- 0000000000000000 000:00000 [ anon ]
- 00000000be900000 1920 rw--- 0000000000000000 000:00000 [ anon ]
- 00000000beae0000 128 ----- 0000000000000000 000:00000 [ anon ]
- 00000000beb00000 284 rw--- 0000000000000000 000:00000 [ anon ]
- ......
这个命令显示比较底层的进程模块占用内存的信息,并且可以打印内存的起止地址等,用于定位深层次JVM或者操作系统的内存问题。
04.CPU使用情况监控命令
1、vmstat
此命令显示关于内核线程、虚拟内存、磁盘IO、陷阱和CPU占用率的统计信息。
使用方式:
- vmstat
命令输出:
- robert@robert-ubuntu1410:~$ vmstat
- procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
- r b swpd free buff cache si so bi bo in cs us sy id wa st
- 2 0 1480 404300 118252 646216 0 0 78 31 63 145 2 0 97 1 0
这里面需要注意的是:
buff是IO系统用来做存储磁盘块文件元数据的信息
cache是操作系统用来缓存磁盘数据的缓冲区,操作系统会自动调节这个参数,在内存紧张的时候操作系统会减少cache的占用空间来保证其他进程可用
cs参数表达线程切换次数,此数据太大表明线程同步机制有问题
si和so如果较大说明系统频繁使用交换区,应该查看操作系统内存是否够用
bi和bo代表IO活动,根据大小可以知道磁盘的负载
2、mpstat
实时监控系统CPU的一些统计信息,这些信息存放在/proc/stat文件中,在多核CPU系统里,其不但能查看所有CPU的平均使用信息,而且能够查看某一个特定CPU的信息。
使用方式:
- mpstat -P ALL
(编辑:ASP站长网)
|