云计算基础-大页内存

大页内存功能概述

什么是大页内存

简单来说,就是通过增大操作系统页的大小来减小页表,从而避免快表缺失

主要应用场景

主要运用于内存密集型业务的虚拟机,比如对于运行数据库系统的虚拟机,采用HugePages(大页)后,可以提升数据库的整体性能(越20%),并有效减小性能抖动

内存基本概念

CPU访问内存时,是去通过寻址去访问内存的,寻址最终寻的是内存的物理地址,物理地址是通过虚拟地址映射出去的,在这里引入了一个内存管理单元,内存管理单元的核心思想是利用虚拟地址代替物理地址,内存管理单元将物理地址和虚拟地址按照固定大小分割成一个个页,或者叫页表,CPU在访问内存时,先访问虚拟地址,再到物理地址的一个访问过程

为了提高地址变换速度,可在地址变换机构中,增设一个具有并行查找能力的特殊高速缓存:块表(TLB:页表寄存器缓冲),用以存放当前访问的那些页表项,由于成本的关系,块表不可能做的很大,通常只存放16~512个页表项

页表存放在内存中,快表存放在高速缓冲曲,速度比内存快很多,当CPU访问内存时,尽可能命中高速缓存区的快表,从而提高虚拟机的寻址速度

为什么需要大页内存

在Linux操作系统上运行内存需求量较大的应用程序时,由于其采用的默认页面大小为4KB,因而将会产生较多的TLB miss和缺页中断,从而大大影响应用程序性能(也就是说,由于TLB大小考虑成本关系,一般最大也就512个页表,而操作系统默认页面大小为4K,如果此时虚拟机所需要的内存这512个页表放不下了,此时,就会向内存中的页表去寻址,此时虚拟机性能将会降低)

当操作系统以2MB甚至更大作为分页的单位时,将会大大减少TLBmiss和缺页中断的数量,显著提高应用程序的性能,这也正是Linux内核引入大页面的直接原因(原本一个页对应4KB的内存,虚拟机需要访问8KB的内存时,就需要占用两个快表,修改默认页大小为2MB时,虚拟机访问2MB的内存页仅仅占用1个快表)

TLB存储极限时,就会发生TLB Miss,之后,OS就会命令CPU去访问内存的页表,如果频繁的出现TLB miss,程序的性能会下降的很快,为了让TLB可以存储更多的页地址映射关系,我们的做法是调大内存分页大小

简单描述

CPU是通过寻址去访问内存的,内存的地址也是保存在内存中的,但CPU的速度要比内存速度快非常多,为了提高CPU的寻址速度而新增了一个模块:TLB(页表寄存器缓冲),以加速CPU的寻址速度,CPU在访问内存时优先在TLB中查找内存地址,当TLB中找不到内存地址时才会去内存中查找,由于成本的关系,块表不可能做的很大,通常只存放16~512个页表项。

一般情况下,内存默认页面大小为4KB,即使512个页表项也放不了多少内存地址,如果CPU在TLB中没有查询到内存地址就会去内存中去查找,从而产生TLB miss,虚拟机性能依旧无法得到最大的提升。

而大页内存就是将将传统的小页面(通常为4KB)替换为更大的页面(通常为2MB或更大),每个页表项对应的物理内存范围也更大,因此可以减少页表项的数量,从而降低TLB miss 的概率。

相关推荐
AKAMAI33 分钟前
AI推理硬件选型指南:CPU 与 GPU 的抉择
人工智能·云原生·云计算
三掌柜6664 小时前
AWS Bedrock + DeepSeek-R1:开启企业级 AI 开发的新篇章
人工智能·云计算·aws
王道长服务器 | 亚马逊云4 小时前
AWS + WordPress:中小型外贸独立站的理想组合
服务器·网络·云计算·音视频·aws
王道长服务器 | 亚马逊云7 小时前
帝国CMS + AWS:老牌内容系统的新生之路
服务器·网络·数据库·云计算·aws
闲人编程7 小时前
Python在云计算中的应用:AWS Lambda函数实战
服务器·python·云计算·aws·lambda·毕设·codecapsule
wanhengidc8 小时前
云手机与云服务器之间的关系
服务器·游戏·智能手机·云计算·区块链
weixin_307779138 小时前
企业TB级数据加密迁移至AWS云:AWS Snowball Edge Storage Optimized成本效益方案解析
云计算·需求分析·迁移学习·aws
天机玄正8 小时前
AWS helmchart包适CCE
华为云·云计算·aws
云资源服务商8 小时前
阿里云无影AgentBay:开启AI智能体“自进化”时代的云端基础设施
人工智能·阿里云·云计算
深耕AI13 小时前
【端口的核心区别】阿里云安全组:80、443和16251
安全·阿里云·云计算