linux分析目录内存,linux 系统性能分析(top命令)及更准确解读内存的占用率(free命令)...

一、系统性能分析(top命令)

top 命令是 Linux 下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,默认5秒刷新一下进程列表,所以类似于 Windows 的任务管理器。

1341935470_9855.jpg

系统整体当下的统计信息

top命令显示的前五行是系统整体的统计信息。

1341936016_2341.jpg

第一行是任务队列信息,同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分钟前到现在的平均值。

第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。eg.

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.

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   缓冲的交换区总量。

内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。

进程信息

1341936416_2137.jpg

统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

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的其他用法,可以在top界面中,输"h",就可以进入到top命令帮助界面

二、更准确解读内存的占用率(free命令)

Linux下如何查内存信息,如内存总量、已使用量、可使用量。

经常使用Windows操作系统的朋友,已经习惯了如果空闲的内存较多,心里比较踏实。

当使用Linux时,可能觉的Linux物理内存很快被用光(如频繁存取文件后),当程序结束后内存没有被释放。空闲内存少的可怜,心里总不踏实。

Linux操作系统的内存管理方式与Windows不同,Linxu会尽量多的利用内存,让尽可能多的内存参与工作(做cache)以提高性能。

所以你看到的空闲内存总是很小,当你的程序需要更多内存时,Linxu系统会把做cache的内存还给你,让你来运行你的程序。

图1

0cd507b7-9d5e-3bd8-a50d-261537c76fb6.jpg

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_caches

3

将/proc/sys/vm/drop_caches值设为3

再来运行free命令。可以看出来有效的释放了buffer和cache。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值