• Linux Buffer/Cache 的区别


      以前经常使用free -h命令来查看当前操作系统的内存使用情况,同时也注意过返回信息中有一列是buff/cache,来公司之前,面试官还问过我这两个的区别,当时没有回答出来,现在特意回顾记录下:
    free -h

                  total        used        free      shared  buff/cache   available
    Mem:           3.7G        2.0G        318M         41M        1.4G        1.3G
    Swap:          2.0G         87M        1.9G
    

    区别

    • A buffer is someting that has yet to be 'written' to disk.
    • A cache is someting that has been 'read' from the disk and stored for later use.

      buffer用于存放输入到磁盘上的数据,而cache是从磁盘中读出数据存储在内存中待以后进行使用。

    测试

    1. 生成一个测试文件。

    1. 清空缓存

    三种清空方式:

    • echo 1 > /proc/sys/vm/drop_caches:仅清除页面缓存
    • echo 2 > /proc/sys/vm/drop_caches:清除目录项和inode
    • echo 3 > /proc/sys/vm/drop_caches:清除页面缓存、目录项以及inode
    1. 读取测试文件,查看读取时长

      我们可以看到,读取时长在52s,第一次读取文件后,已经写入cache。

    1. 测试第二次读取文件时长

      当我们清除cache后读取此测试文件时长为52s,当第一次读取完成后写入cache再次读取时,时长为0.24s,性能可谓极大提升。

      测试时可能遇到的关于time命令的坑,我们系统中是自带time命令的,不过并不常用,我们用于测试使用的time是需要单独安装的:yum -y install time。可以使用以下方法进行区分:
    which time

    /usr/bin/which: no time in (/usr/lib64/qt-3.3/bin:/root/perl5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
    

      给我们上述返回值时,表示我们的time命令还没有安装。

    type time

    time is a shell keyword
    

      返回time是一个shell关键字同样不是我们想要的time命令。

    time --version

    zsh: command not found: --version
    --version  0.00s user 0.00s system 60% cpu 0.001 total
    

      查看time版本提示命令未安装,表示我们需要使用的time命令还没有被安装。

    yum -y install time
    which time

    /usr/bin/time
    

    /usr/bin/time --version

    GNU time 1.7
    

      有上述信息,我们就可以开始使用啦。

  • 相关阅读:
    GRUB引导界面背景图片制作完整教程
    git遇到问题 Flandre
    NOIP2021 比赛记录 Flandre
    一个不错的回车提交按钮
    防止SQL注入
    NLog 不能些日志
    ajax 加载partial view ,并且 附加validate验证
    linq 常用查询
    Android开发工具问题之ADTversion
    C# 实现一个简单的FTP服务器
  • 原文地址:https://www.cnblogs.com/Cherry-Linux/p/9612777.html
Copyright © 2020-2023  润新知