再次像 Grant 建议 Oracle 等数据库的 vm.swappiness 参数,RedHat 建议将其降低到低至 10(默认设置为 60)并且主要由算法使用
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
您没有提到任何性能问题,只是它正在使用交换。
这是完全正常的。
如果 RAM 中有不经常使用的东西,内核会将它们交换出去,以便为经常使用的缓存腾出更多空间。
这可以通过 vm.swappiness 内核参数进行调整,但通常它可以正常工作,并且将其调整为不使用交换通常会使性能更差,而不是更好。在这个问题中可以找到关于调整的一个很好的解释:https ://unix.stackexchange.com/questions/32333/what-does-the-vm-swappiness-parameter-really-control
多少交换是可以的,一个问题有多少信号取决于很多因素——你真的只能通过在调整交换后查看一段时间的性能指标来判断。这将取决于底层磁盘的速度、后台进程唤醒的频率、使用该 RAM 进行缓存与将内容保存在 RAM 中节省了多少磁盘 IO。所有这些都取决于您的硬件和工作负载。
完全同意格兰特,交换利用率并不总是一个性能问题,但如果数据库正在交换,你会看到一个性能问题,但这完全取决于情况。下次当你的系统交换时,你可以运行这个脚本来找出哪个进程正在交换
再次像 Grant 建议 Oracle 等数据库的 vm.swappiness 参数,RedHat 建议将其降低到低至 10(默认设置为 60)并且主要由算法使用
还有一些 mysql 调谐器脚本,但请在测试环境中对其进行测试,然后再应用于生产http://mysqltuner.com/
此外,现在 MySQL 支持不可交换的大页面,随着 TLB 大小的减小和缓存命中率的增加,您将看到性能提高http://dev.mysql.com/doc/refman/5.0/en/large-page-support .html