1、系统性能分析(top命令)node
top 命令是 Linux 下经常使用的性能分析工具,可以实时显示系统中各个进程的资源占用情况,默认5秒刷新一下进程列表,因此相似于 Windows 的任务管理器。
缓存
top命令显示的前五行是系统总体的统计信息。ide
第一行是任务队列信息,同uptime命令的执行结果。eg.函数
top - 15:09:51 up 17 days , 3:38 , 4 users , load average : 1.09 , 3.39 , 4.76工具
15:09:51 当前时间
up 17 days , 3:38 系统运行时间,格式为时:分
4 users 当前登陆用户数
load average : 1.09 , 3.39 , 4.76 系统负载,即任务队列的平均长度。
三个数值分别为1分钟、5分钟、15分钟前到如今的平均值。性能
第2、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。eg.spa
Tasks : 115 total , 1 running , 114 sleeping , 0stopped , 0zombie
Cpu(s) : 16.1% us , 2.0% sy , 0.0% ni , 79.5% id , 1.4% wa , 0.0% hi , 1.0% si操作系统
Tasks : 115 total 进程总数
1 running 正在运行进程数
114 sleeping 睡眠进程数
0 stopped 中止进程数
0 zombie 僵尸进程数
Cpu(s) : 16.1% us 用户空间占用CPU百分比
2.0% sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
79.5% id 空闲CPU百分比
1.4% wa 等待输入输出的CPU时间百分比
0.0% hi
0.0% si命令行
最后两行为内存信息。eg.orm
Mem : 8169876 k total , 7686472 k used , 483404 k free , 35272 k buffers
Swap : 4096532 k total , 160 k used , 4096372 k free , 2477532 k cached
Mem : 8169876 ktotal 物理内存总量
7686472 k used 使用的物理内存总量
483404 k free 空闲内存总量
35272 k buffers 用做内核缓存的内存量
Swap : 4096532 k total 交换分区总量
160 k used 使用的交换区总量
4096372 k free 空闲交换区总量
2477532 k cached 缓冲的交换区总量。
内存中的内容被换出到交换区,然后又被换入到内存,但使用过的交换区还没有被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可没必要再对交换区写入。
统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
序号列名含义
PID 进程id
PPID 父进程id
RUSER Realusername
UID 进程全部者的用户id
USER 进程全部者的用户名
GROUP 进程全部者的组名
TTY 启动进程的终端名。不是从终端启动的进程则显示为?
PR 优先级
NInice 值。负值表示高优先级,正值表示低优先级
P 最后使用的CPU,仅在多CPU环境下有意义
%CPU 上次更新到如今的CPU时间占用百分比
TIME 进程使用的CPU时间总计,单位秒
TIME+ 进程使用的CPU时间总计,单位1/100秒
%MEM 进程使用的物理内存百分比
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE 可执行代码占用的物理内存大小,单位kb
DATA 可执行代码之外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
nFLT 页面错误次数
nDRT 最后一次写入到如今,被修改过的页面数。
S 进程状态。
D= 不可中断的睡眠状态
R= 运行
S= 睡眠
T= 跟踪/中止
Z= 僵尸进程
COMMAND 命令名/命令行
WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
Flags 任务标志,参考sched.h
top里能够设置按照某一项来排序,默认的状况下,是按照CPU的使用状况来排序,
M,(注意大写),按内存使用状况排序
P , 根据CPU使用百分比大小进行排序
T, 根据时间/累计时间进行排序。
输入字母k(小写),而后再输入想要kill的PID
固然你也可直接运行命令,kill PID
top的其余用法,能够在top界面中,输"h",就能够进入到top命令帮助界面
2、更准确解读内存的占用率(free命令)
Linux下如何查内存信息,如内存总量、已使用量、可以使用量。
常用Windows操做系统的朋友,已经习惯了若是空闲的内存较多,内心比较踏实。
当使用Linux时,可能觉的Linux物理内存很快被用光(如频繁存取文件后),当程序结束后内存没有被释放。空闲内存少的可怜,内心总不踏实。
Linux操做系统的内存管理方式与Windows不一样,Linxu会尽可能多的利用内存,让尽量多的内存参与工做(作cache)以提升性能。
因此你看到的空闲内存老是很小,当你的程序须要更多内存时,Linxu系统会把作cache的内存还给你,让你来运行你的程序。
图1
free -m :查看内存状况,( -m )表示单位为MB。
total 内存总数
used 已经使用的内存数(个人程序使用内存数量+系统缓存使用的内数量)
free 空闲的物理内存数(是真正的空闲,未被任何程序占用)
shared 多个进程共享的内存总额
buffers 磁盘缓存(Buffer Cache)的大小(可提升系统I/O调用的性能)
cached 磁盘缓存(Page Cache)的大小(可提升系统I/O调用的性能)
-buffers/cache 表示已被咱们的程序使用的内存数,计算方法:used - buffers - cached
+buffers/cache 表示还可已被我使用的内存数,计算方法:free + buffers + cached
操做系统目前可用内存总量=free + buffers + cached,上图是1155M
buffers是用来给块设备作的缓冲大小、buffers是用来存储目录里面有什么内容,权限等等
cached用来给文件作缓冲,用来记忆咱们打开的文件.
即便你的程序运行结束后,Cache Memory也不会自动释放。
这就会致使你在Linux系统中程序频繁读写文件后,你会发现可用物理内存(free)会不多。
其实这缓存内存(Cache Memory)在你须要使用内存的时候会自动释放,因此你没必要担忧没有内存可用。
若是你但愿手动去释放Cache Memory也是有办法的。
手动释放缓存---------------------------------------/proc是一个虚拟文件系统,咱们能够经过对它的读写操做作为与kernel实体间进行通讯的一种手段。也就是说能够经过修改/proc中的文件,来对当前kernel的行为作出调整。那么咱们能够经过调整/proc/sys/vm/drop_caches来释放内存。操做以下:cat /proc/sys/vm/drop_caches 查看默认值先手动执行sync命令,sync 命令将全部未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。# echo 3 > /proc/sys/vm/drop_caches# cat /proc/sys/vm/drop_caches3将/proc/sys/vm/drop_caches值设为3再来运行free命令。能够看出来有效的释放了buffer和cache。