内存是计算机中重要的部件之一,它是外存与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。
在台湾一般称为:“电脑记忆体”,一般我们所用的内存是挥发性记忆体,当电源供应中断后,记忆体所储存的资料便会消失的记忆体。
电脑内存
电脑运行内存的作用:
我们都知道内存读写速度远远高于磁盘,系统会猜测你和正在运行的程序想要使用的文件,比如文档、dll等,然后提前把这些文件读到内存里面了。等你要打开这个文件的时候,就不需要磁盘读写操作了,速度也提升了很多。
硬盘虚拟内存:
物理内存不够的时候,系统会把一部分页换到磁盘上;如果物理内存中读取不到要使用的页,就会从虚拟内存中找,这个磁盘读写会减慢系统的速度。不过内存大了关闭虚拟内存也不是很必要,不太常用的页换到虚拟内存中,留出更大的物理内存来存放Mapped Files,也是能提高运行速度的。
云服务器内存的作用:
服务器内存也是内存,它与普通PC机内存在外观和结构上没有什么明显实质性的区别,主要是在内存上引入了一些新的特有的技术,如ECC、ChipKill、热插拔技术等,具有极高的稳定性和纠错性能。
内存大小也是影响服务器性能的一个重要因素。如果内存太小,系统进程会被阻塞,应用程序会变慢甚至没有响应。
云服务器内存实现原理(本文以KVM为例):
客户机物理地址空间:
为了实现内存虚拟化,让客户机使用一个隔离的、从零开始且具有连续的内存空间,KVM 引入一层新的地址空间,即客户机物理地址空间 (Guest Physical Address, GPA),这个地址空间并不是真正的物理地址空间,它只是宿主机虚拟地址空间在客户机地址空间的一个映射。对客户机来说,客户机物理地址空间都是从零开始的连续地址空间,但对于宿主机来说,客户机的物理地址空间并不一定是连续的,客户机物理地址空间有可能映射在若干个不连续的宿主机地址区间。
物理机与虚拟机地址
影子页表
由于宿主机 MMU 不能直接装载客户机的页表来进行内存访问,所以当客户机访问宿主机物理内存时,需要经过多次地址转换。也即首先根据客户机页表把客户机虚拟地址转传成客户机物理地址,然后再通过客户机物理地址到宿主机虚拟地址之间的映射转换成宿主机虚拟地址,最后再根据宿主机页表把宿主机虚拟地址转换成宿主机物理地址。而通过影子页表,则可以实现客户机虚拟地址到宿主机物理地址的直接转换。
影子列表
EPT页表
EPT 技术在原有客户机页表对客户机虚拟地址到客户机物理地址映射的基础上,又引入了 EPT 页表来实现客户机物理地址到宿主机物理地址的另一次映射,这两次地址映射都是由硬件自动完成。客户机运行时,客户机页表被载入 CR3,而 EPT 页表被载入专门的 EPT 页表指针寄存器 EPTP。EPT 页表对地址的映射机理与客户机页表对地址的映射机理相同。
EPT列表
内存总结
一般对于云服务器而言,自然是内存越大越好,不过“羊毛出在羊身上”只有适合的才是最好的!
(1)大内存可能是云计算出厂商的一种营销手段。
(2)不能盲目地相信内存总数。选择不同操作系统,占用的内存均不同,可能4G装完Windows sever就剩下2G了。
(3)市面上的内存有DDR4,DDR4 相比之前的 DDR3 在速度和功耗控制上有大幅增强,内存相同也要一定也要看清楚是DDR4还是DDR3。
(5)RAM内存的大小会在一定程度上影响服务器速度,但并不是决定性因素,毕竟手机运行速度是由 CPU、GPU、RAM、ROM、系统优化等等共同来决定的。