32

Algorithmics 10 倍性能提升 !

 5 years ago
source link: http://www.ibm.com/developerworks/cn/analytics/library/ba-lo-algorithmics-performance-improvement/index.html?ca=drs-&%3Butm_source=tuicool&%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

IBM Algorithmics 简介

IBM Algorithmics 是全球领先的企业风险解决方案提供商。Algorithmics 为全球众多金融机构提供软件、分析和咨询服务,帮助它们制定风险相关的商业决策,在满足监管要求的同时实现股东价值最大化。Algorithmics 拥有一支强大的全球风险专家团队,遍布所有主要金融中心,面向市场、信用和运营风险管理以及抵押品与资本管理,专门提供成熟高效、屡获殊荣的解决方案。

以下简称 IBM Algorithmics 为 Algorithmics

IBM Spectrum Symphony 简介

IBM Spectrum Symphony 是企业级运算服务管理软件,用于在可扩展、共享、异构的大规模计算机集群中运行分布式应用服务。它能够充分利用各种计算资源,提高并行应用的运行速度并快速得到计算结果,充分的满足了数据密集型与计算密集型应用的计算要求,全面提升系统性能。在全球范围内,IBM Spectrum Symphony 正在为世界 75%的金融机构提供服务,其中,世界排名前 5 的银行中有 3 家正在使用 IBM Spectrum Symphony,世界排名前 20 的银行中有 15 家正在使用 IBM Spectrum Symphony。

以下简称 IBM Spectrum Symphony 为 Symphony

用户实际案例 -- 10 倍性能提升

通过将 Algorithmics 与 Symphony 集成在一起运行,能够帮助用户更快的得到期望的结果。Algorithmics 与 Symphony 的集成在全球有很多成功的案例,其中也包括中国国内的用户。比如在中国的一家知名银行,由于集成了 Symphony,Algorithmics 处理 15 万条记录的时间从 100 多个小时缩减到 10 个小时,性能足足提高了 10 倍,用户不需要额外购买硬件设备就可以在规定时间内得到期望的结果。

Algorithmics 的工作方式及优化分析

下面先介绍一下 Algorithmics 软件的工作方式和对应的可能的优化。这些介绍可以帮助我们了解为什么 Symphony 能够帮助 Algorithmics 软件更快的得到结果。

Algorithmics 软件对于数据的处理可以大致表达为如图 1 所示的数据流。

图 1:Algorithmics 数据流

ne6zymA.png!web

ne6zymA.png!web

在图 1 中大家可以看到,数据流向从左向右,依次经过各个处理阶段,最终生成结果。从最左端的用户数据(Customer Data)开始,数据会经过风险匹配(Risk Mapper),数据整理(Algo Data Server),场景生成(Scenario Generation),模拟(Simulation),集成(Aggregation)等步骤的处理和转换,最后在报告(Reporting)步骤生成用户需要的结果。

从上图可以看出,在多个处理阶段都有对应的多个操作实例可以同时进行。如果能够整合系统资源,使得这些操作能够充分的利用系统资源并行执行,计算结果将会更快的生成。下面就对各个处理阶段可能进行的优化进行分析。

在风险匹配(Risk Mapper)阶段,来自于用户的各种形式的数据将被转换成 Algorithmics 需要的数据类型并被 Algo Data Server 加载,这些数据转换操作是可以并行执行的。

在数据整理(Algo Data Server)阶段会涉及到很多数据库相关操作,使用并行技术处理这些操作能显著的提高读写数据库的速度,提升响应时间。

在模拟(Simulation)阶段,RiskWatch 会运行多个场景模拟任务来生成模拟结果,这些模拟任务可以并行执行。

在集成(Aggregation)阶段已经并行化了 Algo Risk Engine,多个集成任务可以在这些 Algo Risk Engine 间同时运行。如果能使用相同的资源运行更多的 Algo Risk Engine 实例,此阶段的任务性能就可以得到提升。

分析后的结果如图 2 所示。

图 2:优化分析结果

2UNreu6.png!web

2UNreu6.png!web

Symphony 的作用

如前面分析的那样,提高 Algorithmics 软件性能最直接的方法就是提高其软件并行度和资源利用率,Symphony 刚好就是这方面的专家。

