机器:戴尔r815,CentOS 5.4,256GB内存,4 x 12内核.
我们有一个拥有275GB文件的应用程序.它一次就可以对20GB的数据进行排序,即它可以交换位并在同一个文件中替换它们.一切正常.
最后一个传递然后读取整个文件并对不同的20GB块进行合并排序,并将它们输出到一个全新的文件.
这个过程SEEMS可以运行一段时间,最终会将50GB左右的磁盘冲出来.在此之后的某个时间,整个机器开始吓坏了.
像ps -ef,ls -al这样的简单命令会长时间挂起并显示为占用100%cpu(这只是一个核心).
看看顶部的内存统计数据,我看到它使用了大约120GB的RAM(所以128GB免费),在“缓存”部分下有120GB.
以前有没有人见过这种行为?同样的进程在具有64GB内存的机器上运行良好 – 所以我认为它与我在机器中安装的RAM有关.
(正如我们所说,我在这台机器上运行的测试只有64GB – 以排除硬件问题).
我可能在/etc/sysctrl.conf中遗漏了一些vm参数吗?
谢谢!
解决方法
你的问题让我想起了我最近读过的东西:
http://jcole.us/blog/archives/2010/09/28/mysql-swap-insanity-and-the-numa-architecture/
这解决了NUMA架构(如您可能在48核AMD系统中找到的)如何影响内存分配和交换.我不知道这是不是你遇到了什么,但它听起来非常相似,可能值得一读.
即使它不是它令人着迷的阅读的答案.