百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

free -m中的cache是什么?为什么会占用那么高

cac55 2024-09-21 13:31 35 浏览 0 评论

环境

  • 红帽企业 Linux(所有版本)
  • JBoss 企业应用程序平台 (EAP) - 所有版本

Issue

  • 什么是cachefree -m输出以及为什么内存利用率高cache?
  • 如何通过分析 Heap 创建新的 JBoss 服务器实例所需的内存容量freeJBoss 中的命令输出,如果已经有一个 JBoss 实例在运行?
  • 为什么缓存使用了大量内存?
  • 缓存中经常充分利用物理内存

解决

"free -m" 命令的输出结果中的 Cache 是什么?

它表示当前被 Page chche 占用的内存容量,即 RAM 容量。Page cache 是被放到 RAM 上的曾经读或写操作所用到的文件或实际数据的副本。

拥有缓存机制有什么好处?当执行读或者写操作的时候,内核首先将所要的数据放到 RAM。

读取操作: 去磁盘找到数据 --> 把数据从磁盘存到 RAM --> 执行读操作

写操作: - 去磁盘找到数据 --> 把数据从磁盘存到 RAM --> 执行写操作 --> 把修改的数据复制到磁盘

  • 不论是访问外部存储还是本地存储,总是慢于直接访问 RAM,因为磁盘读取速度慢于 RAM 的读取速度。如果某文件持续地被读取或者修改,访问磁盘是一种资源消耗。在 Cache 的帮助下,文件会在 RAM 保存一段时间,这样就不用每次都去磁盘读或者修改数据。经过一段时间后,Cache 上的数据会被同步到磁盘。
  • 把文件存到 RAM 里大大提高了处理速度,因为与从本地磁盘访问文件相比,它减少了大量的文件访问时间。这也间接地提高了计算机的整体性能。

下面的示例演示了缓存如何提高整体性能:

[root@sourcedb ~]# cat >aaa   #写入文件aaa
adfa
adfa
adfa
^C
[root@sourcedb ~]# 
[root@sourcedb ~]# cat aaa  #查看内容
adfa
adfa
adfa
[root@sourcedb ~]# sync
[root@sourcedb ~]# echo 3 > /proc/sys/vm/drop_caches   #清空cache
如果您系统的 IO 操作频繁,我们不建议您使用这条命令。请不要在生产环境中使用以下命令。
[root@sourcedb ~]# time cat aaa
adfa
adfa
adfa

real	0m0.018s      #实际为0.018s
user	0m0.000s
sys	0m0.006s
[root@sourcedb ~]# time cat aaa 
adfa
adfa
adfa

real	0m0.001s   #实际为0.001s   从缓存中读取速度明显大于0.018
user	0m0.000s
sys	0m0.001s
因此,只要有空闲内存,内核将始终尝试利用它来将所需文件保存为缓存。

如果没有可用 RAM 并且新进程需要可用 RAM,会发生什么情况? 当一个新的进程需要 RAM 的空页时,内核会检查 cache 是否有空页,并且把 cache 里的文件同步到本地磁盘,从而收回空页,释放 RAM 给新的进程

有关“free -m”命令输出的详细说明:-

# free -m
             total       used       free     shared    buffers     cached
Mem:          3753       3455        298          0        144        664
-/+ buffers/cache:       2645       1107 <<--  Actual Free RAM
Swap:         4095         75       4020
  • 上述实例中,RAM 内存总量为 3753 MB。其中 3455 MB 被占用,298 MB 为剩余容量。
  • 在 "free -m" 输出结果中,cache 和 buffers 也被算作实际占用的 RAM 容量,但这并不符合事实。
  • 在被占用的 3455 MB 内存中,一部分被用作 cache 或 buffer。如上所述,当没有空余的 RAM 容量分配给新进程时,就可以回收 cache 和 buffer 的内存。所以我们可以把 "Cache" 和 "buffer" 看作空余 RAM。因此可以根据以下公式计算实际剩余 RAM 的容量。
  • Actual Free RAM = "free" + "buffers" + "cached" = 298 + 144 + 664 = 1106 在 "free -m" 命令输出的第二行的 "free" 值约为 1107。

为什么 cache 要占用那么多的内存?

  • 对于一个 Linux 虚拟内存管理器来说这是正常现象。为了理解为什么在正常情况下cache内存那么高,您必须先了解linux是如何处理 I/O的。当某用户读或者写文件时,它实际上是修改主内存的副本。内核会在磁盘里创建一个副本,必要时会对其修改。被这些副本所占用的内存就叫做 cached memory。
  • 当用户进程发起读或者写操作时,就会消耗 cache 内存。内核会查找用户正在操作的文件副本,如果没有的话,它会在 cache 里分配出一个新的页面,并且从磁盘里读出相应的数据填充它。如果用户只是读这个文件,这一页会被标注成 "clean" cache 页。然而,只要用户写该文件,这一页会被标注成 "dirty"。出现在 ps 里被称做 pdflush 的内核线程会定期被唤醒,并将所有标记为 dirty 的页面复制到磁盘,然后把它们标记为 clean。注意该页面只能被重新标记为 clean,由于之后可能会对该文件做进一步的 IO 操作,该页面被重新写回时并不会被释放。
  • 当内核需要内存时,cache 页才会被释放。我们没有必要把 cache 页转换成空页,因为从磁盘读取 cache 页可以加快 IO 速率,而且释放一个 cache 页和分配一个空页一样简单,此外一个空页对于系统执行也没有任何作用。如果 cache 页占满了内存,当下一次内核需要内存时,它会简单地逐出最近最少使用的 clean 页并重新利用它们。

