某些时候需要把linux 的缓存清理一下。使用时需要区分参数的不同

  • 0:不做任何处理,由系统自己管理
  • 1清空pagecache
  • 2清空dentries和inodes
  • 3 清空pagecache、dentries和inodes

说的具体就是 :

echo 1是释放页缓存,echo 2 是释放slab(dentries,inodes),而echo 3就是既释放页缓存,又释放slab。

什么是slab?

To free pagecache:# echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:# echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:echo 3 > /proc/sys/vm/drop_caches

参考 :https://linux-mm.org/Drop_Caches

-------------------------------------------------update 2021/01/23

drop_cache会情况脏页吗?

先说答案,不会的。

看官方这段描述。

让我用蹩脚的英语翻译下吧:  不是毁灭性的操作,也不会释放脏页。如果想释放更多, 先执行sync 也就是手动刷盘,这会使系统上的脏页变少,释放更多内存。

以下内容来自: https://www.dazhuanlan.com/2019/10/05/5d986e3c55468/

linux/fs/drop_caches.c

问题一:echo 写入之后,值不会变,怎么办?会不会一直在drop?

不会,看看代码:

linux/fs/drop_caches.c

int drop_caches_sysctl_handler(struct ctl_table *table, int write,void __user *buffer, size_t *length, loff_t *ppos)
{int ret;ret = proc_dointvec_minmax(table, write, buffer, length, ppos);if (ret)return ret;if (write) {static int stfu;if (sysctl_drop_caches & 1) {iterate_supers(drop_pagecache_sb, NULL);count_vm_event(DROP_PAGECACHE);}if (sysctl_drop_caches & 2) {drop_slab();count_vm_event(DROP_SLAB);}if (!stfu) {pr_info("%s (%d): drop_caches: %dn",current->comm, task_pid_nr(current),sysctl_drop_caches);}stfu |= sysctl_drop_caches & 4;}return 0;
}

write 为True 的时候,才会执行drop 。

另外proc_dointvec_minmax() 这个函数的作用是检查传入的值符合大小,drop_cache 允许的值是1,2,3,4。

Reads/writes up to table->maxlen/sizeof(unsigned int) integer values from/to the user buffer, treated as an ASCII string.
This routine will ensure the values are within the range specified by table->extra1 (min) and table->extra2 (max).
Returns 0 on success.

linux/kernel/sysctl.c

{.procname        = "drop_caches",.data            = &sysctl_drop_caches,.maxlen          = sizeof(int),.mode            = 0644,.proc_handler    = drop_caches_sysctl_handler,.extra1          = &one,.extra2          = &four,
},

虽然默认值是0,但是如果你尝试写回0,是会失败的:

-> echo 0 > /proc/sys/vm/drop_caches
echo: write error: invalid argument

另外可以看到sysctl_drop_caches 为3(11b) 时,和1,2 做& 操作,都为True,所以都会drop。

问题二:echo 写入4,是什么效果?

4(100b),和1,2做& 操作,都为False,所以不会drop,相当于关闭了drop 功能。

stfu 为静态变量,第一次执行之后,stfu 为4,if (!stfu) 也始终为False。不过感觉这里有个问题,echo 4 一次之后,stfu 会始终为4,即使再echo 1|2|3,都无法改变,虽然能正常drop,但是pr_info 语句无法执行,dmesg 看不到日志,除非重启。

stfu |= sysctl_drop_caches & 4;

参考 :https://linux-mm.org/Drop_Caches

有时候会看到io_wait 很高

