Linux 清空缓存命令
某些时候需要把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 清空缓存命令相关推荐
- Linux命令-按照与使用(10)linux清空历史命令(history)
前言 在Linux系统的终端中,默认保存命令执行记录,当执行敏感信息后就需要清除这些痕迹. 一.清空当前历史命令 history -c 该命令可以清空当前登录会话的所有执行命令,但不清空.bash_h ...
- Linux清除缓存命令
清除linux缓存命令 命令 #sync #echo 3 > /proc/sys/vm/drop_caches 查看内存情况: # more /proc/meminfo # less /pr ...
- 网卡清空缓存命令_WIN10如何清除网络缓存图文教程
缓存是电脑一定会存在的垃圾文件,如果我们平时不注意让缓存越来越多,就会让电脑面临卡顿.故障.那么WIN10如何清除网络缓存呢?小编接下来就给大家带来WIN10如何清除网络缓存图文教程,希望帮帮大家快速 ...
- linux清空redis命令,使用Linux管道批量删除Redis的key
------------------------------------------------------ Redis并没有提供批量删除记录的方法,这有时候很不方便,特别是重新初始化数据的时候.一般 ...
- liunx 谷歌浏览器清空缓存命令
在 Linux 上,可以使用命令行工具 "rm" 来清除 Google Chrome 浏览器的缓存.具体命令如下: rm -rf ~/.cache/google-chrome/ 请 ...
- linux清空历史命令方法
前几天弄了个Linux服务器做网站,发现在不同终端登陆时,上下键都会出现一堆无用的命令,搜了一下解决方法,做个笔记. 在Linux中,每个用户目录下都有一个.bash_history文件用于保存历史命 ...
- 网卡清空缓存命令_九个常用的网络命令 ,很实用!
内容来源:云极安 一.ping命令 ping是个使用频率极高的实用程序,主要用于确定网络的连通性.这对确定网络是否正确连接,以及网络连接的状况十分有用.简单的说,ping就是一个测试程 ...
- linux清缓存命令多节点,Liunx手动释放buffers/cache内存_linux,缓存,
最近自己开发上的一台服务器,部署了太多服务,导致了一个内存不够用的情况,在通过free命令的查看下发现cache缓存占用到了快将近700M左右,导致我不得不去释放内存. 在释放内存前我们使用sync命 ...
- linux清空文件命令
1.使用vi/vim命令打开文件后,输入"%d"清空,后保存即可.但当文件内容较大时,处理较慢,命令如下: vim file_name :%d :wq 2.使用cat命令情况,命令 ...
最新文章
- SpringMVC异常处理机制详解[附带源码分析]
- [MicroPython]TurnipBit开发板旋转按钮控制直流电机转速
- 浅释一下,为什么要使用接口?
- 抽象类可以生成自己的对象吗_大理石可以自己抛光吗?大理石自己抛光方法解答...
- Sonos拿1.3亿美金给员工发福利,中国厂商要拿什么拼?
- SPSS问卷中的人口学变量是否要用?以及如何选用?【SPSS 065期】
- 中国黑客常用的八种工具及其防御方法(转)
- ae 导出html5,AE脚本-导出json格式的Web动画工具 Bodymovin v5.7.0 + 使用教程
- web前端顶岗实习总结报告_web前端年度工作总结范文
- Python Google关键词搜索 Google人机验证
- Qt 5.12--color
- 微服务系统架构的演变
- 东华大学(C++)OJ题目收集(代码详解版)
- 沙箱支付宝支付 前后端分离项目 实战
- 视频教程-高效办公软件之word2010入门到精通全套视频-Office/WPS
- 对uchar* data = image.ptr<uchar>(j)的理解
- jsp---JSTL核心标签
- Android国际化,阿语RTL适配总结
- 为什么只有中国的程序员节是10月24日?
- Api自动化框架分享