为什么jmeter做压测叫做“并发”而不叫“并行”?

发表于:2020-10-14 09:58

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:阿竺    来源:CSDN

  昨天开测试方案评审会议,其中有一条性能测试需求为:测试100个用户同时进行查询,响应时间小于2s。方案中给出了100个用户并发操作的说明,关于“并发”二字,百思不得其解。
  首先,挖出脑袋里大学操作系统课堂上提到的概念:
  并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。
  并行,在操作系统中是指,一组程序按独立异步的速度执行,不等于时间上的重叠(同一个时刻发生)。
  本人粗暴将二者区分为:
  并发是指同一时刻只有一个程序在运行,并行是指同一时刻可以运行多个程序。
  按照这种理解,那jmeter测试100个用户同时进行操作的话,不是应该叫做“并行”吗?
  经过查阅资料,下面引用几段内容:
  理解:
  (1)并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。
  (2)并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。
  (3)在一台处理器上“同时”(这个同时实际上市交替“”)处理多个任务,在多台处理器上同时处理多个任务。如hadoop分布式集群
  普通解释:
  并发:交替做不同事情的能力
  并行:同时做不同事情的能力
  专业术语:
  并发:不同的代码块交替执行
  并行:不同的代码块同时执行
  总结:
  如果某个系统支持两个或者多个动作(Action)同时存在,那么这个系统就是一个并发系统。
  如果某个系统支持两个或者多个动作同时执行,那么这个系统就是一个并行系统。
  并发系统与并行系统这两个定义之间的关键差异在于“存在”这个词。
  在并发程序中可以同时拥有两个或者多个线程。这意味着,如果程序在单核处理器上运行,那么这两个线程将交替地换入或者换出内存。这些线程是同时“存在”的——每个线程都处于执行过程中的某个状态。
  如果程序能够并行执行,那么就一定是运行在多核处理器上。此时,程序中的每个线程都将分配到一个独立的处理器核上,因此可以同时运行。
  我相信你已经能够得出结论——“并行”概念是“并发”概念的一个子集。也就是说,你可以编写一个拥有多个线程或者进程的并发程序,但如果没有多核处理器来执行这个程序,那么就不能以并行方式来运行代码。因此,凡是在求解单个问题时涉及多个执行流程的编程模式或者执行行为,都属于并发编程的范畴。
  并发就是指代码逻辑上可以并行,有并行的潜力,但是不一定当前是真的以物理并行的方式运行。并发指的是代码的性质,并行指的是物理运行状态。
  顾名思义,并发强调的是一起出发,并行强调的是一起执行。并发的反义是顺序,并行的反义是串行。并发并行并不是互斥概念,只不过并发强调任务的抽象调度,并行强调任务的实际执行。
  查过资料后,本人又心生感触:
  以jmeter为例,当ramp-up时间大于0,叫并发;ramp-up时间等于0,也称为并发(实则为并行,称呼方便)
  越查越懵,操作系统基础不够牢固,暂时告辞。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号