2014 LSMM峰会上的讨论
H. Peter Anvin提出了一个问题:如果硬件可以增加某些功能来让内存管理变得更简单一些,那么这些功能应该是什么呢?
开发者起初抱怨不同架构之间的差异太大,内核软件不得不为他们定制单独的模块,Rik
van Riel指出, PowerPC没有TLB
Flush的功能,其他一些架构(如SPARC)也有这一限制,这使得通用代码无法完成他们本应该完成的事情,如果该功能由硬件来完成,那么平台无关的代码(通用部分)将更容易地完成页表刷新的工作.
Peter Zijlstra希望x86能有使某一区域页表失效(Invalidate)的功能.
另一个普遍的需求是x86能提供64KB大小的页(目前只有4KB,2MB和1GB).
Mel Gorman提出是否有让页面快速填0的方法(memset(addr,0,size)的性能在很多时候是瓶颈),尤其是使用大页时显得尤其有必要,填满一整个页面往往需要不短的一段时间。有人提出使用non-temporal的技术来解决该问题,即fill page时不需要使CPU
cache失效的技术。还有人提出在CPU的空闲时间来完成fill page的工作,但Christoph Lameter表示他已经尝试过了这个方法,但效果很不理想
有人提出希望有更快速的iret指令,以便更快速地进行缺页处理;
再有就是关于用CPU间传递消息以及响应事件所引起开销的讨论,人们觉得可以运行在用户态的mwait指令或许能有所帮助。
开发者们的愿望清单,硬件厂商的开发人员是否都看到了呢?