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

昨天开测试方案评审会议,其中有一条性能测试需求为:测试100个用户同时进行查询,响应时间小于2s。方案中给出了100个用户并发操作的说明,关于“并发”二字,百思不得其解。
首先,挖出脑袋里大学操作系统课堂上提到的概念:

并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。

并行, 在操作系统中是指,一组程序按独立异步的速度执行,不等于时间上的重叠(同一个时刻发生)。

本人粗暴将二者区分为:

并发是指同一时刻只有一个程序在运行,并行是指同一时刻可以运行多个程序。

按照这种理解,那jmeter测试100个用户同时进行操作的话,不是应该叫做“并行”吗?

经过查阅资料,下面引用几段内容:

理解:

(1)并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。

(2)并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。

(3)在一台处理器上“同时”(这个同时实际上市交替“”)处理多个任务,在多台处理器上同时处理多个任务。如hadoop分布式集群

普通解释:

并发:交替做不同事情的能力

并行:同时做不同事情的能力

专业术语:

并发:不同的代码块交替执行

并行:不同的代码块同时执行

总结:

如果某个系统支持两个或者多个动作(Action)同时存在,那么这个系统就是一个并发系统。

如果某个系统支持两个或者多个动作同时执行,那么这个系统就是一个并行系统。

并发系统与并行系统这两个定义之间的关键差异在于“存在”这个词。

在并发程序中可以同时拥有两个或者多个线程。这意味着,如果程序在单核处理器上运行,那么这两个线程将交替地换入或者换出内存。这些线程是同时“存在”的——每个线程都处于执行过程中的某个状态。

如果程序能够并行执行,那么就一定是运行在多核处理器上。此时,程序中的每个线程都将分配到一个独立的处理器核上,因此可以同时运行。

我相信你已经能够得出结论——“并行”概念是“并发”概念的一个子集。也就是说,你可以编写一个拥有多个线程或者进程的并发程序,但如果没有多核处理器来执行这个程序,那么就不能以并行方式来运行代码。因此,凡是在求解单个问题时涉及多个执行流程的编程模式或者执行行为,都属于并发编程的范畴

并发就是指代码逻辑上可以并行,有并行的潜力,但是不一定当前是真的以物理并行的方式运行。并发指的是代码的性质,并行指的是物理运行状态。

顾名思义,并发强调的是一起出发,并行强调的是一起执行。并发的反义是顺序,并行的反义是串行。并发并行并不是互斥概念,只不过并发强调任务的抽象调度,并行强调任务的实际执行。

查过资料后,本人又心生感触:

以jmeter为例,当ramp-up时间大于0,叫并发;ramp-up时间等于0,也称为并发(实则为并行,称呼方便)

越查越懵,操作系统基础不够牢固,暂时告辞。
未完待续

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值