首页 > 系统相关 >Linux系统cpu过高如何清理缓存

Linux系统cpu过高如何清理缓存

时间:2023-08-03 11:24:23浏览次数:34  
标签:缓存 drop vm 清理 内存 Linux cpu caches

查看缓存区及内存使用情况

free -h
//空闲内存=free+buffers+cached
//已用内存=total-空闲内存 

缓存区分buffers和cached区别 
//内核在保证系统能正常使用物理内存和数据量读写情况下来分配缓冲区大小。
//buffers用来缓存metadata及pages,可以理解为系统缓存,例如,vi打开一个文件。 
// cached是用来给文件做缓存,可以理解为数据块缓存,例如,dd if=/dev/zero of=/tmp/test count=1 bs=1G 测试写入一个文件,就会被缓存到缓冲区中,当下一次再执行这个测试命令时,写入速度会明显很快。

Swap用途及清理

//Swap意思是交换分区,通常我们说的虚拟内存,是从硬盘中划分出的一个分区。当物理内存不够用的时候,内核就会释放缓存区(buffers/cache)里一些长时间不用的程序,然后将这些程序临时放到Swap中,也就是说如果物理内存和缓存区内存不够用的时候,才会用到Swap。 
//注意:这样清理有个前提条件,空闲的内存必须比已经使用的swap空间大
swapoff -a && swapon -a

sync命令来清理文件系统缓存

//清理文件系统缓存,还会清理僵尸(zombie)对象和它们占用的内存
 sync

释放缓存区内存的方法

//清理pagecache(页面缓存)
echo 1 > /proc/sys/vm/drop_caches   或者 # sysctl -w vm.drop_caches=1

//清理dentries(目录缓存)和inodes
echo 2 > /proc/sys/vm/drop_caches   或者 # sysctl -w vm.drop_caches=2

//清理pagecache、dentries和inodes
echo 3 > /proc/sys/vm/drop_caches   或者 # sysctl -w vm.drop_caches=3
//上面三种方式都是临时释放缓存的方法,要想永久释放缓存,需要在/etc/sysctl.conf文件中配置:vm.drop_caches=1/2/3,然后sysctl -p生效即可!

上面操作在大多数情况下都不会对系统造成伤害,只会有助于释放不用的内存。

但是如果在执行这些操作时正在写数据,那么实际上在数据到达磁盘之前就将它从文件缓存中清除掉了,这可能会造成很不好的影响。那么如果避免这种事情发生呢?

清理inoe/dentry缓存时应该用什么样的优先级。

//进入这个文件 /proc/sys/vm/vfs_cache_pressure
 vfs_cache_pressure=100 这个是默认值,内核会尝试重新声明dentries和inodes,并采用一种相对于页面缓存和交换缓存比较”合理”的比例。
 减少vfs_cache_pressure的值,会导致内核倾向于保留dentry和inode缓存。
 增加vfs_cache_pressure的值,(即超过100时),则会导致内核倾向于重新声明dentries和inodes
 总之,vfs_cache_pressure的值:小于100的值不会导致缓存的大量减少,超过100的值则会告诉内核你希望以高优先级来清理缓存。
 其实无论vfs_cache_pressure的值采用什么值,内核清理缓存的速度都是比较低的。
 如果将此值设置为10000,系统将会将缓存减少到一个合理的水平。

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

/proc是一个虚拟文件系统,可以通过对它的读写操作作为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。也就是说我们可以通过调整/proc/sys/vm/drop_caches来释放内存。

drop_caches的含义:

0:不释放(系统默认值)
 1:释放页缓存
 2:释放dentries和inodes
 3:释放所有缓存

 

标签:缓存,drop,vm,清理,内存,Linux,cpu,caches
From: https://www.cnblogs.com/cgy-home/p/17602781.html

相关文章

  • 跟运维学 Linux - 03
    权限机制和性能指标前面我们学完了操作文件和用户相关知识,本篇学习权限和性能相关知识。文件的属性看起看linux的权限,先从文件的属性看起ls-l加-d是只看这个文件夹:pjl@pjl-pc:~$sudols-ld/rootdrwx------8rootroot40967月1816:20/root最左侧的d表示......
  • 循序渐进Linux
    一、................................................二、........................................................................三、.................................................
  • Linux环境下,使用远程连接工具过程中终端无法弹出图形窗口
    Linux操作系统,请通过管理网口/VNC等远程连接工具登录服务器,使用终端执行操作。如果在使用过程中无法弹出图形窗口,请执行以下操作。场景一:使用SSH连接工具登录LINUX服务器确保工具支持远程图形显示。SSH连接工具需要支持远程图形显示,才能弹出图形窗口。putty、SecureCRT默认......
  • linux rename的实现
    linuxrename可以批量重命名文件。renameexpressionreplacementfiles可以用bash实现:遍历文件file,用sed等替换file中的字符串,mv$fileecho$file|sed-i's/expression/replacement/'也可以用bash内置的parameterexpansion替换。代码如下:#!/bin/bash#Prompttheus......
  • Linux Reserved Memory
    linux内存子系统-保留内存-知乎(zhihu.com)[内存管理]LinuxReservedMemory预留内存_memory-region_老农民哇哈哈的博客-CSDN博客 ......
  • nginx缓存灰度
    upstreamhilinux_01{server127.0.0.1:8080max_fails=1fail_timeout=60;}upstreamhilinux_02{serverx.x.x.x:8080max_fails=1fail_timeout=60;}server{listen80;server_nametest.test.com;#gzipconfiggzipon;gzip......
  • Linux 下如何修改密码有效期?
    有时我们连接远程服务器的时候,提示密码过期,需要修改密码才能登录,这时可以用chage命令来调整下用户密码的有效期,使用户可以继续使用。chage命令chage命令用于查看以及修改用户密码的有效期信息,它是changeage的缩写。当需要用户在指定时间内登录或者需要及时修改密码的时......
  • linux mqtt 安装配置
    安装sudoaptinstallmosquitto配置密码用户sudomkdir-p/etc/mosquitto/configsudotouch/etc/mosquitto/config/pwfile.confsudomosquitto_passwd-b/etc/mosquitto/config/pwfile.confqq123456配置文件qtimes@AIBox-01-01-m:~$cat/etc/mosquitto/mosquitto.......
  • Linux:user is not in the sudoers file. This incident will be reported 解决方法
    学习自:userisnotinthesudoersfile.Thisincidentwillbereported解决方法_一路奔跑94的博客-CSDN博客1、原因没有在权限文件中说明该用户具有sudo权限2、解决步骤1)以root身份去/etc/sudoers文件中,编辑vi/etc/sudoers2)在rootALL=(ALL)ALL之下添加一行xxxALL......
  • linux根据地址添加出站策略--脚本
    文件名称:add_policy.sh内容:#!/bin/bashmain(){num=1echo"<?xmlversion="1.0"encoding="utf-8"?><direct></direct>">direct.xml#read-p"请输入文件全路径名称:"ip_addrwhilereadlinedo......