阅读新闻

性能调优技巧:使用NUMACTL控制CPU和内存的亲和性

[日期:2007-03-02] 来源:  作者: [字体: ]
 大型系统可能被用于运行一个大的进程(分布于整台机器),但是更常见的配置是对该机器进行分区,并运行多个较小的进程,每个进程分布于一个专用的分区中。要在一个运行Linux并使用NUMA架构的服务器上实行分区,可以使用numactl命令启动JRockit。这允许用户控制在哪个NUMA节点上运行进程,以及从哪个节点分配内存。下面是一些示例命令:

  列举系统上的NUMA节点:

  numactl --hardware

  启动java锁定到节点0,在本地节点上分配所有内存:

  numactl --cpubind=0 --localalloc java Hello

  在本地节点上分配所有内存,避免通过NUMA总线的开销。非本地的内存访问将导致性能损失。所分配的内存大小取决于应用程序和硬件。常见的值可能是降低10%,但是也可能更高,所以如果需要调优性能,该设置无疑需要多次试验。更多信息请参见numactl man page

  对于JRockit用户的一些典型配置

  • 在一个WLS集群中,每个NUMA节点运行一个WLS节点,以避免在访问内存和进行垃圾收集的过程中的所有NUMA开销。
  • 对于具有低延迟要求的应用程序,在一个节点上运行JRockit以避免垃圾收集期间的NUMA开销,缩短暂停时间。
  • 运行分布于多个NUMA节点上的一个进程,跨节点交叉访问内存。在单个线程在启动时初始化大量数据结构的应用程序中,这是一个不错的选择,因为它将内存跨多个节点分布,而不是从单个节点分配一切。最终结果不是最优的,但是要比将所有关键数据结构分布于单个节点要好。
该调优技巧应用于Linux和任何使用NUMA架构的服务器,包括基于Itanium的大型服务器,比如SGI AltixBull NovaScale,以及大多数多套接字的基于AMD Opteron的服务器。


阅读:
录入:admin

评论 】 【 推荐 】 【 打印
上一篇:组合SPRING、COMMONJ TIMER、JMX、JROCKIT和WEBLOGIC SERVER的简介
下一篇:关于java初学
相关新闻      
本文评论       全部评论
  f   (1 ,今 23:18 )
  haha   (ji ,05月21日 )
  o o oo ioo   (o ,03月28日 )
  jiayou   (5 ,03月19日 )
发表评论


点评: 字数
姓名:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款