Giter Site home page Giter Site logo

xen_aet_support's Introduction

xen_aet_support

xen_aet_support's People

Contributors

joehf avatar

Watchers

James Cloos avatar  avatar  avatar

xen_aet_support's Issues

估算小距离

  master分支上将页面置位之后,下一次虚拟机对该页面的访问将会陷入,陷入之后我们需要修复置位错误,同时把该页加入待置位页面集合,以便在未来的某个时机再将这个页面置位,现在的实现中是在下一次vmexit的时候置位,但是对于一个已经正常运行的虚拟机来说vmexit不会那么多,极有可能下一次vmexit是我们置位的另外一个页面发生了page fault
  举个例子,比如初始情况下我们置位了L1、L2页面,当第一次访问L1时陷入,修复之后将L1加入待置位集合,下一次访问L2导致page fault从而vmexit,这个时候做两件事情给L1重新置位,修复L2错误。
  L1页面从修复到下一次置位之间的cache hit将极有可能是L1的页内连续访问,如果下一次置位的时机真的就是L2的陷入,那么cache hit极有可能是L1页面的页内连续访问,也有可能是非L1、非L2页面的页内连续访问,如果把cache hit数乘以一个概率那么将是1/512

采样第二种方法

在vmexit处增加一个计时器,经过特定时间扫描当前shadow page table的l4页表,将所有512个entry标记
shadow page fault发生的虚拟地址va涉及到的影子页表包括sl4e_,sl3e_,sl2e_,sl1e_
sl4e_指向512个包含sl3e_的三级页表,置位所有511个三级页表除sl3e_
sl3e_指向512个包含sl2e_的二级页表,置位所有511个二级页表除sl2e_
sl2e_指向512个包含sl1e_的一级页表,采样置位所有511个一级页表除sl1e_

改变置位的时机

  之前的实现都是在page fault完成对特定的页面置位,但是在page fault有一个缺点是没有办法对当前发生page fault的页面置位,这样置位难免都会存在一个滞后性。
  现在有个想法是我们只需要在page fault记录有哪些页面需要跟踪,置位我们可以每隔一定时间对这些记录下来的页面统一置位,可以在虚拟机发生vmexit的时候加入一个定时器,每隔一定时间便对采样的页面集合标记置位。

修改标记置位bug

将标记位从0xfff8000000000400ULL修改为0x0008000000000400ULL产生bug,虚拟机异常退出

mem counter偏大问题

fake benchmark现在的实现是每个页先顺序写一遍,再顺序读一遍,对于100MB的数组,一共25600个page,所以重用时候的内存访问间隔大致应该是25600,现在实验测得42000左右

随机采样

  要做到随机采样有两种方式:一是在进程创建页表的时候就把所有页表项保存下来,这样在需要采样的时候就直接在这项页表项中做随机选取即可;二是在需要采样的时候遍历页表,选择我们需要的页表项,可以在上级页表就加入随机选择,只选取我们感兴趣的。
  老师们的意见特别是汪老师的意思是遍历页表,这个方式也是可行的,不过我觉得这样做的时间复杂度较高,并且实现的复杂度也相对较高。我打算先实现第一种随机采样方式,对先有代码的改动最小。之前认为存储代价为页的个数,其实并不需要这么多,我们考虑保存最后一级页表也就是pte页表项的那个页,在64位系统下,一个这样的页可以保存512个pte,而我们只需要保存这个保存512个pte的页的页框号就能够找到这512个页表项。假设对于一个有4个g内存的计算机,总共有4*1024*1024/4 = 1024*1024 个页,那我们只需要保存1024*1024/512 = 2048这样多的保存pte页表项的页框号,假设保存的信息占据32byte,则只需要2048*32 = 64KB,存储压力是很小的。现在需要找一个好的随机算法能够在2048个保存512个pte页表项的页中随机采样一定采样比例的页面进行置位。
  加入随机采样之后,我们只需要每隔一定时间采样适当比例的页面进行置位,从置位到截获是第一次访问,在那之后我们还需要继续置位监控它的第二次访问。这期间的内存访问数作为重用距离。在这次访问之后这个页面就无需再置位了。

记录重用时间

从标记置位到再次使用时候发生page fault的间隔时间作为重用时间,记录PTE对应的机器页框号重用时间,并在发生重用的时候更新重用时间分布

采样第一种方法

当guest发生shadowpagefault时根据发生pagefault的地址va
va->sl4e->sl3e->sl2e->sl1e->page
sl2e指向包含sl1e的512个页表项PTE
对除了sl1e的剩下511个PTE采样标记
优点:
实现简单,已基本完成置位及修复的过程
缺点:
每次shadowpagefault都遍历512个PTE有一定开销,会存在重复
没有办法做到周期性的一次采样

回归计算冷页的失效率曲线

  把页面失效作为页面的重用间隔,引入热页集过滤降低开销,相当于计算了冷页的失效率曲线。
  先全采样,也就是将所有pte置位,采集到的页面先放入热页集,修复置位,暂不监控,当热页集满后pop出pte之后再置位,恢复监控,再次截获到的时候计算重用时间。最后计算aet时相当于计算出了冷页的失效率曲线。
  观察benchmark的page fault数目,运行时间,以及计算出的失效率曲线和taco论文的结果做比较。

加入调试寄存器

现在这种采样方式还不完善,对于在一个页面里面的连续访问不能截获,需要借助相邻页面的访问来截获,还是需要调试寄存器在这个页面访问之后立刻置位

AET测出来的内存是实际内存的2倍

重用时间已经符合预期,根据fake benchmark

  • 100MB对应重用距离25600,实测26400
  • 300MB对应重用距离76800,实测78164
  • 500MB对应重用距离128000,实测78100

页内连续写入结果不准确

1、mem_access - l3 miss假设为是小距离的数
2、算出的miss curve有台阶
3、用tlb去算页面的重用(非mem_access)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.