`
newslxw
  • 浏览: 212244 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

linux下top命令的内存使用率大于free的使用率的原因

 
阅读更多

http://hi.baidu.com/yumenhou/blog/item/623872ad2c4b93004a36d61f.html

 

 

linux系统和windows系统是互相独立的两种系统,我们在看待这两种系统的时候不能使用一种观点去对待。有时候在linux上显得很正常的东西到 了win上面可能会对系统构成危害,反之亦然,所以说看待事物就要从本质上来分析。今天就同大家讲解下为什么linux系统会吃内存“吃”的这么厉害!

最近有个月经问题,老有人问为何开机后,还没有其他服务,mem(内存占用率的意思)就被用完了?是不是内存泄露?是否要重启服务?只能说不要看现象,要看本质才能找到问题的根源。
往往给出这样的结果,怀疑内存用了90%:
Mem(内存占用率的意思): 4146788k total, 3825536k used, 321252k free, 213488k buffers
Swap(linux独有的交换分区相当于windows的虚拟内存): 2650684k total, 80k used, 2650604k free, 3006404k cached

这样怀疑很普遍,因为很多人用惯了Windows。Windows下,可以使用任务管理器查看当前进程对于内存的消耗情况。在我看 来,Windows物理内存总是留下一定的空间,就算此时物理内存有空闲时,也会让某些程序去使用虚拟内存,目的是在Windows下启动新程序时,直接 分配空闲的物理内存,这样子新程序启动速度就较快,而Linux则不然。

而在Linux下,使用top命令看到内存占用情况:

Mem: 4146788k total, 3825536k used, 321252k free, 213488k buffers
Swap: 2650684k total, 80k used, 2650604k free, 3006404k cached

这里的结果显示使用了3.8G的used,占用率达到90%。看看free的结果你还可以对比一下:
$ free -m
total used free shared buffers cached
Mem: 4049 3784 265 0 208 2939
-/+ buffers/cache: 636 3413
Swap: 2588 0 2588

虽然MEM显示了3.7G左右的used,但是(-/+ buffers/cache)减去buffers和cache的结果可以看到,当前进程实际占用内存是636M,而可用空闲(free)内存为3.4G

可以这么理解:在linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启过的程序、或是读取刚存取过得数据会比较快。

如上面的例子:使用了4G的内存,3.7G被占用,但是buuffer和cached部分作为缓存,可以使用命中率的方式提高使用效率,而且这部分缓存是根据指令随时可以释放的,我们可以认为这部分内存没有实际被使用,也可以认为它是空闲的。

因此查看目前进程正在实际被使用的内存,是used-(buffers+cache) ,也可以认为如果swap没有大量使用,mem还是够用的,只有mem被当前进程实际占用完(没有了buffers和cache),才会使用到swap的。

分享到:
评论

相关推荐

    几个常用的Linux操作系统监控脚本.doc

    通过 top 命令获取 CPU 使用率信息,free 命令获取内存使用率信息,df 命令获取磁盘使用率信息。 在该脚本中,我们使用了多个命令来获取系统的状况信息,并将其输出到文件中,以便于后续的分析和处理。 3. 磁盘...

    LINUX下查看CPU负载的所有命令.docx

    本文将详细介绍如何使用`vmstat`、`uptime`、`w`和`top`等命令来查看和分析Linux下的CPU负载。 #### 二、`vmstat`命令详解 `vmstat`命令提供了丰富的系统统计信息,包括但不限于进程、内存、交换、IO以及CPU状态等...

    通过Linux命令查看系统平均负载的方法.docx

    top 命令可以显示系统当前的进程列表、CPU 使用率、内存使用率等信息。例如: [root@localhost ~]# top top - 11:37:47 up 11 days, 19:08, 2 users, load average: 0.00, 0.00, 0.00 Tasks: 122 total, 1 running,...

    Linux常用的系统监控shell脚本

    2. **判断条件**:如果磁盘使用率大于等于90%,则触发警告。 3. **发送邮件**:向预设邮箱发送警告邮件,提醒管理员磁盘空间即将耗尽。 #### 系统统计信息捕获脚本 此脚本周期性地捕获系统统计信息,包括日期、...

    linux内存管理

    它还提供了系统工具如`free`、`top`和`vmstat`来帮助用户和管理员监控内存使用情况。 总之,Linux内存管理是一个复杂而重要的系统功能,它涉及到硬件交互、虚拟内存机制、存储层次结构优化以及多种内存分配和管理...

    五个常用的Linux监控脚本代码.docx

    - `[ $SPACE -ge 90 ]`: 判断磁盘使用率是否大于等于90%。 - `mail`: 发送邮件。 #### 四、监控CPU和内存的使用情况 此脚本用于定期采集CPU和内存使用情况,并将结果保存到CSV文件中。 **核心功能:** - 采集CPU和...

    Linux服务器系统管理手册

    - **检查操作**: 使用`free`或`top`命令查看Swap行。 - **判定条件**: 内存交换区的空闲率小于90%。 - **补充说明**: 若内存交换频繁发生,可能会影响性能,需关注并采取措施。 - **系统管理员邮件** - **检查...

    liunx后台vmstat命令

    9. **CPU使用率(us/sy/id/wa)**:这四个字段分别代表用户进程、系统进程、空闲CPU时间和等待I/O完成的CPU时间的百分比。高的`us`和`sy`值可能表示CPU负载过重,而高的`wa`值则可能表明磁盘I/O是性能瓶颈。 在实际...

    Linux vmstat命令实战详细解析

    Linux中的`vmstat`命令是系统管理员常用的监控工具,它能提供关于系统活动的综合视图,包括CPU、内存、虚拟内存、I/O等关键指标。`vmstat`的名称来源于"Virtual Memory Statistics"(虚拟内存统计),但它提供的信息...

    linu系统性能参数调整策略

    - 如果 `used/free` 的比率大于70%,则表示内存压力较大;小于20%则可能意味着内存浪费,应适当增加应用负载。 #### 四、性能调整策略 1. **CPU优化**: - 如果发现CPU使用率过高,可以通过优化程序代码或者合理...

    Ubuntu中文命令

    `free -m`加上`watch`命令可以持续监控内存状态。 **3. 动态显示进程执行情况** `ps aux`可以列出所有进程。 **4. 查看当前有哪些进程** `pgrep <process-name>`可以查找正在运行的进程。 **5. 查看进程的启动...

    linux性能调试之vmstat分析

    "us"和"sy"是用户态和系统态CPU使用率,理想情况下,"id"(空闲CPU时间)应较高,"wt"(等待I/O的CPU时间)较低。 在问题诊断中,例如CPU问题可能表现为"r"值持续高,"id"持续为0,或者"us"和"sy"过高;内存问题则...

    如何查看 Linux 服务器性能参数指标.doc

    高交换内存使用率可能表示物理内存不足,系统频繁使用交换空间,可能导致性能下降。 此外,还有其他高级工具如`mpstat`(多处理器系统状态)、`iostat`(磁盘IO统计)和`netstat`(网络状态)等。`sar`是系统活动...

    Centos系统性能指标.pdf

    监控磁盘I/O的工具如free展示了物理内存、缓冲区和缓存的使用情况,而sar工具提供了await、svctm和%util等关键指标,这些指标反映了I/O操作的等待时间、服务时间和利用率。 监控工具如vmstat和sar能够帮助我们实时...

Global site tag (gtag.js) - Google Analytics