MySQL和大页面/ hugetlb的性能增益是多less?

MySQL对InnoDB有大页面/ hugetlb支持。 有很多关于这个主题的文章( 例子 )。

但是有没有人有他们看到的性能改变的例子?

我已经看到其他数据库系统使用hugetlb获得性能。 例如。 专有的nosql分布式的mmapped键值存储。 随着mmap文件增长到0.5GB,商店会放慢速度。 即使在2GB或3GB之后,它的性能也不会降低。

观察是沿着的; 如果我们存储活动的用户会话,并在例如。 100个用户,我们有32MB的数据,读取速度将是Xlogging/秒。 在3000个用户,我们将在1GB左右,读取速度下降到X / 2。 读取速度包括哈希查找和复制数据。 所有的访问都是机器本地的,所以它是内存拷贝的内存。

现在,如果用户注销,商店的数据文件将保持不变,即使key / val空间缩小到32MB,哈希表被转换等,但读取速度停留在X / 2,并没有攀升。

事实certificate是TLBcaching未命中,使用hugetlb /大页面意味着速度将停留在X左右,即使用户爬到10000,文件变得越来越大。

这是伟大的一切。 而本能现在告诉我,MySQL应该具有相同的特性,并启用hugetlb /大页面但没有一些例子,这是一个艰难的销售尝试。

那么,有没有人尝试使用hugetlb / large pages来提升性能,以及你的体验(好/坏/中性)是什么? 我很想听听数据库的大小,以及大致的性能变化(如果有的话)。

数字欢迎!

不是MySQL的例子,但是我在Oracle中看到了这个确切的行为:

http://www.pythian.com/blog/performance-tuning-hugepages-in-linux/

正如post指出的那样,以PageTables的大小来查看/proc/meminfo 。 如果您看到页表的内存浪费巨大,则可能会花费大量CPU时间来pipe理它们。

MySQL还有一些关于如何实现它的注释,以及为什么你会:

http://dev.mysql.com/doc/refman/5.6/en/large-page-support.html

执行大量内存访问的应用程序可能由于减less了转换后备缓冲区(TLB)缺失而使用大页面来获得性能改进。