Symphony 会将其管理的计算机集群当作一个整体,根据资源请求分配计算资源(CPU, 内存等)以在多台计算机上并行运行任务,这就保证了任务的并行度。此外,用户可以配置各种任务的资源分配比例和优先级,当存在计算资源竞争时,计算资源会优先分配给优先级较高且拥有的资源未满足比例的任务。暂时得不到资源的任务会等待,当有空闲资源出现时此类任务会立刻获得资源进行运算。这些措施保证了资源能够得到最充分的利用。

Symphony 中资源管理和任务调度的逻辑可以简单表示为图 3,图中的任务可以根据其优先级获得对应的资源,多个任务可以同时在不同的资源上并行进行。

图 3:Symphony 任务分配示意图

aUBVb2f.png!web

aUBVb2f.png!web

Symphony 还针对不同任务间的资源共享进行了优化,当某些任务暂时不需要资源时,可以将其资源借给其他的任务使用,并在需要资源时通过 Symphony 将资源在规定的时间内收回。这种功能极大的提升了资源的利用率,使得相同的资源在相同的时间内能够完成更多的任务。

目前的集成方案及发生问题后的处理方法

Symphony 目前已经与 Algorithmics 软件进行了集成,并通过了正式的官方测试。用户通过简单的安装步骤和配置就可以使得此两种软件在一起工作,本文最后参考资源中的链接对此有详细的介绍,这里将不对安装和配置的细节进行描述。

在 Algorithmics 与 Symphony 所进行的集成中,Symphony 主要针对 Algorithmics 软件模拟(Simulation)阶段的 RiskWatch 任务进行了优化。Algorithmics 软件利用 Symphony 可将多个任务并行的特性,将 RiskWatch 的多个实例同时运行在 Symphony 的计算机集群里面来帮助用户更快的得到结果。

Symphony 还可以通过每个 RiskWatch 实例自定义的资源分配规则(资源分配策略,任务优先级,资源需求量,借入资源/还回资源配置等)动态的分配资源,提高资源使用率。

在与 Symphony 集成后,RiskWatch 实例的每个进程在启动后都可以被后继的 RiskWatch 重用,节约了重新启动进程所带来的时间和资源开销,使得后继任务能够更快的被处理。

图 4 显示了 Symphony 对于 RiskWatch 相关运算的优化。

图 4:Symphony 对于 RiskWatch 相关运算的优化

6jIvYbQ.png!web

6jIvYbQ.png!web

在运算工作完成后,用户可以同时利用 Algorithmics 的界面和 Symphony 的界面来查看当前作业状态,并调查可能遇到的问题。

图 5 显示了一个 Algorithmics 软件里面的批处理编辑器,在其中编辑后的作业可以通过 Symphony 运行从而更快的得到结果。在这个界面里,Symphony 对于用户是透明的,用户只需要关心自己要进行的作业,无需关心 Algorithmics 软件使用了什么任务调度器或者加速器。对于作业运行中遇到的问题,用户可以先通过此界面确认作业的设置是否正确,然后再进行下一步的调查。

图 5:Algo Batch Editor

u2YRJri.png!web

u2YRJri.png!web

图 6 显示了 Algorithmics 作业里面的任务列表,这些任务可以通过在 Symphony 计算机集群中并行运行来更快更可靠的得到结果。对于任务运行中遇到的问题,用户可以先查询任务失败的原因然后再决定下一步的调查方向。由于任务是由 Symphony 调度和运行的,所以与任务运行时相关的问题很可能是发生在 Symphony 环境中的,这时就可以跳转到 Symphony 的环境中继续调查。

图 6:Algorithmics 的任务列表

MBfamqm.png!web

MBfamqm.png!web

图 7 所示的是 Symphony 的软件操作界面。Symphony 使用 session 来作为管理任务的容器,每个 session 中包含一个或者多个任务。Algorithmics 软件中的作业与 Symphony 中的 session 是一一对应的关系,每个 Algorithmics Batch job box 的名字对应着 Symphony 中一个 session 的名字,用户可以根据 Algorithmics 作业的名字在 Symphony 界面查看对应的 session 的状态。Symphony 界面中的 session 页面的信息包括任务总数,当前运行任务数,错误任务数,取消任务数等等,这些信息便于用户对于作业状态获得直观的感受,也有利于问题的调查。

