ibm datastagee annotation一个隐藏一个显示是什么情况

【图文】DataStage 基础培训1_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
DataStage 基础培训1
上传于||暂无简介
大小:4.14MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢developerWorks 社区
本文的主旨是交流针对含有 Sort (排序)运算的 IBM InfoSphere DataStage Job 在 Intel Xeon 服务器上运行的性能调优最佳方法。
, 编辑, IBM
developerWorks 中国网站编辑团队。
摘要本文的主旨是交流针对含有 Sort( 排序 ) 运算的 IBM InfoSphere DataStage Job 在 Intel(R) Xeon(R) 服务器上运行的性能调优最佳方法。Sort 运算是 I/O 密集型运算,能够在临时或者暂存文件系统上产生大量的 I/O 负载。为了充分利用服务器的 CPU 计算能力,暂存 I/O 存储系统必须能够提供 sort 运算所需的必要的磁盘带宽。如果一个暂存存储系统不能以足够高的带宽写入或读取数据,那么将导致无法充分利用系统的计算能力。其表现就是很低的 CPU 利用率。本文提供的建议可以降低 sort 运算对暂存存储 I/O 系统的带宽需求。这些 I/O 的减少对于那些处理器运算能力很强而暂存存储 I/O 系统却明显不足的系统来说,性能的提升是非常显著的。1. 简介本白皮书为在 Intel(R) Xeon(R) 处理器平台部署 IBM InfoSphere DataStage 的客户提供有益的性能优化指南。IBM 与 Intel(R) 公司从 2007 年就开始合作,旨在优化 IBM InfoSphere DataStage 与 Intel(R) Xeon(R) 平台组合的性能和投资收益 (ROI)。我们的目标不只是优化性能,进而降低客户在未来使用新版本 IBM InfoSphere DataStage 与 Intel(R) 新处理器这个强大组合的成本,同时我们把一路发现的优化和配置指南展示出来,以方便用户参考使用。在彼此的合作中,我们致力于了解 DataStage Job 在 Intel(R) 平台上的运行特性。根据这些特性来确定硬件配置,操作系统配置以及 Job 的设计和调优技术,从而实现整体性能的优化。由于 IBM InfoSphere DataStage 强大的扩展性能,我们的测试将主要集中在最新的具有 4 个和 8 个 socket 的 Intel(R) Xeon(R) X7560 Xeon(R) EX 处理器上。首先,我们使用 4 个 socket 的配置来测试。我们曾在 2009 和 2010 年的 IBM Information on Demand 会议上展示过 IBM InfoSphere DataStage 在 Intel(R) 平台的运行情况。在 2009 年,与会者对 IBM InfoSphere DataStage 在 Intel(R) 平台上的强大扩展性能给予了高度的赞许,但是他们希望我们能够提供更多有关 Job 的 I/O 需求以及如何能够最大限度利用现有平台 I/O 性能方面的信息。此后,在新版本的 IBM Information Server 8.5 中的 IBM InforSphere DataStage(现在是 64 位)和 Intel(R) 平台上,我们发现了多种方法来提高 Job 运行的整体性能,并且深入研究了 sort 对系统的 I/O 需求。本文将详细介绍我们在研究中获取的一些关于如何配置平台,操作系统以及含有 sort 运算的 DataStage 的主要信息。Sort 是数据整合软件中一个至关重要的运算,Sort 运算是 I/O 密集型运算,它可以导致在临时或者暂存文件系统上产生大量的 I/O 负载。为了优化服务器上的 CPU 利用率,暂存 I/O 存储系统必须有能力提供 sort 运算所需的必要的磁盘带宽。如果一个暂存存储系统不能以足够高的带宽进行数据读写,那么将导致无法充分利用系统的计算能力。其表现就是很低的 CPU 利用率。本文提出的这些建议可以降低 sort 运算在暂存存储 I/O 系统上对带宽的需求。I/O 的减少对于那些处理器运算能力很强而暂存存储 I /O 系统却明显不足的系统来说,整体性能的提高是非常显著的,本文中我们将展示这样的实例。当然,理想情况下最好的解决方案是升级暂存 I/O 存储子系统使其与服务器的运算能力相匹配。2. IBM(R) InfoSphere(R) DataStage(R) 概述IBM InfoSphere DataStage 是一款具有数据抽取(Extract)、转换(Transform)、加载(Load)功能,实现数据整合的产品。该产品提供了设计器工具,使开发人员能够以可视化的方式创建整合 Job。Job 是 IBM InfoSphere Datastage 中用来描述 E(提取)T(转换)L(加载)的作业。Job 由功能丰富的各种运算符(operator)组成,这些运算符统称为 stage,包括以下各种类型:
用于访问数据库、应用程序和文件的源和目标 Stage
通常用于数据处理的 Stage 例如 filter, sort, join, union, lookup, 和 aggregations
内建和自定义的转换 Stage
Copy,move,FTP 和其他数据移动 Stage
Real-time,XML,SOA 以及 Message 队列处理IBM InfoSphere DataStage 允许对所有的 stage 应用前置条件和后置条件。另外,多个 Job 可以通过 Sequencer 来进行控制和连接。Sequencer 能够提供控制逻辑,可以用来处理相应的数据整合 Job。IBM InfoSphere DataStage 还支持丰富的管理功能,用于 Job 的部署、调度以及监控。IBM InfoSphere DataStage 的一个主要优势是,当设计 job 时,通常几乎无需考虑系统底层结构的变化。如果系统有所改变,例如更新或者提升硬件设备,或者在一个平台上开发了 job 而在另一个平台上运行,Job 的设计并不需要改变。IBM InfoSphere DataStage 能够通过 IBM InfoSphere DataStage 配置文件了解系统的大小和结构,而且,还能够根据配置文件中定义的内容来组织和分配 Job 所需的资源。当系统改变时,只需要改变配置文件,而不必更改 Job。在配置文件中可以定义一个或多个用于运行 Job 的处理节点。这些处理节点是逻辑节点而不是物理节点。处理节点的数量并不需要与系统的内核数量相匹配。下面列出的是可能影响并行优化程度的主要因素:
CPU 密集型应用程序,通常要对每个记录执行多个 CPU 需求的操作,这种应用程序最有可能通过并行(Parallelism)达到特定系统所支持的最大性能。
有大量内存需求的 Job 也可以通过并行(Parallelism)获得更好的性能,但前提是其操作的数据已经被分区,并且每个分区都分配了所需的内存。
I/O 密集型的应用程序,比如那些从数据库提取或者将数据载入数据库的应用程序,通过在配置文件中将逻辑节点的数量定义为等于被访问的 I/O 路径数量就可以获得更好的性能。例如,如果一个表在数据库内被分成 16 个分区,或者如果一个数据集合分散在 16 块磁盘驱动器上,那么将 node pool 设置为由 16 个处理节点组成就可提高 IO 的读写效率。IBM InfoSphere DataStage 的另一个强大的优势是它不仅仅依靠数据库的功能和处理来执行转换:IBM InfoSphere DataStage 可以生成复杂的 SQL 语句并直接用于数据库 , 同时 IBM InfoSphere DataStage 设计了多路径的数据集成引擎,支持在单个机器,集群环境以及网格计算等多种环境中实现对文件数据,数据流,数据库以及内部缓存数据的均衡分配和处理。所以,在许多情况下客户在使用 IBM InfoSphere DataStage 时,并不需要对数据库进行复杂的配置。3. Intel(R) Xeon(R) Series X7500 处理器概述使用 Intel(R) Xeon(R) series 7500 处理器的服务器相比于上一代服务器在性能和扩展性方面都有了显著的提升。其处理芯片采用了最新的嵌入式技术,能够为商务、信息管理、创新和科技等领域提供专业的服务,更快的解决问题,处理海量的数据集合,应对更大的挑战。要获得智能化的性能,那么使用采用全新高带宽互连架构、支持更大容量内存的基于 Intel(R) Xeon(R) series 7500 处理器的平台将是理想的选择。标准的 4 个 socket 服务器提供多达 32 个处理器核,64 个执行线程和容量达 TB 的内存。系统制造商正在研发 8 个 socket 及以上的更大型系统。Intel(R) Xeon(R) series 7500 处理器还包括超过 20 个最新的 RAS(可用性,可靠性和可服务性)功能,它们可以提高数据的完整性和运行时间。Intel(R) Machine Check Architecture Recovery 是其中最重要的一个功能 , 它可以使操作系统在检测到未修正错误时能够采取正确的措施进行纠正并继续运行。这些具有极高扩展性的服务器可用于支持数量庞大的用户人群。基于 Intel(R) Xeon(R) series 7500 处理器的服务器平台还提供了其他一些功能可以帮助提高性能、扩展性和减少能耗。下一代 Intel(R) 虚拟化技术 (Intel(R) VT) 提供了扩充硬件来帮助处理器,芯片组和 I/O 设备,从而提高应用程序在虚拟机上的性能,包括 near-native I/O 性能。Intel(R) VT 还支持在当前和未来基于 Intel(R) Xeon(R) 处理器服务器之间的实时虚拟机移植,这样企业在添加新服务器的时候仍可以保留大量的公共虚拟资源Intel(R) QuickPath Interconnect 技术能够提供点对点链接来分配共享内存。Intel(R) Xeon(R) 7500 series 处理器采用 2 个集成内存控制器和 3 个 QPI 链接,能够提供稳定的带宽,出色的内存性能和灵活性以及内部紧密集成的 RAS 功能。有关 QPI 的技术文档,请参见下面的链接 .Intel(R) 智能加速(Intel(R) Turbo Boost) 技术能够在需要系统提高性能的时候自动提升超出额定的内核频率以适应工作负载的峰值。当系统需求低的时候,Intel(R) Intelligent Power 技术可以调整内核频率,从而达到节电的效果对于多线程应用程序以及在虚拟化环境中同时运行的多个工作负载,Intel(R) 超线程(Intel(R) Hyper-Threading)技术可以改善它们的数据流量并减少等候时间。有关 Intel(R) Xeon(R) Series 7500 处理器的其他信息,请参见下面的链接。。4. IBM(R) InfoSphere(R) DataStage(R) 的 Sort 运算本节将简要的介绍 Sort 运算。Sort 运算主要通过执行分段合并排序,在两个阶段实现排序功能。首先,初始 sort 阶段将数据块按照正确的顺序分类并将数据以文件形式保存在暂存文件系统中。Sort 运算符可以使用缓存,缓存的大小通过 Restrict Memory Usage (RMU) 参数来定义。该缓存被平均分为 2 个部分。Sort 线程将对其中的一半缓存进行排序直至缓存装满,然后移至另一半缓存开始执行插入。装满的一半缓存先被排序然后以块的形式写入暂存文件系统,数据通过一个独立的 writer 线程写入磁盘。当所有的缓存完成排序(并存成文件)后,最终阶段的 Merge 进程将这些文件合并。如下图所示。图 1. Sort 运算流程在 sort 运算的初始 sort 阶段和最终 merge 阶段都要使用 Sort 缓存。在最终 merge 阶段,从保存在暂存文件系统的每个被临时排序的文件开始读取数据块。如果 sort 缓存太小,将没有足够的内存来从每个临时排序文件读取数据块。这种情况会在初始阶段被检测到,一旦发生,将会运行第二个线程对临时排序文件执行预合并(pre-merge)操作。这样将会减少临时排序文件的数量,从而使缓存能够有足够的空间在最终 merge 阶段从每个临时排序文件载入数据块。在下面的测试中,我们将展示几种可用来降低 sort 运算对系统 I/O 需求的优化和配置设置。测试配置测试是在一个采用 Intel(R) Xeon(R) 7500 系列芯片包含 4 个 Intel(R) Xeon(R) X7560 处理器的 Intel(R) 服务器上完成的。X7560 处理器基于 Nehalem 微型架构。系统包含 4 个 socket,每个 socket 有 8 个核,每个核包括 2 个使用 Intel(R) 超线程技术的线程,因此系统一共拥有 64 个可执行线程。虽然该平台最大支持 1TB 内存容量,但我们的测试配置使用的是 64GB 内存。处理器操作频率为 2.26GHz,每个处理器包含由 8 个内核共享的 24M 三级缓存。系统使用由 5 个 Intel(R) X-25E 固态硬盘(SSDs)通过磁盘阵列控制器配置为 RAID-0 的磁盘阵列作为临时 I/O 存储器。该存储器作为 sort 测试的暂存存储器。5 个 SSD 的带宽不足以最大限度发挥系统的 CPU 利用率而使 DataStage 获得很好的性能,在稍后会详细解释这个问题。我们建议调整 I/O 子系统的大小以便最大限度的利用 CPU,但是在进行数据收集时,我们不能在设备上进行此项操作。操作系统是 Red Hat* Enterprise Linux* 5.3, 64 位版本。测试环境是标准的 Information Server 2 层配置。客户端层只用于运行 DataStage 客户端应用程序。所有其余的 Information Server 层都安装在一个 Intel(R) Xeon(R) X7560 服务器上。图 2. 系统测试配置下面的表格列出了测试平台的详细信息。表 1. 用于测试的 Intel(R) 平台
Intel(R)CPU型号
每个插座包含的内核数
每个核包含的线程数
2CPU代码名称
Nehalem-EXCPU频率 (GHz)2.24QPI GT/s6.4
超线程技术
EnabledPrefetch设置
DefaultLLC大小 (MB)24BIOS版本
安装的内存大小 (GB)64DIMM类型
DDR3-1066DIMM大小 (GB)40DIMM的数量
16NUMAEnabled
RHEL 5.3 64 bit5. Sort 性能优化综述本节将简要概述在这次性能研究中得出的建议。在第 6 节中将会从技术方面以更深的层次详细介绍测试中的发现。降低 I/O 冲突是优化 Sort stage 性能的关键。在不同的物理磁盘上分散对 sort I/O 的使用是简单的第一步。下面是实现这种方法的一个 DataStage 配置文件示例。 {
node "node1"{fastname ""pools ""resource disk "/opt/IBM/InformationServer/Server/Datasets1" {pools ""}resource scratchdisk "/opt/IBM/InformationServer/Server/Scratch1" {pools ""}}node "node2"{fastname ""pools ""resource disk "/opt/IBM/InformationServer/Server/Datasets2" {pools ""}resource scratchdisk "/opt/IBM/InformationServer/Server/Scratch2" {pools ""}}
}在该配置文件中,每个 DataStage 处理节点都有各自的暂存空间,每个空间都以单独物理磁盘上的目录形式来定义。这样可以帮助避免在 DataStage 处理节点之间 I/O 子系统资源的冲突。这是一个众所周知的技术,并不是本文所研究的内容。本文将介绍通过另外几种技术来实现对含有 Sort 运算的 DataStage job 的性能优化:
对于大的数据集合将 Sort 运算的 Restrict Memory Usage (RMU) 参数设置成适当的值会降低在暂存文件系统上的 I/O 需求。根据不同的数据集合大小和节点数推荐使用的 RMU 值也相应不同。在 6.1 章节中介绍的公式和参考表格总结了针对各种数据集合的大小和节点数量所建议使用的 RMU 值。RMU 参数使用户能够灵活的定义 sort 缓存的大小,从而优化对系统的内存使用。
为暂存空间增加默认 Linux 磁盘存储系统的预读取(read-ahead)值能够提升 sort 运算最终 merge 阶段的性能。推荐将暂存文件系统的预读取值设置为 256K 或者 512K。关于如何在 Linux 中修改预读取值的详细信息,请参见 6.2 章节。
数据流程中,在 sort 之前插入一个缓存运算符(buffer operator)可以对提升 sort 运算的性能有所帮助,因为 sort 运算对大量数据进行操作,缓存运算符能够提供额外的存储空间使数据尽快的进入 sort 运算阶段,详细信息请参见 6.3 章节
如果对含有有限长度的 VARCHAR 数据进行 sort 运算,那么通过启用 APT_OLD_BOUNDED_LENGTH 设置能够降低 I/O 需求,进而有可能提升 Job 的整体数据流量。6. 优化 Sort 性能的建议我们对 sort 运算进行了深入的研究,并且考虑了多个性能调优因素可能对 I/O 特性造成的影响。输入数据的大小和数据格式是影响 sort 的主要输入因素,同时,I/O 子系统和文件缓存的设计布局以及预取等特点也十分重要。当调整输入数据的大小时,RMU 缓存大小配置参数对 sort 性能的影响是非常显著的。这些因素都将在下文中详细介绍。在我们的测试中,包含一个 sort stage 的 job 在一个配置节点上运行时,能够以 120MB/s 的速率对数据进行 sort 运算并将数据写入暂存文件系统。增加 job 的节点数量会迅速导致对暂存 I/O 存储器阵列产生更多的 I/O 需求。由于暂存 I/O 系统的限制,因此 Intel(R) Xeon(R) 服务器 CPU 的性能完全没有被充分利用。很明显,对于这样一个具有超强计算能力的服务器来说,暂存 I/O 文件系统成为遏制性能提升的瓶颈, Intel Xeon 处理器的超强计算能力和 IBM InfoSphere DataStage 的性能都无法有效的充分发挥。因此,配置足够的 I/O 以便充分利用这对硬件与软件强大组合的计算能力才是有效利用系统资源的最重要条件。在我们的测试系统中,我们选择的暂存存储 I/O 系统的配置相比于服务器的计算能力明显不足。我们建议为了优化性能,最好配置更强大的暂存存储系统,但是客户的反馈显示他们部署的许多系统中暂存存储系统都没有充足的带宽能力。本文中介绍的调优和配置技巧是针对所有系统的性能提升,但是特别对于那些受暂存 I/O 存储系统限制的系统来说,会有更好的性能表现。在通常情况下,通过使用这些调优和配置技巧将会减少传输的数据总量。我们可以通过调整 DataStage 并行节点数量,使其与暂存存储的容量相匹配,以免造成暂存存储系统的饱和,这样我们就可以在平稳的环境中研究和开发调优指南。使用这种方法,我们研究出了多种调优技巧来降低对暂存存储 I/O 的需求,从而有效的提高系统性能。对于许多客户都可能出现,通过增加 CPU 来提升性能,但却忽视了存储子系统 I/O 的能力。我们研究出了多个很重要的调优技巧并将其展示出来。这些研究结果的价值是非凡的,我们强烈推荐使用。我们还想澄清的是提高 CPU 利用率的最好办法是使用可以提供足够带宽和每秒 I/O 速度(IOPS)的高性能暂存存储系统。即便使用高性能的暂存 I/O 系统,本文介绍的调优技巧仍能够帮助含有 sort 运算的 DataStage job 提供更好的性能。本节的剩余部分将主要介绍我们在研究中通过降低 I/O 提高 sort 性能的调优结果。6.1
Restrict Memory Usage(RMU) 调优本小节将描述如何通过调整 sort 缓存大小的参数(RMU)来最大限度降低暂存 I/O 系统对 I/O 的需求。如果 RMU 的值太小,则会导致在初始 sort 阶段出现临时文件的中间合并。这些中间合并会显著增加暂存文件系统对 I/O 的需求。正确调整 RMU 的值可以避免所有可能出现的中间合并运算,并极大的提高 sort 运算在有限的 I/O 带宽系统上对暂存 I/O 文件系统的数据流量。由于许多磁盘本身的带宽不足,或者磁盘间的互通带宽无法最大限度的发挥 CPU 的利用率,因此在许多系统中暂存磁盘 I/O 系统都是系统性能发挥的瓶颈。消除预合并可以降低暂存文件系统对 I/O 的全面需求,使暂存文件系统更快的完成 I/O 操作,从而增加流量,同时减少 job 的运行时间。配置 /Job 调优建议如果知道被排序的数据大小,就可以计算出优化的 RMU 值,这样就可以避免在运行中产生预合并线程,从而降低对 I/O 的需求。RMU 的计算公式如下:RMU (MB) &= SQRT ( Sort的数据大小 (MB) /节点数) / 2使用上面公式的注意事项:
之所以用总数据大小除以节点数,是因为每个节点 sort 的数据量随着节点数目的增加而减少。此处的节点代表 job 的并行实例数量
我们的测试显示将 RMU 值设置为很大的数值区间中的任意值,仍能够提供很好的性能。有时我们并不能准确的了解 sort 的数据量的大小。这种情况下我们建议尝试在实际值的一倍或两倍以内估算一个输入数据的大小。换句话说,即便使用 2 倍的数据量作为上面等式的输入值所得到的 RMU 值仍然能够获得很好的性能结果。
默认的 RMU 值为 20M,消除过多预合并运算后,这个 RMU 值可以在每个节点 sort 最多 1.6GB 数据。如果数据量大小除以节点数所得的值小于 1.6GB,那么就不必更改默认的 RMU 值。下面的表格是针对不同的输入数据大小(数据集合大小)和节点数目可以使用的 RMU 设置参考。该表格假设用户知道被 sort 的数据集合大小。但在实际中用户可能并不知道准确的数据大小,即使过量估计使用 2 倍于实际数据大小的数据集合,仍然可以获得很好的性能表现。默认 RMU 值为 20MB。表格中的值“Default”表示如果使用公式得出的结果小于 20MB,则说明用户可以使用默认值。虽然也可以将 RMU 的值减少至小于 20MB,但并没有必要这样设置。表 2 . RMU 缓存大小表格
排序数据的大小
最小 RMU 值
最小 RMU 值
最小 RMU 值
最小 RMU 值
最小 RMU 值
最小 RMU 值
最小 RMU 值
最小 RMU 值
我们用含有一个 sort stage 的 job 在 4 个并行节点上运行,并分别设置 2 个不同的 RMU 值进行测试,测试结果如表格 3 所示。使用正确 RMU 值运行的结果使数据流量提升了 36%。在测试中,I/O 带宽并没有降低,因为 I/O 子系统在两组测试中都能提供最大的带宽。但是由于传输的数据总量非常低,所以 CPU 内核能够以很高的 CPU 利用率运行,并在非常短的时间内完成 sort 操作。这种优化方法对于那些无法提供足够暂存文件 I/O 带宽来满足强大的 Intel Xeon 服务器和高效的 IBM InfoSphere DataStage 软件的暂存磁盘来说是非常有效的。下面显示的是只进行 sort 运算的 job 的运行结果,此处我们将 RMU 参数对结果的影响分离出来。这个方法可以对更复杂的 job 进行调优,但是只能够提高那些含有 sort 运算符的 job 的性能。表 3. 通过 sort 运算符 RMU 值对 sort 进行性能调优RMU大小
Read Ahead设置
10MB128KB(Linux默认值 )4.05分钟
30MB128KB(Linux默认值 )2.97分钟
若要在一个 Job 中为 Sort Stage 修改 RMU 设置,可以在 DataStage Designer 客户端面板中,打开 Sort stage,单击“Stage”选项卡,然后选择“Properties”,在左边的窗口中单击“Options”,最后从“Available properties to add”窗口选择“Restrict Memory Usage(MB)”并添加。图 3. 添加 RMU 选项在添加了“Restrict Memory Usage”选项后,就可以按照上文提到的公式为其设置建议的值。图 4. 设置 RMU 选项6.2 使用 Linux 预读取(Read Ahead)值对最终 Merge Sort 阶段调优在测试单节点 sort Job 的过程中,我们发现可以通过在 Linux 中改变暂存磁盘预读取的设置值来提高最终合并阶段的 CPU 利用率,从而大量提升最终合并 sort 阶段的数据流量。配置 /Job 调优建议默认 Linux 文件系统的预读取值为 256 个扇区。一个扇区为 512bytes,所以总的默认预读取值为 128KB。我们的测试显示将预读取值增加到 1024 个扇区(512KB)可以提高 CPU 的利用率,并通过减少 DataStage 等待暂存文件系统 I/O 的总计时间降低了最终合并时间。这样就能够将 sort 最终合并阶段的数据流量提高 30%。表格 4 中显示的是使用含有一个 sort stage 的 job 在 4 个并行节点上运行,并分别设置 2 个不同的 Linux 预读取值进行测试所得出的测试结果。将 Linux 的默认预读取值从 128KB 增加到 512KB 可以使 Job 的数据流量提升 9%。表 4 . 通过设置 Linux 预读取值对 Sort 运算符进行性能调优RMU大小
Read Ahead设置
30MB128KB(Linux默认 )2.97分钟
30MB512KB2.72分钟
通过运行下面的命令可以显示当前 Linux 的预读取设置: &hdparm若要在 Linux 中为指定磁盘设备设置预读取值,可以使用下面的命令: &hdparm – a 1024 /dev/sdb1 (在磁盘设备 /dev/sdb1 上设置预读取值为 1024 个扇区)为了确保在系统重启后以上命令仍然有效,可以将其编辑到 /etc/init.d/boot.local 文件中建议尝试设置为 512 个扇区(256KB)或者 1024 个扇区(512KB)增加预读取值可以使更多数据从磁盘进行读取并保存在 OS 磁盘缓存中。这样,sort 运算符的更多读取需求可以直接从 OS 磁盘缓存获取需要的数据,而不是耗费时间等待从暂存磁盘系统读取数据。(注意,Linux 文件系统的缓存由 kernel 控制,使用未分配给进程的内存。)在我们的测试中,暂存存储系统由配置为 RAID-0 磁盘阵列的固态硬盘 (SSD) 组成。相比于普通的旋转介质存储磁盘阵列,在这个系统上的 I/O 请求等候时间要低一些。所以增加 OS 预读取值对于使用由 HDD 组成的暂存存储阵列会有更好的性能提升。将预读取值设置的更大,则对 HDD 阵列的性能提升就会更明显。我们选择 SSD 是因为 SSD 能够比相同数量的硬盘驱动器提供更高的带宽,更多的 IOPs(每秒 I/O)以及更少的等候时间。许多应用在商务存储系统中的 RAID 控制器也具有在读取请求前执行预读取并将数据保存到缓存的功能。如果用作暂存存储器的存储阵列具有此项功能,那么最好将这个功能启用。但在 OS 中增大预读取值仍然是非常重要的,因为从 OS 磁盘缓存接受请求比从 RAID Engine 等候数据要快很多。上面的测试结果只是针对含有 sort 运算的 Job。调整预读取值不会提高 Job 中其他一些不执行暂存磁盘 I/O 操作的运算的性能。6.3 使用缓存运算符(Buffer Operator)缩短 Sort 输入的等待时间作为正常操作的一部分,DataStage 并行 Engine 会自动部署缓存。因为初始 sort 阶段对输入数据有非常高的需求,尤其对用于 sort 的数据源出现的时间延迟十分敏感。当数据源从本地或远程磁盘被加载时,或者在操作系统为运算符安排进度的时候,都可能发生时间延迟。通过在 sort 之前添加一个附加的缓存,就能够在整个初始 sort 阶段使运行 sort 线程的 CPU 保持 100% 的利用率,由此可以将初始 sort 阶段的性能提升近 7%。配置 /Job 调优建议我们推荐在 sort 前使用附加的缓存,并将缓存的值设置为与 RMU 的值相同。若要在 sort 前添加附加缓存,通过 DataStage Designer 客户端面板打开 DataStage Job 的 Sort stage,单击“Input”选项卡,然后再单击“Advanced”。从“Buffering mode”下拉菜单中选择“Buffer”,并修改“Maximum memory buffer size(bytes)”字段的值。图 5. 在 sort 前添加缓存6.4 降低含有 Variable 长度字段的 Sort 数据的 I/O默认情况下,并行 Engine 会主动将有限长度的 VARCHAR 字段(那些指定最大长度的字段)当作需要的固定长度字符串来处理。如果字段中的实际数据小于指定的最大长度,则字符串将被填充至最大长度。这种处理可以在整个 Job 流程中有效的利用 CPU 对字段进行处理,但是却增加了运算 (Operator) 对 I/O 的需求,例如 Sort 运算。当设置环境变量 APT_OLD_BOUNDED_LENGTH 后,在处理每个 VARCHAR 字段内的数据时不必进行额外的填充,这就会减少对磁盘写入大量数据,从而降低 I/O 带宽需求,因此在带宽不足的暂存磁盘子系统上运行时会对性能有所提升。或者在暂存文件系统无法满足 DataStage 和 Intel Xeon 服务器的处理能力时,这样设置也会提高 Job 的数据流量。设置 APT_OLD_BOUNDED_LENGTH 后,需要使用额外的 CPU 资源来处理可变长度数据,并且需要使用更多的 CPU 处理功率以降低对暂存文件系统的 I/O 需求总量。在测试中,我们使用含有一个 sort stage 的 Job 在 16 个并行节点运行,并设置了 APT_OLD_BOUNDED_LENGTH,测试结果显示临时排序文件的大小降低了 25%,数据流量增加了 26%(运行时间减少了 21%)。表 5. 设置 APT_OLD_BOUNDED_LENGTH 的 Sort 运算性能比较
启用 APT_OLD_BOUNDED_LENGTH
消耗的暂存存储空间
1.00.75x (使用了原存储空间的 75%)
1.00.79x (原运行时间的 79%)
1.01.26x (Job处理的数据流量增加了 26%)请注意,根据多个因素的不同调整该参数对性能的提升变化将是不同的。该设置仅适用于含有 varchar 字段的数据记录。暂存存储系统上可实现的实际文件大小的减少量将主要取决于 varchar 字段指定的最大值,和这些字段中包含的实际数据大小以及这些 varchar 字段是否是记录的 sort key。性能的提升量将取决于减少的总文件大小以及与提供数据的暂存文件系统能力相比 sort 运算的数据请求比率。在我们的测试配置中,使用 16 个节点可以驱使暂存文件 I/O 系统的带宽达到最大限制。通过设置 APT_OLD_BOUNDED_LENGTH,从磁盘写入和读取的数据总量明显降低。配置 /Job 调优建议该优化方法仅适用于使用有限长度 VARCHAR 数据类型的数据集合。APT_OLD_BOUNDED_LENGTH 是 DataStage 的用户自定义变量。该变量可在 Project 级别或 Job 级别进行添加。您可以按照《 》和《 》中的说明来添加和设置新的变量。如果在 sort 过程中发现 CPU 利用率偏低,或者已知暂存文件系统无法满足 Job 的需求,则我们建议尝试使用此设置。6.5 未来研究:使用内存作为基于 RAM 的暂存磁盘作为未来的研究,我们希望了解使用基于 RAM 的磁盘作为暂存存储对系统产生的性能影响。如果正确配置 Nehalem-EX 测试系统的话,它可以支持超过 70GB/s 的内存带宽。虽然 SSD 可以提供高于硬盘驱动器的带宽,但是它们无法满足主内存带宽的性能。如果充分利用所有的 PCI 插槽,系统支持的每个 PCI Express 插槽的 I/O 速率可达 ~ 35GB/s。但是,这种 I/O 解决方案的成本十分昂贵。当前 4 个 socket 的 Intel X7560 系统可以支持 1TB 的内存,而 8 个 socket 的系统能够支持 2TB 的内存。随着新产品的发布 DRAM 的容量将会继续增加,而且 IBM X 系列系统也有相应的产品可以选择,提供超出 baseline 的 DRAM 容量。虽然与磁盘驱动器相比,单位容量的 DRAM 成本要昂贵一些,但是相比于系统内外的带宽能力,DRAM 是更适合的选择。我们计划在不久的将来对大容量常驻内存存储器与基于磁盘驱动器的存储器解决方案的性能和成本效益进行比较分析并展示分析结果。最优方法:本文介绍了通过其他几种技术来实现对含有 Sort 运算的 DataStage job 的性能优化:1) 对于大的数据集合将 Sort 运算的 Restrict Memory Usage(RMU) 参数设置成适当的值会降低在暂存文件系统上的 I/O 需求。根据不同的数据集合大小和节点数推荐使用的 RMU 值也相应不同。在 6.1 章节中介绍的公式和参考表格总结了针对各种数据集合的大小和节点数量所建议使用的 RMU 值。RMU 参数使用户能够灵活的定义 sort 缓存的大小,从而优化对系统的内存使用。2) 为暂存空间增加默认 Linux 磁盘存储系统的预读取(read-ahead)值能够提升 sort 运算最后 merge 阶段的性能。推荐将暂存文件系统的预读取值设置为 256K 或者 512K。关于如何在 Linux 中更改预读取值的详细信息,请参见 6.2 章节。3) 在数据流程中在 sort 之前插入一个缓存运算符(buffer operator)也能够对提升 sort 运算的性能有所帮助,因为 sort 运算对大量数据进行操作,缓存运算符能够提供额外的存储空间使数据尽快的进入 sort 运算阶段,详细信息请参见 6.3 章节4) 如果对含有有限长度的 VARCHAR 数据进行 sort 操作,那么通过启用 APT_OLD_BOUNDED_LENGTH 设置也能够降低 I/O 需求,进而有可能提升 job 的整体流量。7. 结论我们已经展示了如何对 IBM InfoSphere DataStage 在 Intel(R) Xeon(R) 处理器上进行 sort 性能优化的各种方法,例如,调整 Sort 缓存 RMU 的大小,设置 Linux 预读取值,增加额外的缓存 operator 值以及配置 Varchar 长度参数等。我们的结果进一步证明了正确调整 I/O 对优化服务器性能的必要性。对于 sort 来说,拥有足够的暂存 I/O 存储容量,使所有 sort 运算能够在系统中同时运行是十分重要的,这样才能够充分的利用服务器的强大性能。在基于 X7500 系列处理器的 Intel(R) Xeon(R) 平台这种具有超强计算能力的服务器上运行 IBM InfoSphere DataStage, 并行 Engine 能够以极高的数据传输率有效的处理数据。因此,I/O 和网络带宽对于获取更高性能是极其重要的。使用 10Gbit/s 的以太网或者 40Gbit/s 的光纤网络带宽对于充分发挥这组硬件和软件的强大组合的计算能力是非常重要的。在不久的将来,我们打算用大容量的 DRAM 代替磁盘子系统作为暂存 I/O 做测试,并对性能和成本收益进行分析。我们还将进一步探究针对高带宽网络解决方案的性能调优方法。8.
贡献者英文原文作者:Garrett Drysdale(Intel(R) Sr. Software Performance Engineer), Jantz Tran (Intel(R) Software Engineer), Sriram Padmanabhan (Distinguished Engineer, Chief Architect for InfoSphere Servers), Brian Caufield (Sr. Software Architect),Fan Ding, Ron Liu, Pin LP Lv, Mi Wan Shum, Jackson Wei and Samuel Wong (Information Server Performance Team)翻译:Pin LP Lv(吕品)校对:Mi Wan Shum,Jackson Wei(韦东杰),Liang LL Lu(陆亮)
参考资料 从
的 XML stage 部分获取更多细节。了解有关
的更多信息。在
了解关于信息管理的更多信息,获取技术文档、how-to 文章、培训、下载、产品信息以及其他资源。随时关注
developerWorks
和 。使用可以直接从 developerWorks 下载的
构建您的下一个开发项目。参与
并加入 ,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。
developerWorks: 登录
标有星(*)号的字段是必填字段。
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件。
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
选择您的昵称
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。
您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
标有星(*)号的字段是必填字段。
(昵称长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
文章、教程、演示,帮助您构建、部署和管理云应用。
立即加入来自 IBM 的专业 IT 社交网络。
免费下载、试用软件产品,构建应用并提升技能。
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=Information Management, AIX and UNIXArticleID=682254ArticleTitle=最佳实践:含有排序( Sort )运算的 IBM InfoSphere DataStage 的工作( Job )在 Intel Xeon 服务器上的性能优化指南publish-date=

我要回帖

更多关于 datastage教程 的文章

 

随机推荐