avg-cpu:  %user   %nice %system %iowait  %steal   %idle1.75   15.86   32.50   11.62    0.00   38.27Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda           18591.20   3021782.40     39254.40   15108912     196272
sdb              18.60       564.80        65.60       2824        328
sdc           10753.20   1828172.80       668.80    9140864       3344
dm-0              1.80        68.80         0.00        344          0
dm-1             38.40       289.60        17.60       1448         88
dm-2           2605.00    430827.20        38.40    2154136        192
dm-3           2623.40    433995.20        48.00    2169976        240
dm-4           2640.00    467483.20        46.40    2337416        232
dm-5           2881.20    496520.00        57.60    2482600        288
dm-6              7.60         0.00       126.40          0        632
dm-7              1.40         0.00        59.20          0        296
dm-8              1.80         0.00        52.80          0        264
dm-9              8.00         0.00       240.00          0       1200
dm-10             5.80         1.60        44.80          8        224
dm-11             0.00         0.00         0.00          0          0
dm-12             0.00         0.00         0.00          0          0
dm-13             2.20       204.80         0.00       1024          0
dm-14             0.00         0.00         0.00          0          0
dm-15             0.40         0.00         3.20          0         16
dm-16          4705.20    784801.60      4880.00    3924008      24400
dm-17          4284.40    706841.60      4720.00    3534208      23600
dm-18          4341.40    669716.80      4452.80    3348584      22264
dm-19          5045.80    858899.20      6580.80    4294496      32904
dm-20           101.80         0.00      4016.00          0      20080
dm-21           118.00         0.00      4937.60          0      24688
dm-22           117.20         0.00      4944.00          0      24720
dm-23           106.40         0.00      4195.20          0      20976avg-cpu:  %user   %nice %system %iowait  %steal   %idle1.83   15.55   19.35   14.46    0.00   48.81Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda           17328.80   3038740.80     50593.60   15193704     252968
sdb              14.20       276.80        72.00       1384        360
sdc           14302.40   2272651.20      1105.60   11363256       5528
dm-0              4.40        70.40         0.00        352          0
dm-1             21.20       147.20        22.40        736        112
dm-2           3913.00    602876.80        91.20    3014384        456
dm-3           3186.80    512590.40       124.80    2562952        624
dm-4           3562.20    561380.80       137.60    2806904        688
dm-5           3619.80    596126.40       115.20    2980632        576
dm-6              2.00         0.00       100.80          0        504
dm-7             11.60         0.00       348.80          0       1744
dm-8              4.60         0.00       104.00          0        520
dm-9              3.20         0.00        83.20          0        416
dm-10             4.60         0.00        36.80          0        184
dm-11             0.00         0.00         0.00          0          0
dm-12             0.00         0.00         0.00          0          0
dm-13             0.00         0.00         0.00          0          0
dm-14             1.60        59.20         0.00        296          0
dm-15             1.60         0.00        12.80          0         64
dm-16          4023.40    656966.40      7571.20    3284832      37856
dm-17          4750.00    976304.00      6043.20    4881520      30216
dm-18          3998.00    646822.40      7980.80    3234112      39904
dm-19          4242.60    760747.20      6931.20    3803736      34656
dm-20           136.60         0.00      5846.40          0      29232
dm-21           146.00         0.00      6102.40          0      30512
dm-22           133.60         0.00      5046.40          0      25232
dm-23           124.60         0.00      4659.20          0      23296avg-cpu:  %user   %nice %system %iowait  %steal   %idle1.90   21.38   26.90   10.75    0.00   39.08Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda           17252.80   2126377.60     36427.20   10631888     182136

