美文网首页CPU与内存
为什么需要hugepage?

为什么需要hugepage?

作者: SnC_ | 来源:发表于2021-07-16 18:54 被阅读0次

    简单解释
    当一个程序使用memory时,CPU将对应的RAM标记为被此程序所用。
    为了效率,CPU以4K byte的单位分配RAM。此单位被称为"page"。

    因为程序使用的内存空间是虚拟的,所以CPU需要记住哪个page属于哪个程序,以及page放在哪里。显而易见,page越多,要记的东西就越多,查起来也更费时间。
    假设一个程序使用1GB内存,那就有1GB/4K=262144个page table entries。假设一个Page Table Entry消耗8byte,则就有262144*8byte=2MB的数据要查。

    因此目前大部分CPU架构支持更大的page,以让内存查找更方便。
    这种技术称为Huge pages(on Linux),Super pages(on BSD),Large pages(on Windows)。


    较详细的解释
    由于虚拟内存到物理内存之间的translation的存在,虚拟内存引用需要多次访问物理内存。而引用的成本与Page Table Format有关。为了降低translation的成本,虚拟内存中使用了“局部性原则(locality)”,只将最近的几次translation存储在名为“Translation Lookaside Buffer”的cache中。

    有了TLB后,translation的步骤如下:

    1. CPU产生一个虚拟地址
    2. MMU从TLB中获取页表,翻译成物理地址
    3. MMU把物理地址发送给 L1 cache/L2 cache/L3 cache/memory
    4. L1/L2/L3/memory将地址对应数据返回给CPU

    TLB能为多大的内存空间提供查询(称为TLB reach),取决于page size,number of TLB entries。
    不可避免地,程序运行的一部分时间,被花在访问TLB和处理TLB misses上。

    Translation花费的时间,取决于工作负载。如TLB reach是否可以满足application进行translation需要的内存空间大小。
    而在TLB miss时,花费的时间取决于tanslation所需的信息是否在cache中。

    如果通过分析程序运行花费的时间,得出TLB miss time占了较大的部分,那就应该考虑如何降低miss rate以取得更好的性能。一种方式就是扩大page size。

    Huge page的优点有2点,明显的是translation的次数更少了,不明显的是TLB可以被放在L2 cached中了。

    参考链接1
    参考链接2
    huge page的使用

    相关文章

      网友评论

        本文标题:为什么需要hugepage?

        本文链接:https://www.haomeiwen.com/subject/aorbpltx.html