• Linux上的free命令学习


    Linux新手,今天使用了free命令来查看电脑内存的使用情况。如下:-m表示以M来显示。

    1、基本信息介绍

    (1)其中纵向信息:

      Mem:表示物理内存大小

      -/+ buffers/cached:表示物理内存的缓存统计

      Swap:表示硬盘上交换分区的使用情况。

    (2)横向信息:

      第1行Mem(从系统的角度看内存):
      total    内存总数: 768M
      used     已经使用的内存数: 361M
      free       空闲的内存数: 406M
      shared    共享内存(一般系统不会用到):0
      buffers    缓存内存数: 0
      cached    缓存内存数:307M

      注:关于buffers和cached的区别:buffers是用于存放要输出到disk(块设备)的数据,而cache是存放从disk上读出的数据。为了提高文件读取的性能,当应用程序需要用到内存的时候,buffers/cached会很快地被回收。

      ------------------------------------------------- 

      第2行-/+ buffers/cache(从应用程序角度看内存):

      -buffers/cache 的内存数:54 (等于第1行的 used - buffers - cached)

      +buffers/cache 的内存数: 713 (等于第1行的 free + buffers + cached)

      注:-buffers/cache反映的是被程序实实在在使用的内存,而+buffers/cache反映的是程序认为系统还有多少内存.

      ------------------------------------------------

          第3行Swap,内存交换空间。

          当物理内存不足时,系统便会使用swap。我们知道CPU所读取的数据都来自于内存,当内存不足时,为了让后续程序能顺利执行,内存中暂不使用的程序与数据就会被挪到swap中。此时内存就会空出来给需要执行的程序加载。

          由于swap是由硬盘来暂时放置内存中的信息,一般来说, swap 最好不要被使用,尤其swap 最好不要被使用超过20% 以上, 如果您发现swap 的用量超过20% ,那么,最好还是考虑升内存吧,您的电脑受不起折磨了。

    2、拓展学习

      (1)free命令的信息来源于/proc/meminfo文件,可使用命令:#cat /proc/meminfo 进行详细查看。

      (2)没有运行很多程序,为何used感觉特别大,剩下的free那么少?Linux系统为了要加速系统效能,所以会将最常使用到的或者是最近使用到的程序数据缓存(cache)下来,这样未来系统要程序数据时,就直接由cache中搜寻取出,而不需要重新读取硬盘,速度上当然就加快了!因此,used很大是正常的喔!

      (3)手工释放内存缓存:

      Linux系统的缓存机制是相当先进的,他会针对dentry(用于VFS,加速文件路径名到inode的转换)、Buffer Cache(针对磁盘块的读写)和Page Cache(针对文件inode的读写)进行缓存操作。但是在进行了大量文件操作之后,缓存会把内存资源基本用光。所以有必要了解一下如何释放缓存。

      要达到释放缓存的目的,我们首先需要了解下关键的配置文件/proc/sys/vm/drop_caches。这个文件中记录了缓存释放的参数,默认值为0,也就是不释放缓存。他的值可以为0~3之间的任意数字,代表着不同的含义:

    0 – 不释放
    1 – 释放页缓存
    2 – 释放dentries和inodes
    3 – 释放所有缓存  

      接下来进行具体操作:

      1. 使用sync指令,将所有未写的系统缓冲区同步写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。否则在释放缓存的过程中,可能会丢失未保存的文件。
      #sync

      2. 将需要的参数写进/proc/sys/vm/drop_caches文件中,比如我们需要释放所有缓存,就输入下面的命令:
      #echo 3 > /proc/sys/vm/drop_caches

      此指令输入后会立即生效,可以查询现在的可用内存明显的变多了。

      要查询当前缓存释放的参数,可以输入下面的指令:
      #cat /proc/sys/vm/drop_caches

    参考资料:

    1、《鸟哥的Linux私房菜》

    2、茶话汇. 如何在Linux操作系统中手工释放内存缓存?

     

  • 相关阅读:
    IIS 设置IP地址和域名限制
    docker数据持久化
    用户远程登录空闲时间自动断开
    基于python的性能测试工具–locust
    Python代码发送post请求接口测试--转载
    loadrunner监控mysql服务性能
    jmeter for each,循环控制器 遍历结果
    jmeter 如何将上一个请求的结果作为下一个请求的参数——使用正则提取器
    在pycharm中链接MySql数据库并进行操作
    Python—pycharm连接数据库---自创
  • 原文地址:https://www.cnblogs.com/chenbjin/p/3512734.html
Copyright © 2020-2023  润新知