相关推荐

终于,你可以在 iPhone 上玩《饥荒》了

继七月登陆iPad平台后,冒险生存游戏《饥荒》(Don'tStarve)经过两个月时间终于更新并适配了iPhone,此前我已就游戏在iPad上的表现写过详尽评测和上手攻略,故本文不再对游...

2025年最适合Macbook新手掌握的5个免费工具,效率立马飙升!

刚入手Macbook是否觉得操作不熟?担心新手期过长难以熟练提高效率?别担心!本文精选五款国区AppStore免费可下载的官方认证工具,所有选择均基于新手核心痛点与迁移成本考量,解决「系统维护」「操作...

苹果iOS 13.4和iPadOS 13.4正式更新,支持鼠标、键盘操作

智东西(公众号:zhidxcom)编|王颖智东西3月25日消息,苹果今天向用户推送了iOS13.4和iPadOS13.4系统更新通知。iPadOS13.4增加了对iPad鼠标和触控板的支持,...

苹果即将发布macOS 15 用户界面将迎来重大革新

苹果公司计划于6月举行的全球开发者大会(WWDC)上,震撼发布全新的macOS15操作系统。据CNMO最新报道,此次更新将彻底革新“菜单和应用程序用户界面”的排列方式,为用户带来全新的使用体验。ma...

**Bartender 5:菜单栏管理神器**(菜单栏工具)

提供免费下载网站Mavom.cn**Bartender**让你可以隐藏、重新排列或移动菜单栏应用,保持桌面整洁。**主要功能:*****整理菜单栏应用**:随心所欲地隐藏或显示应用。***更新提醒...

Mac用户必备!12款最实用的高效App,绝对值得收藏

作为一名数码博主,日常的工作不仅包括写文章,还涉及到大量的内容创作、视频编辑和资料管理。随着使用Mac的时间越来越长,我发现一台强大的Mac电脑,若没有合适的App加持,效果往往大打折扣。因此,我深入...

苹果电脑死机了按什么键(mac卡死按哪三个键)

苹果电脑以其卓越的性能和稳定的系统而闻名,但在使用过程中,偶尔也会遇到死机或应用程序无响应的情况。这时,掌握一些有效的强制重启或关闭方法就显得尤为重要。本文将详细介绍苹果电脑在死机时可以采取的几种处理...

怎么查看macbook硬盘是不是原装的

要查看MacBook的硬盘是否是原装的,可以采取以下几种方法:###通过系统信息检查1.**查看设备信息**:打开苹果菜单栏中的“关于本机”选项,然后选择“存储”或“磁盘工具”。这将显示你电脑上已...

苹果MacBook一定要进行的6个设置|新手必备省电技巧

一、MacBook省电设置技巧1、电池偏好设置打开“系统偏好设置”,选择“电池”,选择第二项“电池”,不同的系统版本和机型在这个界面会有所差别。勾选“使用电池电源时使显示屏略暗一些”,勾选“优化电池充...

在 Mac 菜单栏也能控制 HomeKit 家居设备

想要控制家里的HomeKit设备,我们可以利用Apple官方的家庭App。但在Mac上,家庭App不能算得上好用,不像iOS可以从控制中心直接操作,在Mac上必须打开家庭A...

苹果手机里这个图标是什么意思?原来这是个监听器!一直都不知道

不知道大家最近都有没有关注iPhone的新消息呢?iPhone11出来之后,不少小伙伴都被圈粉啦!小编不得不说绿色的那款是真好看啊!当然不仅是好看,用过苹果手机的小伙伴都知道,苹果手机里有很多超好用的...

如何解决苹果电脑弹出本地项目钥匙串提示?

Mac电脑使用的时候,因为通过iCloud同步钥匙串,或者是修改本地账户密码,会反复弹出某项目想要登录使用“钥匙串”的提示,且无法关闭的现象。那我们该如何解决呢?快和小编一起来看看吧!具体方法如下1....

MAC小技巧:如何快速调整Dock栏的大小

苹果mac系统dock栏怎么缩小?想要自己调节一下dock栏的大小,该怎么调节呢?下面我们就来看看详细的苹果Mac电脑如何快速调整Dock栏的大小样式教程,需要的朋友可以参考下。1、在Dock栏右侧,...

新买了苹果电脑不会用?给小白的使用手册,MacOS入门必备

咱们很多小伙伴都是十几年甚至二十几年的Windows老用户了,如果换成苹果电脑,可能会一脸懵逼,一时间不知道怎么使用。毕竟苹果电脑搭载的是MacOS操作系统,除了系统界面和操作上有区别外,电脑键盘上有...

苹果macOS 15设置界面将迎来重大更新 更智能更美观

【CNMO科技消息】苹果计划在6月WWDC全球开发者大会上震撼发布macOS15。据CNMO了解,此次更新将彻底革新“菜单和应用程序用户界面”的排列方式。macOSVentura系统中的“系统设置...

取消回复欢迎 发表评论: