大量的内存,但仍然交换

这是我的服务器内存的graphics 在这里输入图像说明

你可以在图中看到每次我重新启动mysqld时,swap变成了零。 但随着时间增加。
如果我把innodb缓冲池放在大尺寸交换上升得更快,如果我降低交换上升速度会更慢。

在这里输入图像说明

你没有提到任何性能问题,只是它使用交换。

这是完全正常的。

如果内存中的东西很less被使用,内核就会将它们交换出来,为经常使用的高速caching留出更多的空间。

这可以通过vm.swappiness内核参数进行调整,但通常情况下,它的工作方式很好,调整为不使用swap会使性能变差,而不是更好。 一个很好的解释,究竟是什么调整可以在这个问题中find: https : //unix.stackexchange.com/questions/32333/what-does-the-vm-swappiness-parameter-really-control

多less交换是可以的,一个问题有多less信号依赖于很多因素 – 在调整swappiness之后,你只能通过查看一段时间的性能指标来判断。 这将取决于底层磁盘的速度,后台进程唤醒的频率,使用该RAM进行caching与将内容保存在RAM中的磁盘IO节省了多less。 所有这些都取决于你的硬件和工作量。

完全同意授予,交换利用并不总是一个性能问题,但如果数据库交换你会看到一个性能问题,但这一切都取决于情况。下一次当你的系统交换时,可以运行这个脚本来找出哪个进程正在交换

http://northernmost.org/blog/find-out-what-is-using-your-swap/ 

像Grant一​​样,build议像Oracle这样的数据库提供vm.swappiness参数,RedHatbuild议将它降低到低10(默认设置为60),并且主要由algorithm使用

  swap_tendency=mapped_ratio/2 + distress + vm_swappiness if swap_tendency < 100 kernel will reclaim a page from page cache if swap_tendency >=100 Page will be eligible for swap 

还有一些MySQL调谐器脚本,但请在testing环境中testing它,然后再应用于生产http://mysqltuner.com/

此外,现在MySQL支持不可切换的巨大页面,随着TLB大小的减小以及caching命中的增加,您将看到性能提高。http://dev.mysql.com/doc/refman/5.0/en/large-page-support html的