dev2dev.bea.com.cn
首页 资源中心 dev2dev学堂 在线技术论坛 专家Blog User Group CodeShare

Henrik Ståhl (hstahl)

Henrik Ståhl (hstahl)
  Henrik Ståhl 是JRockit团队的产品主管,他于2004年加入BEA。他与JRockit的渊源可追溯到该产品的首次公开发布,他是早期的beta测试人员之一。之前他曾做过开发人员、系统架构师,进行性能测试和调优,负责IT安全性。


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

2006-07-14 00:00:00 | 评论 (0) | 被访问(639)次

  大型系统可能被用于运行一个大的进程(分布于整台机器),但是更常见的配置是对该机器进行分区,并运行多个较小的进程,每个进程分布于一个专用的分区中。要在一个运行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的服务器。

原文出处:http://dev2dev.bea.com/blog/hstahl/archive/2006/06/performance_tip_1.html


2006年07月

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
RSS订阅

Henrik Ståhl (hstahl)'s Blog搜索