当前位置:网站首页>大页内存原理及使用设置
大页内存原理及使用设置
2022-07-28 23:43:00 【qq_42533216】
内存分页大小对性能的提升原理
首先,我们需要回顾一小部分计算机组成原理,这对理解大内存分页至于JVM性能的提升是有好处的。
什么是内存分页?
我们知道,CPU是通过寻址来访问内存的。32位CPU的寻址宽度是 0~0xFFFFFFFF ,计算后得到的大小是4G,也就是说可支持的物理内存最大是4G。
但在实践过程中,碰到了这样的问题,程序需要使用4G内存,而可用物理内存小于4G,导致程序不得不降低内存占用。
为了解决此类问题,现代CPU引入了 MMU(Memory Management Unit 内存管理单元)。
MMU 的核心思想是利用虚拟地址替代物理地址,即CPU寻址时使用虚址,由 MMU 负责将虚址映射为物理地址。
MMU的引入,解决了对物理内存的限制,对程序来说,就像自己在使用4G内存一样。
内存分页(Paging)是在使用MMU的基础上,提出的一种内存管理机制。它将虚拟地址和物理地址按固定大小(4K)分割成页(page)和页帧(page frame),并保证页与页帧的大小相同。
这种机制,从数据结构上,保证了访问内存的高效,并使OS能支持非连续性的内存分配。
在程序内存不够用时,还可以将不常用的物理内存页转移到其他存储设备上,比如磁盘,这就是大家耳熟能详的虚拟内存。
在上文中提到,虚拟地址与物理地址需要通过映射,才能使CPU正常工作。
而映射就需要存储映射表。在现代CPU架构中,映射关系通常被存储在物理内存上一个被称之为页表(page table)的地方。
如下图:

从这张图中,可以清晰地看到CPU与页表,物理内存之间的交互关系。
进一步优化,引入TLB(Translation lookaside buffer,页表寄存器缓冲)
由上一节可知,页表是被存储在内存中的。我们知道CPU通过总线访问内存,肯定慢于直接访问寄存器的。
为了进一步优化性能,现代CPU架构引入了TLB,用来缓存一部分经常访问的页表内容。
如下图:

对比 9.6 那张图,在中间加入了TLB。
为什么要支持大内存分页?
TLB是有限的,这点毫无疑问。当超出TLB的存储极限时,就会发生 TLB miss,之后,OS就会命令CPU去访问内存上的页表。如果频繁的出现TLB miss,程序的性能会下降地很快。
为了让TLB可以存储更多的页地址映射关系,我们的做法是调大内存分页大小。
如果一个页4M,对比一个页4K,前者可以让TLB多存储1000个页地址映射关系,性能的提升是比较可观的。
虚拟机中设置大页内存:
echo 1024 > /proc/sys/vm/nr_hugepages 2G的内存设置256,4G内存设置512.
边栏推荐
- 时间序列数据的预处理方法总结
- Wechat campus bathroom reservation of small program completion work (6) opening defense ppt
- 小程序毕设作品之微信校园浴室预约小程序毕业设计成品(6)开题答辩PPT
- 双链表的定义 ~
- 自制 | 纯手工自制一个16位RISC架构CPU
- 【AD学习】本次海上航行器大赛画pcb图的历程
- AQS原理
- Surfacecontrol and surfaceflinger communication
- 会议OA项目之会议通知&会议反馈&反馈详情功能
- 【commons-lang3专题】002- RandomUtils 专题
猜你喜欢

Irregular clipping of NC data with CDO

ZABBIX deployment and monitoring

NFT 项目的 7 种市场营销策略

如何在WordPress中创建一个自定义404错误页面

Jupyter notebook中5个有趣的魔法命令

Have you seen the management area decoupling architecture? Can help customers solve big problems

关于ThreadPool的一些注意事项

B- 树 ~

Talk about the cross end technical scheme

JWT token related configuration (global configuration identity authentication rewrites authenticate method)
随机推荐
会议OA项目之会议通知&会议反馈&反馈详情功能
Method of converting inline elements to block elements
Execute immediate simple sample set (DML)
Android必备的面试技能(含面试题和学习资料)
In the second round, 1000 okaleido tiger were sold out in one hour after logging in to binance NFT again
SurfaceControl和SurfaceFlinger通信
返回*this的成员函数
redis版本怎么查看(查看redis进程)
iNFTnews | 元宇宙购物体验将成为吸引消费者的一大利器
day8
Download the latest version of visual studio code and connect to the server remotely (very detailed)
Techo Hub 福州站干货来袭|与开发者共话工业智能新技术
Charles -- 从0-1教你如何使用抓包工具
DRF - paging, JWT introduction and principle, JWT quick use, JWT source code analysis, JWT custom return format, custom user issued token, custom token authentication class
从零开始实现lmax-Disruptor队列(六)Disruptor 解决伪共享、消费者优雅停止实现原理解析
Wechat campus bathroom reservation for the finished product of applet graduation design (7) mid term inspection report
追踪伦敦银实时行情的方法有哪些?
DDD领域驱动设计如何进行工程化落地
Kwai focuses on regulating the number maintenance behavior in the ways of handling and manuscript washing, and how to purify the content ecology on the we media platform
从零开始实现lmax-Disruptor队列(六)Disruptor 解决伪共享、消费者优雅停止实现原理解析