LinuxDown

LinuxDown.com
Linux系统下载网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

PageCache内存分配逻辑解析

2023年7月3日 118点热度

前言

先来看下本机系统显存使用情况:数值默认单位为 KB

# 笔记本本机 16G 内存,Ubuntu 18
$ free
              total        used        free      shared  buff/cache   available
Mem:       16306984    13655780     1205560      576992     1445644     1748628
Swap:       2097148     1620224      476924
​
# -h 适配可读的单位。-m 即 MB 为单位
$ free -h
              total        used        free      shared  buff/cache   available
Mem:            15G         13G        320M        649M        1.6G        1.0G
Swap:          2.0G        1.6G        435M

关于Buff/Cache,可以通过man free指南来查看说明:

内存-2022-07-2916-06-21.png

由上,并结合平常开发经验,推测显存组成部份:堆内存、堆外显存、Page Cache、其他

内存-2022-07-2916-30-03.png

问题:在 64位系统下,虚拟地址空间中 内核空间 和 用户空间 均占 128T,可对应的空间在物理内存中占多少?

linux swap空间释放

这似乎没有一个明晰的答案北京linux培训,因为 内核空间 和 用户空间 共享同一个物理内存。 但我们平常开发时(Kafka、ES)经常接触到 Page Cache,同时希望能分配更多显存给 Page Cache。 要么限制 Page Cache 的大小,要么限制应用程序的大小。 一般我们都选择限制应用程序,举个栗子: 安装 ES 在 8C16G 机子下,设置最大和最小堆显存为 8G,-Xms8g -Xmx8g。目的就是留一半显存给 Page Cache。

下面注重来介绍 Page Cache 与 Swap。

Page Cache 页缓存

Page cache:也叫页缓冲 或 文件缓冲,也叫 ES 中的 filesystem cache。

问题:为什么须要Page Cache?

举个栗子:写文件

调用 write(2)函数,写入 Page Cache后就返回,内核会手动刷盘(把 Page Cache 中数据写入c盘)。

来看张神图,应用程序形成 Page Cache 的逻辑示意图:

pagecache-2022-07-2918-18-13.png

从图中可知:

Page Cache是内核管理的显存,属于内核不属于用户。有两种形式可以形成 Page Cache:标准I/O(Buffered I/O) 和 MMAP(Memory-Mapped I/O)Linux I/O 有 3 种形式:标准I/O、MMAP 和 Direct I/O

要剖析此图,我们还须要先了解 Linux IO 栈:

虚拟文件系统(VFS) :对各类文件系统的一个具象,它为各类文件系统提供了一个通用的插口。块层(Block I/O) :管理块设备的 IO 队列,对 IO 请求进行合并、排序。设备驱动(Device Driver) :操作储存介质。

pagecache-2022-07-2923-18-57.png

再看 Linux I/O 3 种形式,这里做了简化:

问题:为什么上张图里有VFS,这图改为File System文件系统?回答:VFS 就像插口,定义好插口,其他人就来实现就行。File System文件系统更为具体化。举个栗子:open() 函数,可以以特定的文件描述符打开某一个文件。使用:fd = open("myfile", O_RDWR | O_CREAT | O_SYNC | O_DIRECT, S_IRUSR | S_IWUSR);

这里注重再介绍下 Direct I/O: 是指跳过操作系统的页缓存,直接跟文件系统交互来访问文件。

想要实现直接 I/O,需要在系统调用中,指定 O_DIRECT 标识。

官方文档

pagecache-2022-07-3011-42-26.png

官方文档中的说明,主要彰显了 3 点:

缺点: 这种方法会增加性能。(磁盘读写、磁盘寻道等。)特殊应用场景: 应用程序自己管理缓存,文件I/O直接对接用户空间缓冲区。(对开发者能力要求高)不保证同步: 不能确保每次写入都同步数据到c盘,还是须要设置 O_SYNC 标识或则自动 fsync。

Tips:Java基本库不支持Direct I/O,若想使用需引入JNA包。

Swap 交换区

Swap 说白了就是把一块c盘空间或则一个本地文件(以下讲解以c盘为例),当成显存来使用。

Swap 把这种不常访问的显存先写到c盘中,然后释放那些显存,给其他更需要的进程使用。再次访问那些显存时linux swap空间释放,重新从c盘读入显存就可以了。

问题:为什么一些中间件都建议关掉Swap?

