JPPF试用日记

最近根据项目需要,我们试用了JPPF(Java并行处理框架)2.1.1。JPPF非常容易使用,根据相关文档我们很快的就运行起来了,下面是试用过程中对一些相关问题的纪录和思考:

1、有的节点早就完成任务了,有的节点却要仍在运行中,造成负载不均衡。
解决方法:server配置中注释掉 jppf.load.balancing.algorithm = proportional 一句,使其使用默认的负载均衡策略,才可以做到根据任务情况动态分配(需要深入研究几种任务分配策略的差异),否则任务会一次性分配完成而不再调整。

2、节点数量的确定:
节点配置文件里有配置处理线程数的地方,但经过测试没有效果,通过任务管理器资源情况分析,每个节点只能启动一个处理线程,不知道是不是bug。所以,一个物理机器需要启动多个节点才能充分利用CPU资源,最大节点数与CPU核心数大体相当即可。

实测情况:每个任务1万次蒙特卡洛模拟,共100个任务
1)、服务端 8CPUs(双核x4),7-8个Node可使CPU利用率达到100%
2)、PC客户端 2CPUs(双核单CPU),启动1个Node仅使用50%左右,启动2个Node可达100%

注意:在CPU100%利用情况下,服务器上曾经出现一个任务死锁的情况(最后一个任务长时间不结束)

3、启用本地计算的说明:
经实测, client启用本地计算后,仅有50%的任务会提交server执行,另50%任务本地执行,且后续不会动态调整分配比例,使本地执行时间成为瓶颈。

建议不要启用client本地计算,如果想充分利用client本地计算资源,可以在本地启动Node连接同一个Server即可。

4、实测发现,蒙特卡洛模拟计算任务的执行时间与CPU主频有关,实测中PC(Core2 E7400 2.80GHz)每核心的处理能力要优于服务器(Xeon E5410 2.33GHz),服务器上一个节点处理10个任务的时间PC可以处理13个,所以廉价PC处理此类任务时的性价比非常高。

针对我们开发的原型程序,有一组数据可以说明JPPF的价值:
[list]
相同任务情况下:
[*]PC单线程不使用JPPF,用时33分钟;
[*]PC作客户端+服务器启动6节点,用时9分钟;
[*]PC作客户端并启动2节点+服务器启动6节点,用时7分钟。
在资源充足的前提下,计算时间与节点数成反比。
[/list]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值