一文详解内存页大小对操作系统性能的影响
我们都知道 Linux 会以页为单位管理内存,无论是将磁盘中的数据加载到内存中,还是将内存中的数据写回磁盘,操作系统都会以页面为单位进行操作,哪怕我们只向磁盘中写入一个字节的数据,我们也需要将整个页面中的全部数据刷入磁盘中。
Linux 同时支持正常大小的内存页和大内存页(Huge Page)[^1],绝大多数处理器上的内存页的默认大小都是 4KB,虽然部分处理器会使用 8KB、16KB 或者 64KB 作为默认的页面大小,但是 4KB 的页面仍然是操作系统默认内存页配置的主流;除了正常的内存页大小之外,不同的处理器上也包含不同大小的大页面,我们在 x86 处理器上就可以使用 2MB 的内存页。
4KB 的内存页其实是一个历史遗留问题,在上个世纪 80 年代确定的 4KB 一直保留到了今天。虽然今天的硬件比过去丰富了很多,但是我们仍然沿用了过去主流的内存页大小。
在今天,4KB 的内存页大小可能不是最佳的选择,8KB 或者 16KB 说不定是更好的选择,但是这是过去在特定场景下做出的权衡。我们在这篇文章中不要过于纠结于 4KB 这个数字,应该更重视决定这个结果的几个因素,这样当我们在遇到类似场景时才可以从这些方面考虑当下最佳的选择,我们在这篇文章中会介绍以下两个影响内存页大小的因素,它们分别是:
过小的页面大小会带来较大的页表项增加寻址时 TLB(Translation lookaside buffer)的查找速度和额外开销;
过大的页面大小会浪费内存空间,造成内存碎片,降低内存的利用率;
上个世纪在设计内存页大小时充分考虑了上述的两个因素,最终选择了 4KB 的内存页作为操作系统最常见的页大小,我们接下来将详细介绍以上它们对操作系统性能的影响。
页表项
我们在 为什么 Linux 需要虚拟内存 一文中曾经介绍过 Linux 中的虚拟内存,每个进程能够看到的都是独立的虚拟内存空间,虚拟内存空间只是逻辑上的概念,进程仍然需要访问虚拟内存对应的物理内存,从虚拟内存到物理内存的转换就需要使用每个进程持有页表。
为了存储 64 位操作系统中 128 TiB 虚拟内存的映射数据,Linux 在 2.6.10 中引入了四层的页表辅助虚拟地址的转换[^2],在 4.11 中引入了五层的页表结构[^3],在未来还可能会引入更多层的页表结构以支持 64 位的虚拟地址。
在四层页表结构中,操作系统会使用最低的 12 位作为页面的偏移量,剩下的 36 位会分四组分别表示当前层级在上一层中的索引,所有的虚拟地址都可以用上述的多层页表查找到对应的物理地址[^4]。
因为操作系统的虚拟地址空间大小都是一定的,整片虚拟地址空间被均匀分成了 N 个大小相同的内存页,所以内存页的大小最终会决定每个进程中页表项的层级结构和具体数量,虚拟页的大小越小,单个进程中的页表项和虚拟页也就越多。
因为目前的虚拟页大小为 4096 字节,所以虚拟地址末尾的 12 位可以表示虚拟页中的地址,如果虚拟页的大小降到了 512 字节,那么原本的四层页表结构或者五层页表结构会变成五层或者六层,这不仅会增加内存访问的额外开销,还会增加每个进程中页表项占用的内存大小。
碎片化
因为内存映射设备会在内存页的层面工作,所以操作系统认为内存分配的最小单元就是虚拟页。哪怕用户程序只是申请了 1 字节的内存,操作系统也会为它申请一个虚拟页,如下图所示,如果内存页的大小为 24KB,那么申请 1 字节的内存会浪费 ~99.9939% 的空间。
随着内存页大小的增加,内存的碎片化情况会越来越严重,小的内存页会减少内存空间中的内存碎片,提高内存的利用率。上个世纪的内存资源还没有像今天这么丰富,在大多数情况下,内存都不是限制程序运行的资源,多数的在线服务都需要更多的CPU,而不是更多的内存。不过在上个世纪内存其实也是稀缺资源,所以提高稀缺资源的利用率是我们不得不考虑的事情:
上个世纪八九十年代的内存条只有 512KB 或者 2MB,价格也贵得离谱,但是几 GB 的内存在今天却非常常见[^8],所以虽然内存的利用率仍然十分重要,但是在内存的价格大幅降低的今天,碎片化的内存不再是需要解决的关键问题了。
除了内存的利用率之外,较大的内存页也会增加内存拷贝时的额外开销,因为 Linux 上的写时拷贝机制,在多个进程共享同一块内存时,当其中的一个进程修改了共享的虚拟内存会触发内存页的拷贝,这时操作系统的内存页越小,写时拷贝带来的额外开销也就越小。
总结
就像我们在上面提到的,4KB 的内存页是上个世纪决定的默认设置,从今天的角度来看,这很可能已经是错误的选择了,arm64、ia64 等架构已经可以支持 8KB、16KB 等大小的内存页,随着内存的价格变得越来越低、系统的内存变得越来越大,更大的内存可能是操作系统更好的选择,我们重新回顾一下两个决定内存页大小的要素:
过小的页面大小会带来较大的页表项增加寻址时 TLB(Translation lookaside buffer)的查找速度和额外开销,但是也会减少程序中的内存碎片,提高内存的利用率;
过大的页面大小会浪费内存空间,造成内存碎片,降低内存的利用率,但是可以较少进程中的页表项以及 TLB 的寻址时间;
这种类似的场景在我们做系统设计时也比较常见,举一个不是特别恰当的例子,当我们想要在集群上部署服务时,每个节点上的资源是有限的,单个服务占用的资源可能会影响集群的资源利用率或者系统的额外开销。如果我们在集群中部署 32 个占用 1 CPU 的服务,那么可以充分利用集群中的资源,但是如此多的实例数会带来较大的额外开销;如果我们在集群中部署 4 个占用 8 CPU 的服务,那么这些服务的额外开销虽然很小,但是可能会在节点中留下很多空隙。到最后,我们还是来看一些比较开放的相关问题,有兴趣的读者可以仔细思考一下下面的问题:
Linux 中的扇区、块和页都有什么区别和联系
Linux 中的块大小是如何决定的常见的大小有哪些
-
2023年315晚会回放在哪里能看 答:在哔哩哔哩电脑版中即可看到315晚会的部分回放及资讯。 315晚会是指每年3月15日晚播出的“3·15晚会”,该晚会…更新时间:2023-03-14|作者:lc|已阅读:5次|标签:
-
爱奇艺客服称2月购买爱奇艺会员只有28天是因为会员月卡服务时间以自然月为统计单位,即月度权益自用户每个月的服务开通日期,根据开通当月自然月天数做顺延的。更新时间:2023-03-03|作者:rw|已阅读:11次|标签:
-
爱奇艺会员投屏恢复清晰度了吗 从2月20日新修改爱奇艺会员协定上可得知,2月20日仍在有效期的黄金VIP会员,重新恢复了720P和1080P的视频投屏清晰度。…更新时间:2023-02-21|作者:lc|已阅读:12次|标签:
-
显微镜下的大明之丝绢案电视剧是网剧,它是一部古装悬疑短剧,而该剧改编自马伯庸的历史读本《显微镜下的大明》六案中的“丝绢案”,讲的是明朝历代时期的事情。更新时间:2023-02-17|作者:rw|已阅读:31次|标签:
-
最近大火的人工智能聊天工具ChatGPT在社交媒体上不断刷屏,一跃成为了火爆全网的现象级应用。在网友晒出的截图中,ChatGPT似乎无所不能,不仅能够流畅对话,…更新时间:2023-02-16|作者:ZDH|已阅读:135次
-
极速、智能、安全、高效下载次数:10728次更新日期: 2024-07-12软件大小:174.1MB立即下载安装天极优选
-
绝地求生在S22中,在雪地图“维寒迪”中首次加入了新生物“北极熊”;此外,S22赛季将“月夜天气”回归,还为该天气配备了“热成像4倍瞄准镜”;同时,该赛季还有地…更新时间:2023-02-15|作者:wsy|已阅读:158次|标签:
-
经了解,Steam2023“血色情人节”活动的持续时间为:2023年2月14日凌晨2点-2023年2月17日上午2点;可以看出,该活动既是情人节活动,也是一个“…更新时间:2023-02-14|作者:wsy|已阅读:38次|标签:
-
ChatGPT如何帮助我们的生活 ①解决问题 ②写作文章 ③提炼内容 ④写代码更新时间:2023-02-13|作者:lc|已阅读:84次
-
①浏览器搜索【ChatGPT官网】并进入。②点击【TRY CHATGPT】,接着点击【Sign up】,输入注册邮箱。③点击邮箱邮件内收到的验证码,然后填入注册…更新时间:2023-02-10|作者:rw|已阅读:9576次
-
我们通过网上的论坛、杂志等,可以知道chatGPT的应用有很多,但是chatGPT目前更多地被用于IT工作者的代码处理,以及学术论文的编辑与修正;因为这些需要工…更新时间:2023-02-10|作者:wsy|已阅读:725次
-
开图更快捷、显示更准确、操作更方便的轻量级CAD看图软件下载次数:18814次更新日期: 2024-07-17软件大小:122.1MB立即下载安装天极优选
-
经了解,永劫无间的2023网吧特权主要分为“至尊网吧特权”和“(标准)网吧特权”,下面将分别给大家介绍永劫无间的2种网吧特权。 永劫无间2023至尊网吧特权:…更新时间:2023-02-06|作者:wsy|已阅读:101次
-
答:鹅鸭杀是一款休闲策略类社交网络游戏。 其游戏玩法类似狼人杀和Among us的整合版本,将天黑请闭眼,盘凶手的狼人杀机制和做任务整活隐藏身份的Among …更新时间:2023-01-26|作者:lc|已阅读:21次|标签:
-
答:2023春节联欢晚会可以在抖音上观看。更新时间:2023-01-16|作者:lc|已阅读:85次|标签:
-
电视剧狂飙是改编的而并非原著,狂飙这部电视剧是根据真实事件改编的,是根据众多真实事件改编的。更新时间:2023-01-16|作者:rw|已阅读:2790次|标签:
-
答:三体真人电视剧在腾讯视频可以观看。 除了腾讯视频以外,央视八套、咪咕视频也可同时收看。 目前在腾讯视频上,在1月15就首更了4集,除第1集免费外,腾讯视…更新时间:2023-01-16|作者:lc|已阅读:178次|标签:
-
全网独播资源抢先看下载次数:28391671次更新日期: 2024-07-15软件大小:78.0MB立即下载安装天极优选
-
三体国产电视剧已经于2023年1月15日上映,该剧根据同名小说改编,讲述了纳米物理学家汪淼与刑警史强共同揭开地外未知文明“三体”世界的神秘面纱,并随全人类一道与…更新时间:2023-01-16|作者:rw|已阅读:97次|标签:
-
哪款软件有泰国旅行最新攻略?在国内疫情逐渐趋于平稳之际加上节假日来临之际,不少人都已经按奈不住要出国门旅游的心,搜索了一大圈,入境政策较为轻松的还属泰国。因此春…更新时间:2023-01-12|作者:lc|已阅读:15次|标签:
-
向风而行和去有风的地方是同一部剧吗?最近在全网热播的电视剧中,向风而行和去有风的地方的字样频频刷屏热搜朋友圈,一些还没看的小伙伴觉得这两个含义相近的剧名,会不会…更新时间:2023-01-12|作者:lc|已阅读:95次|标签:
-
对于职场人来说,每天都有如陀螺忙得转个不停。大家经常会抱怨工作苦工作累,但是仔细思考一下就会发现,之所以每天累得半死,除了工作多这个原因之外,很多时候是因为没有…更新时间:2023-01-11|作者:ZDH|已阅读:169次
-
去有风的地方电视剧在爱奇艺上能看吗,最近有一部神仙姐姐刘亦菲和李现主演的新剧《去有风的地方》正在热播,这几部新剧的名字都带风呀。那么刘亦菲主演的《去有风的地方》…更新时间:2023-01-05|作者:rw|已阅读:605次|标签:
-
《承欢记》《与凤行》《今天的她们》正在热播下载次数:4282283次更新日期: 2024-07-09软件大小:110MB立即下载安装天极优选
- 热门标签
- 猜你想搜
- 精选软件
热文推荐
- 48小时热文
- 每周热文
-
看英文视频跟不上咋办?快用这3款能翻译视频的同声传译软件
看英文视频跟不上咋办?快用这3款能翻译视频的同声传译软件
2024-07-19 -
英雄联盟新PVE模式有几个英雄_是不是常驻模式
英雄联盟新PVE模式有几个英雄_是不是常驻模式
2024-07-18 -
QQ音乐误删歌单怎么恢复_QQ音乐歌单恢复教程分享
QQ音乐误删歌单怎么恢复_QQ音乐歌单恢复教程分享
2024-07-19 -
出门打车用哪个APP好_2024靠谱好用的打车APP推荐
出门打车用哪个APP好_2024靠谱好用的打车APP推荐
2024-07-18 -
英雄联盟幻灵战术支援手册是什么_值不值得买
英雄联盟幻灵战术支援手册是什么_值不值得买
2024-07-18 -
唐朝诡事录之西行多久更新一集_全集一共几个案子
唐朝诡事录之西行多久更新一集_全集一共几个案子
2024-07-19 -
搜狗浏览器的AI写作工具在哪_需不需要收费
搜狗浏览器的AI写作工具在哪_需不需要收费
2024-07-19 -
如何直接对截图进行AI编辑_这款浏览器能让截图玩出新花样
如何直接对截图进行AI编辑_这款浏览器能让截图玩出新花样
2024-07-18 -
告别写作难题!盘点2024五款好用的AI写作浏览器
告别写作难题!盘点2024五款好用的AI写作浏览器
2024-07-19 -
夸克网盘AI字幕不自动匹配的原因及解决流畅揭秘
夸克网盘AI字幕不自动匹配的原因及解决流畅揭秘
2024-07-18
-
无畏契约全球冠军赛比赛直播在哪看_参赛队伍介绍
无畏契约全球冠军赛比赛直播在哪看_参赛队伍介绍
2024-07-17 -
看英文视频跟不上咋办?快用这3款能翻译视频的同声传译软件
看英文视频跟不上咋办?快用这3款能翻译视频的同声传译软件
2024-07-19 -
怎么一边浏览网页一边刷抖音_分屏刷抖音工具推荐
怎么一边浏览网页一边刷抖音_分屏刷抖音工具推荐
2024-07-14 -
部落冲突宝石怎样获得_宝石白嫖方法大全
部落冲突宝石怎样获得_宝石白嫖方法大全
2024-07-13 -
英雄联盟新PVE模式有几个英雄_是不是常驻模式
英雄联盟新PVE模式有几个英雄_是不是常驻模式
2024-07-18 -
不再担心翻译不准!为您推荐5款准确又有效率的AI翻译软件
不再担心翻译不准!为您推荐5款准确又有效率的AI翻译软件
2024-07-16 -
QQ音乐误删歌单怎么恢复_QQ音乐歌单恢复教程分享
QQ音乐误删歌单怎么恢复_QQ音乐歌单恢复教程分享
2024-07-19 -
夸克浏览器AI解题工具在哪_需要付费使用吗
夸克浏览器AI解题工具在哪_需要付费使用吗
2024-07-15 -
出门打车用哪个APP好_2024靠谱好用的打车APP推荐
出门打车用哪个APP好_2024靠谱好用的打车APP推荐
2024-07-18 -
哪款云游戏平台可以玩端游_玩端游吃不吃电脑配置
哪款云游戏平台可以玩端游_玩端游吃不吃电脑配置
2024-07-17