性能问题: 例如 ES,与 JVM 的 GC 相关。GC会遍历所用到的堆的显存,如果有部门显存被 Swap 到c盘,那么 GC 遍历时侯才会去查c盘arm linux,磁盘 IO 又很慢,这都会造成应用程序 STW 假死一段时间。

ES文档

管理问题: 例如 K8slinux swap空间释放,开启 Swap后通过 Cgroups 设置的显存上限都会失效。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 内存 内核 写入 应用 磁盘
最后更新:2023年7月3日

Linux系统下载网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

Linux系统下载网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
Linux运维视频教程 一般配置,即默认以后台程序方式运行是一个意思 linux web proxy 超越期待!Linux下的高效Web代理服务器及技巧详解 公众号获取账号所属类目的公共库模板标题列表 开源社区评测:Linux游戏开发对比 Linux chown命令:更改文件和目录所有权 高速无线网络畅享,tplink300M Linux驱动带你飞 Linux系统的秘密技巧:轻松修改文件创建日期 Windows远程连接Linux,轻松跨平台操作 关于linux下获取文件的创建时间与实战的相关资料 树莓派Linux系统:极简体验大比拼 Linux系统如何修改文件的时间touch命令的描述指令? Linux上运行exe文件的软件,你绝对不能错过这些 蓝牙耳机怎么连接电脑?笔记本蓝牙适配器的开启方法 全新Linux局域网聊天软件 系统启动时自动运行程序的三种功能方法介绍 Linux系统下载攻略:掌握这些技巧,轻松get Linux查看端口占用情况linux命令:ps、grep、kill 剖析ARM Linux内核:奥秘与精髓解读 康华:Linux内核空间和用户空间的区别及用法
快速定位目标文件,Linux文档管理软件!Linux运维视频教程简洁高效:Linux创建用户,配置sudo权限指南ls-alrtAFR-a显建站服务器的参考价值-显Linux查看GTK版本的实用技巧14种嵌入式操作系统的特点及特点解决RedHat浏览器中文乱码问题的七种方法Linux命令行不会删除的文件,很抱歉这个技巧unix系统和linux系统 Unix和Linux系统的经验技巧,你了解吗?lastb列出登入系统失败的用户相关信息补充说明命令嵌入式操作系统的特点及发展前景分析嵌入式Linux文件系统的结构是基于树状的根在顶部Linux操作系统下载:选择适合你的发行版获取UbuntuLinux操作系统的PDF文件文件的基础知识介绍Linux下Python开发经验与技巧分享Linux,下的日志文件系统的载体介绍-苏州安嘉Linux编程:系统IO速度稳定性评测IMAP和POP有什么区别?如何配置邮件客户端使用IMAPLinux轻松下载文件,简单操作!Linux远程主机的指定目录内容的使用命令
微软Build2023助力全球开发者共同把握新机遇 科技小能手5年前1438liunx管理员基础了解 目标硬盘的映象1.1使用的工具软件包括g4l.iso Linux部署Tomcat项目对比评测 模式识别课程PDF:体验与应用 deb怎么安装deb文件deb包的2种安装方式介绍 人人都能自己下载谷歌的ChromeOS系统,谷歌正式放出 Linux编程:系统IO速度稳定性评测 简洁高效:Linux SVN用户管理工具亲身体验! 如何理解Linux虚拟机?虚拟机11 (技巧)Linux中查看日志增长速度的几种方法 1.常见Linux发行版的Linux内核内部功能介绍及解决办法 红帽Linux:了解这八个重要方面吗? Linux服务器的优势是什么? 轻松安装CentOS,EasyBCD教程上手 ARMLinux内核启动过程是嵌入式系统开发中的重要环节 Linux运行级别从~6,共7个,关机 网络号+主机号的IP地址是什么意思?你知道吗? 《鸡你太美》都没有对应歌词…… 7-ZipZS中文多语免费版开源免费解压缩软件
标签聚合
linux系统 linux服务器 电脑 内核 应用 文件 操作 文件目录 命令 软件
书籍
课程
技术群
技术干货大合集↓
  • 2023年9月 / 98篇
  • 2023年8月 / 122篇
  • 2023年7月 / 122篇
  • 2023年6月 / 119篇
  • 2023年5月 / 123篇
  • 2023年4月 / 113篇
  • 2023年3月 / 265篇
友情链接:

Linux书籍 | Linux命令 | Linux系统 | RHCE红帽认证 | Linux软件 | Linux教程 | CentOS系统 | Linux内核 | Linux服务器 | Linux大神 | IT资源

COPYRIGHT © 2023 LinuxDown.com ALL RIGHTS RESERVED.

京ICP备14023444号-2