0%

2019/02/27 组会小记

昨天晚上开了这学期第一次组会,算是活过去了233,因为要求每个人讲一下自己的思路,通知说 3 月初开题,然而我没做 ppt,也没啥思路。

毕竟关于我那个课题(关于 unikernel 的异构内存管理)的论文很少,我还去知网搜了一下,然后我笑了。(毕竟我一般去谷歌学术搜论文)

  • 搜索 unikernel 关键词结果只有 5

  • 搜索 unikernel 内存管理关键词则没有😂

然后老师又要求每个研一的同学说说自己的想法,没办法我只能借鉴之前看的一般异构内存管理的方法。

我就大概有三点想法:

  1. 若是能知道启动的 unikernel 的读写比例,则可以相应给其分配不同比例的内存
    然后学长说这一点这是不可能的,因为你无法决定数据到底放在 DRAM 还是 NVM。
  2. 自己添加一个库/模块,其作用是当 unikernel 处于 idle 状态/内存利用率不高的时候将空闲内存返还给 hypervisor,然后当其内存不够的时候再向 hypervisor 申请
    听完之后学长立马就说,这不是那个 ballooning 吗?(我沉默了一会,因为这就是借鉴它的思想)然后我反驳道:这个技术没被用到 unikernel 上啊。
  3. 开始的时候初始化一个较大内存池,由 hypervisor 管理,结合上面一点来使用。

最后老师表示最后一条好像还行,其他的还是算了吧,特别是第一个。
然后我问道,这个方面没啥资料,我也不知道该怎么做啊;3之前问同组的一个学长(我们组就我们俩做 unikernel)有没有这方面资料,他表示本来 unikernel 就没多少人做,然后内存管理就更少了,他那边也么得,我哭了…
老师:就是因为没人做,做起来才有意义啊!(学长们都偷偷笑了)
而当时我是这个表情:

最后老师还是给我了一个思路:“大页”(就我理解大概就是比传统 4k 更大的页面吧233)
瞬间感觉得救了吧,至少有了一个方向,之前完全是两眼一抹黑,看的论文基本都是讲 unikernel 安全的。

而且前两天看的 github 上的一个 unikernel 总结了所有的 unikernel 的特性、实现语言、适用平台以及现状(是否仍在维护),最后做了一个对比试验,选取的是 includeOS,将其和 Docker 进行性能比较,最后发现 unikernel 占优势的仅仅是生成的镜像大小,其余如延迟、启动时间、性能均不如 Docker(作者指出一个原因可能是 includeOS 自身存在某些 bug),可能之后我还是逃脱不了 MirageOS ,得去学 OCaml 吧。

Welcome to my other publishing channels