Linux 清空缓存命令相关推荐

  1. Linux命令-按照与使用(10)linux清空历史命令(history)

    前言 在Linux系统的终端中,默认保存命令执行记录,当执行敏感信息后就需要清除这些痕迹. 一.清空当前历史命令 history -c 该命令可以清空当前登录会话的所有执行命令,但不清空.bash_h ...

  2. Linux清除缓存命令

    清除linux缓存命令 命令 #sync  #echo 3 > /proc/sys/vm/drop_caches 查看内存情况: # more /proc/meminfo # less  /pr ...

  3. 网卡清空缓存命令_WIN10如何清除网络缓存图文教程

    缓存是电脑一定会存在的垃圾文件,如果我们平时不注意让缓存越来越多,就会让电脑面临卡顿.故障.那么WIN10如何清除网络缓存呢?小编接下来就给大家带来WIN10如何清除网络缓存图文教程,希望帮帮大家快速 ...

  4. linux清空redis命令,使用Linux管道批量删除Redis的key

    ------------------------------------------------------ Redis并没有提供批量删除记录的方法,这有时候很不方便,特别是重新初始化数据的时候.一般 ...

  5. liunx 谷歌浏览器清空缓存命令

    在 Linux 上,可以使用命令行工具 "rm" 来清除 Google Chrome 浏览器的缓存.具体命令如下: rm -rf ~/.cache/google-chrome/ 请 ...

  6. linux清空历史命令方法

    前几天弄了个Linux服务器做网站,发现在不同终端登陆时,上下键都会出现一堆无用的命令,搜了一下解决方法,做个笔记. 在Linux中,每个用户目录下都有一个.bash_history文件用于保存历史命 ...

  7. 网卡清空缓存命令_九个常用的网络命令 ,很实用!

    内容来源:云极安 一.ping命令 ‍‍‍‍‍‍‍ ping是个使用频率极高的实用程序,主要用于确定网络的连通性.这对确定网络是否正确连接,以及网络连接的状况十分有用.简单的说,ping就是一个测试程 ...

  8. linux清缓存命令多节点,Liunx手动释放buffers/cache内存_linux,缓存,

    最近自己开发上的一台服务器,部署了太多服务,导致了一个内存不够用的情况,在通过free命令的查看下发现cache缓存占用到了快将近700M左右,导致我不得不去释放内存. 在释放内存前我们使用sync命 ...

  9. linux清空文件命令

    1.使用vi/vim命令打开文件后,输入"%d"清空,后保存即可.但当文件内容较大时,处理较慢,命令如下: vim file_name :%d :wq 2.使用cat命令情况,命令 ...

最新文章

  1. SpringMVC异常处理机制详解[附带源码分析]
  2. [MicroPython]TurnipBit开发板旋转按钮控制直流电机转速
  3. 浅释一下,为什么要使用接口?
  4. 抽象类可以生成自己的对象吗_大理石可以自己抛光吗?大理石自己抛光方法解答...
  5. Sonos拿1.3亿美金给员工发福利,中国厂商要拿什么拼?
  6. SPSS问卷中的人口学变量是否要用?以及如何选用?【SPSS 065期】
  7. 中国黑客常用的八种工具及其防御方法(转)
  8. ae 导出html5,AE脚本-导出json格式的Web动画工具 Bodymovin v5.7.0 + 使用教程
  9. web前端顶岗实习总结报告_web前端年度工作总结范文
  10. Python Google关键词搜索 Google人机验证
  11. Qt 5.12--color
  12. 微服务系统架构的演变
  13. 东华大学(C++)OJ题目收集(代码详解版)
  14. 沙箱支付宝支付 前后端分离项目 实战
  15. 视频教程-高效办公软件之word2010入门到精通全套视频-Office/WPS
  16. 对uchar* data = image.ptr<uchar>(j)的理解
  17. jsp---JSTL核心标签
  18. Android国际化,阿语RTL适配总结
  19. 为什么只有中国的程序员节是10月24日?
  20. Api自动化框架分享

热门文章

  1. 在Windows系统中 开机自动运行一个Python脚本 或者自动运行一个软件
  2. pygame实现俄罗斯方块
  3. JXL导出excel
  4. (附源码)计算机毕业设计SSM基于web的烟草售卖系统
  5. 不用加号和减号来实现加减法(利用位运算)
  6. 网络中传说的美女时钟!
  7. Mysql插入生僻字报错
  8. 【项目小结】英语语法错误检测(GEC)开题论文阅读记录
  9. php各版本之间的变化,[发泄贴] 原来 PHP 每一个子版本都是不同的语言……
  10. 局域网IP地址不够用怎么办?快速解决局域网IP地址不够用