内容简介:全文完极度欢迎将文章分享到朋友圈长按下面二维码关注:Linux News搬运工,希望每周的深度文章以及开源社区的各种新近言论,能够让大家满意~
Transparent huge pages for filesystems
By Jake Edge
May 22, 2019
LSFMM
继续2019 Linux Storage, Filesystem, and Memory-Management Summit (LSFMM)会议记录。Liu Song在会场里提出一个问题,关于如何让文件系统能真正支持transparement huge pages (THPs)。大家都知道文件系统支持THPs很难,那么如何开始第一步?Liu Song在Facebook工作,他们很需要在file page cache里面支持THPs。THPs可以减少page数量,从而减少TLB miss(Translation lookaside buffer miss,指MMU地址翻译没法利用TLB快速查询到结果,需要走完整的MMU walk路径,耗时较长),也就会有更好的performance。Facebook希望把常用的函数都放到huge page里面,从而减少相关指令导致的TLB miss。Facebook先利用Binary Optimization and Layout Tool (BOLT) 来采集他们的代码的运行情况,了解最常用函数是哪些。然后把这些函数归集到一个8MB的memory空间,塞到最终生成的可执行程序里去。
在程序运行的时候,它会在内存里创建一个8MB的临时缓存区,然后把那些常用函数都复制到这块区域。此后,通过mmap()映射anonymous page以及madvise来创建huge page,程序代码段原来的8MB的区域就变成了一个huge page区域,再把临时缓存区的内容copy回来,并且用mprotect()来把这块区域继续设置为可执行代码区域。
这一系列操作之后,kernel什么都不用改,就能获得5~10%的性能提升。不过THP区域的符号地址以及uprobe target就乱掉了,因为kernel没有意识到这块区域还是程序代码段的一部分。假如文件系统代码里面支持了THPs,那就不用搞这么多复杂的小动作,直接用一个madvise()命令来达成即可。
Liu希望能完成filesystem里面相关的代码,不过他所实现的代码里面还是有很多限制和简化。例如,不支持对THP内存区域的写入操作。大家对这里的操作有不小分歧。一位参会者问他为何部支持写操作,是因为性能问题,还是因为代码太复杂。Johannes Weiner解释说如果要加write支持的话,就意味着要修改filesystem里面所有需要用到page结构的代码。特别是所有的文件系统都要被修改了。所以为了避免用一个巨大的patch来一次修改完所有文件,他们采取了一个简洁的修改作为第一步,当然这不会是最终版本。
Kirill Shutemov和Matthew Wilcox有点担心,不支持写入的话,这个代码很难被合入Linux kernel。Chris Mason认为Facebook所描述的这种应用场景,确实不需要写操作。Wilcox坚持认为这个方案太不通用了。Rik van Riel认为大家都应该牢记一点,要想把这么大的一个改动一次性合入kernel,简直是不可能完成的任务。这个patch太大了,还是需要确定第一阶段应该完成什么。Shutemov和Wilcox很坚定的认为,不支持write操作的话,就没有理由合入kernel。
Wilcox倒是提到,他在做的page cache的一些改动(minimizing the tail pages, https://lwn.net/Articles/787388/ ) 会能简化文件系统里相关的支持。具体来说,能够把所有那些针对compound page来返回tail page的函数都拿掉。这样文件系统代码就只需要处理head page即可。他建议等他的代码完成之后,在此基础之上来加文件系统的THP支持。Shutemov比较赞同这个想法。当然这可能不是Liu最希望从这个讨论中看到的结果,没关系,Facebook还是可以继续在内部使用它现有的方案作为过渡。
全文完
极度欢迎将文章分享到朋友圈
长按下面二维码关注:Linux News搬运工,希望每周的深度文章以及开源社区的各种新近言论,能够让大家满意~
以上所述就是小编给大家介绍的《LWN: facebook利用transparent huge page来优化代码执行性能》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 性能调优5:执行计划
- python性能优化之函数执行时间分析
- MySQL 的性能(上篇)—— SQL 执行分析
- 高性能mongodb之应用程序跑执行计划
- Ray 0.6.1 发布,高性能分布式执行框架
- MySQL 性能调优专题二(Explain执行计划使用详解)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
精通数据科学:从线性回归到深度学习
唐亘 / 人民邮电出版社 / 2018-5-8 / 99.00元
数据科学是一门内涵很广的学科,它涉及到统计分析、机器学习以及计算机科学三方面的知识和技能。本书深入浅出、全面系统地介绍了这门学科的内容。 本书分为13章,最初的3章主要介绍数据科学想要解决的问题、常用的IT工具Python以及这门学科所涉及的数学基础。第4-7章主要讨论数据模型,主要包含三方面的内容:一是统计中最经典的线性回归和逻辑回归模型;二是计算机估算模型参数的随机梯度下降法,这是模型工......一起来看看 《精通数据科学:从线性回归到深度学习》 这本书的介绍吧!