xen迭代拷贝中工作集测定分析

14 篇文章 0 订阅
12 篇文章 0 订阅

Xen 根据页被使用的状况,把迁移的内存页分为三类,也就是 Xen 的三种页位图:to_send、to_skip 和 to_fix。
利用这三种页位图,就可以方便的设定和选择每轮迁移的对象。这三种位图定义在在 tools/libxc/Xc_linux_save.c 中,为指针类型。
这三个位图的说明如下:

  1. to_send:标记的是在前一轮迭代过程中变脏的页,也就是在本次迭代中需要被传送的页;

  2. to_skip:标记的是在本次迭代中可以跳过不传的页;

  3. to_fix:标记的是在最后的停机拷贝阶段才传送的页


实际上 to_send 位图中的页就是在前一轮迭代过程中被修改的页,只需在迭代开始前把上一轮的脏页位图拷贝到to_send 就可以了。在第一轮迭代时,to_send 的位需要全部置 1

to_skip 是 Xen 为了减少页的反复重传而引入的一个位图,记录的是那些由于改动较频繁可以跳过的页,通过定期查看脏页位图能够找到那些改动频繁的页

to_fix 是那些还没有被映射的页,这些页放到最后一轮传送。


下面讲一下Xen 的工作集测定方法如下:


  • 在每轮迭代开始后,调用函数 xc_shadow_control()的查看操作,把脏页位图拷贝到 to_skip 位图中

  • 比较 to_send 和 to_skip 中的页,to_send 是前一轮迭代过程中变脏的页,to_skip 是从本轮迭代开始到目前为止变脏的页,同时出现在 to_send 和to_skip 中的页(即满足 test_bit(n, to_send) && !test_bit(n, to_skip)条件)可以认为改动较为频繁,这些页本轮不用传送。

  • 本轮迭代结束前,调用 xc_shadow_control()的清空操作,把脏页位图拷贝到to_send 位图再清空


关于xc_shadow_control()函数,它提供了两种对位图的操作,具体用法如下:

  1. 清空操作(XEN_DOMCTL_SHADOW_OP_ CLEAN),其实完成了两件事情,先是把脏页位图拷贝到指定的位图中,再把脏页清空。这个操作通常用于在新一轮迭代开始前,把脏页位图的内容保存到 to_send 位图,并将脏页位图清空。

  2. 查看操作(XEN_DOMCTL_SHADOW_OP_PEEK),只把脏页位图拷贝到指定的位图中,对脏页位图不进行任何修改。这一操作通常用于定位 to_skip位图中的页。


本文出自 “new妞宁” 博客,请务必保留此出处http://yang19890314.blog.51cto.com/1620466/1253274

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值