对于发生问题的作业,用户可以在 Symphony 的界面上点击对应 session 来查看其中的每个任务的信息,如启动时间,发生错误原因,发生错误的计算机名等,然后进行进一步的分析。

图 7:Symphony session 界面

eQ7FzqM.png!web

eQ7FzqM.png!web

在如图 8 所示的 Symphony 界面中,用户可以根据自己的需求来定义资源分配的形式(例如,从哪个计算机群组中获得资源,按什么比例在应用程序之间分配资源,每个应用程序可获得资源的最大数目,可以向哪个应用程序借出资源等),这些配置把用户从琐碎的具体操作中解放出来,同时最大化了资源利用率。

如果某些任务很容易在某些计算机上面出错,用户可以把这些计算机单独组成一个群组,然后通过配置阻止这些任务在这些计算机上获得资源,这样就能保证这些任务顺利的在其他计算机上完成。

图 8:Symphony 资源分配界面

QJR32ua.png!web

QJR32ua.png!web

Symphony 解决方案的优点

Symphony 作为关注于性能与可靠性的企业级资源管理与任务调度软件,对各种并行运算工作模式有广泛的支持,在大规模的计算机集群中能够满足用户对于高性能和高可靠性的严苛要求。

通过与 Symphony 的集成,Algorithmics 的用户可以获得的收益如下:

  • 增强性能
    • 用更少的时间完成复杂的计算
    • 确保在期望的时间窗口内得到结果
    • 更快的把结果应用于商务行动
  • 增强可靠性
    • 计算机集群的错误协调处理使得运算对于错误的容忍度更高
    • 计算机集群保证了有足够的资源进行运算
  • 简化管理
    • 计算资源变化的处理更加容易
    • 计算机的异常会被自动处理,无需手工干预
  • 资源扩展
    • 当本地资源不够时,可以从各种云平台上获得资源来支持运算

除此之外,Symphony 还给 Algorithmics 带来了如下的特有价值:

  • 性能更高
    • 动态的资源共享模型允许借出空闲资源,使得资源得到充分利用
    • 管理的计算机集群更大,响应速度更快
    • 任务的实例进程能被重用,不需要重新启动
  • 响应更快
    • 实时动态的基于任务优先级变化的资源分配
    • 中断短任务来响应高优先级任务,避免中断长任务
  • 管理更简单
    • 在 Algorithmics 和 Symphony 之间提供了通用的管理平台
    • 为不同类型的任务提供了通用的运行环境
  • 费用更低
    • 计算机集群的资源能够得到充分利用,可以用更少的资源得到期望的结果
    • 可以与其他的应用共享资源,分担费用

将来可能进行的对集成的优化

Symphony 目前只针对 Algorithmics 中的模拟阶段进行了优化,根据本文前面对可能进行优化的阶段的分析,可优化的空间依然巨大(比如在风险匹配阶段增强数据转换的并行化)。这些优化会根据市场的需求逐步得到实现。

Symphony 的其他集成解决方案

Symphony 作为业界领先的资源管理与任务调度平台,除了可以与 Algorithmics 进行集成外,还可以与其他知名软件如 Murex、Calypso、Matlab、Mesos 等进行集成,这些集成已经在全球范围内得到广泛应用。Algorithmics 能够从 Symphony 获得的收益,其他集成的软件也同样可以获得。如需要进一步的信息,请与 IBM 联系。

总结

本文从原理入手,通过分析 Algorithmics 数据流的相关处理流程,介绍了 Symphony 能在其中所进行的优化,随后对这两种产品是如何集成在一起工作的,以及发生问题后应该如何处理进行了进一步的介绍。在本文的最后对未来可能的工作进行了展望。

Algorithmics 与 Symphony 都是在金融领域有广泛应用的行业顶级软件,他们的集成能帮助用户获得更大的竞争力,做到更好,更快,更强。

参考资源

Algorithmics 与 Symphony 的集成安装文档


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK