`
he91_com
  • 浏览: 410795 次
文章分类
社区版块
存档分类
最新评论

并行计算性能测试

 
阅读更多

背景:现在需要A/B/C三个分数,然后我们再利用三个分值算出一个总分。原来的方式是一台服务器顺序计算出A/B/C,最后算出总分,此时的计算耗时约为A+B+C+ABC,(ABC为对ABC进行求和的运算);现在为提高整体计算的效率,采用并行计算,如果要计算总分,就把A/B/C的计算需求由主机同时分发给三台服务器,待三台服务器运算出结果后返回给主机,然后主机根据三台服务器的返回结果算出部分,此时的计算耗时约为max(A,B,C)+ABC,(忽略网络耗时)。

功能性的测试在这不作说明,重点关注性能测试中的负载均衡和信息准确性。

比方现在有四台服务器,SD,SD1,SD2,SD3,SD做为主机,而SD1,SD2,SD3作为分发机器。现在有如下关注点:1、SD分发给SD1,SD2,SD3是否均衡。2. SD同时大规模并发时,信息是否准确,线程池是否混乱。

本次使用TESTNG进行性能测试,(大家也可以选择LR及jmeter,本次是只想对校验负载均衡和校验数据准确性,并非计算服务性能曲线,所以选择TESTNG)

开始时我使用了TESTNG的标签,来指定invocationCount = 10000和threadPoolSize = 20,这两个参数的意思是一共调用服务10000次,而线程池一共20个,因此平均下来每个线程调用500次。

关注点一、查看分发是否均衡。因为有三个节点A/B/C需要进行运算,因此如下设计:1.一台主机3台分发机器,运行上述脚本,然后进入logs/sofa/sofa-sal-digest.log目录,统计每台服务器的调用情况,查看是否均衡。2.一台主机4台分发机器,查看负载是否均衡。3.一台主机2台分发机器,查看负载是否均衡。4.一台主机,1台分发机器,查看负载是否均衡。5.一台主机,没有分发机器,查看负载情况。

关注点二、信息准确性,大量并发时信息是否混乱。准备了十组数据,对应十组期望值,然后利用随机数,随机选取一组数据进行查询,对比查询到的结果是否准确。服务器使用情况同上。

关注点三、持续不断的并行计算时,信息是否准确。使用TESTNG的标签进行并发调用时,总共执行invocationCount=10000次,这样足够猛,但是不够持久。如果想长时间的运行,就得把这个值设置的很大,但是受限于我们的机器和网卡,机器运行会越来越慢。因此考虑自己单独启线程,然后死循环去调用,就是小剂量不停歇的去调服务,这样就能够达到我们的要求了。

下面是我用来进行并行计算的脚本:

@XMode(XMode.WEBSERVICE)
public class CallDataSetNormalTest {
 
    @XAutoWire(XAutoWire.BY_NAME)
    protected DataSetService dataSetService;
 
    /** 线程池 */
    private static final Executor EXECUTOR = Executors.newFixedThreadPool(20);
 
    @Test
    public void threadCall() {
 
        while (true) {
            for (int i = 0; i < 50; i++) {
                EXECUTOR.execute(new Runnable() {
                    public void run() {
                        callDataSet();
                    }
                });
            }
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                System.out.println(e.getMessage());
            }
        }
 
    }
 
    public void callDataSet() {
 
        String[][] userId = { { "2088102114256253", "2088102114256265" },
                { "2088102012407732", "2088102114256277" }    };
 
        Money[] money = { new Money(106), new Money(502) };
 
        DataSetQuery dataSetQuery = new DataSetQuery();
        dataSetQuery.setDataSetName("FP_Model");
        dataSetQuery.setCallFrom("ctu");
        Map<Params, Object> paramsValues= new HashMap<Params, Object>();
 
        Random random = new Random();
        int i = Math.abs(random.nextInt()) % 10;
        String buyer = userId[i][0];
        String seller = userId[i][1];
 
        paramsValues.put(Params.BUYER_ID, buyer);
        paramsValues.put(Params.SELLER_ID, seller);
       dataSetQuery.setParamsValues(paramsValues);
 
        DataSetIndicatorInfo info = newDataSetIndicatorInfo();
        info.setIndicatorName("ZJ2");
        info.setIndicatorDesc("ZJ2");
        info.setReturnType("java.lang.Double");
        DataSetResult dr = dataSetService.callDataSet(dataSetQuery);
        double expected =money[i].getAmount().doubleValue();
        double actual = (Double) dr.getResult().get(info);
        if (expected != actual) {
            logger.info("resultcode= " + dr.getResultCode());
            logger.info("actual = " + actual);
            logger.info("expected = " + expected);
        }
 
    }
}


分享到:
评论

相关推荐

    分布并行计算性能测试07

    ### 分布并行计算性能测试知识点详解 #### 第7章:性能测试 在《分布并行计算性能测试07》这一章节中,作者系统地介绍了几种常用的计算机性能测试方法及其应用背景,包括LINPACK测试程序、SPEC测试程序、NAS测试...

    并行计算性能评测的方法

    并行计算性能评测是评估并行计算机系统性能的关键方法,旨在优化系统结构,提升计算效率,减少投资风险,以及提供公正的性能评价标准。本文主要围绕并行计算性能评测的相关概念、评测指标和评测方法展开。 首先,...

    并行计算性能评测---并行计算相关理论

    并行计算性能评测是评估计算机系统在执行多任务或数据并行处理时效率的重要方法。在这一领域,Sun-Ni定理是其中的关键概念之一,它对于理解和优化并行计算系统的性能至关重要。本文将深入探讨并行计算的基本性能指标...

    高性能并行计算-教程

    学习者还将了解到并行计算环境的管理和监控,包括资源调度、错误检测和故障恢复策略。 最后,本教程可能会涉及并行计算在实际应用中的案例,如气候模拟、生物信息学、物理仿真和大数据分析。这些领域的计算需求通常...

    高性能并行计算

    虽然具体内容不可见,但这些数字可以看作是并行计算不同部分或阶段的编号,比如算法的不同部分、性能测试的各个阶段、或者并行程序设计的不同模块。 文档还提到了Fortran编程语言。Fortran语言诞生于20世纪50年代,...

    并行计算与性能评价

    性能评价是并行计算中另一个关键方面,它包括一系列指标和方法来评估和比较不同并行计算系统、算法或程序的性能。性能评价的策略和指标包括: 1. 性能评价的策略:通常包括基准测试、性能分析、模拟和理论分析等...

    清华大学计算机系并行计算课件

    并行计算是现代计算机科学中的一个关键领域,它涉及到如何同时处理多个计算任务,以提高效率和性能。清华大学计算机系的这门并行计算课程,无疑是深入理解和掌握这一技术的重要资源。下面,我们将深入探讨并行计算的...

    并行计算原理 并行计算的思想

    - **错误处理**:并行计算可能导致错误,如数据一致性问题、通信错误等,需要有健壮的错误检测和恢复机制。 - **并行算法设计**:针对并行计算优化算法,使其能够有效利用多核资源,如使用并行排序算法、矩阵运算的...

    并行计算体系结构-并行算法

    并行计算体系结构是现代计算机科学的关键领域,其发展源于对高性能、低成本和高效生产力的需求。并行处理技术旨在通过同时处理多个计算任务来提升计算速度,以满足日益复杂的科学计算、人工智能(AI)和大数据处理...

    A.3矩阵并行计算练习

    在IT行业中,矩阵并行计算是一项关键的技术,尤其在高性能计算和大数据分析领域。本练习主要关注使用C#语言在网络应用编程中实现矩阵并行计算,结合WPF(Windows Presentation Foundation)进行用户界面的构建。这是...

    Linux与并行计算

    在本篇文章中,我们将讨论 Linux 与并行计算的相关知识点,并对 Linux 在高性能计算(HPC)领域的优势和劣势进行分析。 并行计算简介 并行计算是指在并行机上进行的计算,旨在降低单个问题求解的时间、提高问题...

    有关计算机并行计算的资料

    并行计算还面临着一些挑战,如负载均衡(确保每个处理器都有足够的工作)、通信开销(在分布式系统中交换数据的时间成本)、错误检测和容错机制(确保在某个处理器故障时系统仍能正常运行)以及编程复杂性(编写并行...

    可扩展并行计算技术、结构与编程.rar

    并行计算技术的挑战主要在于负载均衡、数据通信开销、同步问题以及并行错误检测。负载均衡要求确保所有处理器都能充分利用,避免出现“瓶颈”现象。数据通信开销是指在分布式环境中,数据传输可能导致额外的时间延迟...

    并行计算课程PPT

    8. **容错与并行计算**:讨论并行系统中的错误检测和恢复机制,以及如何在分布式环境中保证数据一致性。 9. **云计算与并行计算**:了解云环境下的并行计算模型,如Hadoop和Spark等大数据处理框架,以及如何在云...

    天津大学并行计算一二次实验报告

    而“test2”和“test1”可能为实验的数据集或测试用例,用于检验并行计算程序的正确性和效率。 通过这样的实验,学生不仅能掌握多线程编程的基本技能,还能理解并行计算在实际问题中的应用,比如高性能计算、大数据...

    R语言并行计算实战_R语言并行计算_

    因此,在实际应用中,我们需要根据任务特点和计算资源选择合适的并行策略,并进行性能测试,以确保并行计算的优势得到充分发挥。 总之,R语言的并行计算能力为处理大数据和复杂计算提供了强大支持。通过学习并合理...

    很好的入门的并行计算的课件

    这些应用往往需要处理大量数据或执行复杂的计算,因此并行计算能够显著提升其性能。 在学习并行计算时,理解并行度、可扩展性和性能瓶颈的概念也至关重要。并行度是指系统可以同时执行的任务数量,而可扩展性是指...

    Linux系统下的并行计算环境设计及应用举例

    通过以上分析,我们可以看到,"Linux系统下的并行计算环境设计及应用举例"涵盖了从环境搭建到并行程序设计,再到性能测试和优化的全过程。理解这些知识点对于开发和优化并行应用至关重要,同时也反映了Linux系统在...

Global site tag (gtag.js) - Google Analytics