测试linux上的hugepages (hugetlbfs)
hugepage采用了大页面(2MB或4MB一个page),理论上页表的索引更小,访问就更快。介绍的资料如下:
http://www.kernel.org/doc/ols/2006/ols2006v2-pages-83-90.pdf 里面还介绍了怎样使用hugepages,但我按它的方法却不好使,最后是把hugetlbfs mount到某个目录,然后在里面创建一个文件,mmap之,注意,hugetblfs里的文件只能通过mmap操作
使用方法可参考:
http://www.cyberciti.biz/tips/linux-hugetlbfs-and-mysql-performance.html
我简单测了一下,分配2G的空间,顺序写一遍,hugepage(2MB一个页面)比malloc快3%
如果把2G空间分成2048份,每份写5遍,(这时模拟实际使用,访问的空间局部性),hugepage比malloc快6%,这和上面那篇论文提到的性能提升是一致的。
感觉在随机读写的时候hugepage表现更好,我猜测是因为CPU的 L1 cache 把页索引缓存,所以非常快。
http://www.kernel.org/doc/ols/2006/ols2006v2-pages-83-90.pdf 里面还介绍了怎样使用hugepages,但我按它的方法却不好使,最后是把hugetlbfs mount到某个目录,然后在里面创建一个文件,mmap之,注意,hugetblfs里的文件只能通过mmap操作
使用方法可参考:
http://www.cyberciti.biz/tips/linux-hugetlbfs-and-mysql-performance.html
我简单测了一下,分配2G的空间,顺序写一遍,hugepage(2MB一个页面)比malloc快3%
如果把2G空间分成2048份,每份写5遍,(这时模拟实际使用,访问的空间局部性),hugepage比malloc快6%,这和上面那篇论文提到的性能提升是一致的。
感觉在随机读写的时候hugepage表现更好,我猜测是因为CPU的 L1 cache 把页索引缓存,所以非常快。
从这篇测试文章可以看出,hugepages不仅速度更快,而且更省内存(页表项少了很多!),所以他的结论是:如果在linux上跑数据库,最好用hugepages。
相关文章
- [kernel] 如果在linux内核模块里用错锁? - 08 04, 2010
- [kernel] linux在多核处理器上的负载均衡原理 - 07 20, 2010
- [linux] tail和poll无关 - 06 01, 2010
留言: