1

我有一组可以完全并行执行的任务(通过 GSM 调制解调器发送短信),但一个短信任务不能。每个任务大约需要 10 秒才能执行。所以现在我正在尝试评估它在 4 个 GSM 调制解调器上的表现。

阿姆达尔定律

Speedup=1/((1-p)+P/s)

在我的情况下 p=1 因为任务是完全并行的,并且 s=4(GSM 调制解调器)

因此

Speedup = s

问题 我怎样才能在我的计数中表示这种情况

NumberOfTasks % s != 0

例如,如果我有 5 个 GSM 调制解调器,但只有一个要发送的 SMS,我的任务根本不是并行的,但是根据这条定律,我知道加速比是 5。

所以它真的需要 10 秒,但根据阿姆达尔定律,我得到 10/5=2 秒

4

1 回答 1

0

如何正确应用 Amdahl 的论点:

Gene AMDAHL 博士很久以前就制定了这项法律,当时处理流程组织的改进是大型机计算中心、工业生产和通用工作流程优化的重点。这条法律仍然有效,并且有话要说。

Speedup <code>S</code> 的主要上限

在传统公式的简单性中,面向过程的观点仍然有些看不见,但绝不应该如此。这同样适用于(有些专门的,“产品”特定的)资源的“库存”。如果对更多细节感兴趣,可以重新阅读https://stackoverflow.com/revisions/18374629/3中历史 #3 中的

在批评一章中,这两个段落都重新制定了阿姆达尔定律,详细介绍了为什么我们不能简单地将数字放入公式中并期望得到有效(即合理和可实现的)结果的理由。

因此,让我们从 PROCESS 的抽象开始:

上面已识别和命名的一个是发送 SMS 消息的过程。它可能需要〜10 [s]。这个过程是独立的(万岁,没有协调,没有障碍,没有信号量,没有锁,没有进程间通信),但在长度上是不可分割的,所以为了简洁,我们可以称它为原子进程,因为它不能执行但是以完全“原子”不可分割的方式,但在达到流程完成状态之前它有一些延迟(持续时间)。

只有当且仅当每个进程都被映射(分配)和调度(激活/执行)到某个处理资源上时,每个进程才会工作。

所以,接下来是资源:

正如原帖中已经定义的那样,有 4 个短信调制解调器。这些是特定于进程的资源,负责独立于其他进程承载“原子”进程(任务)(这是一个简单的例子,不是自动无限扩展,因为一旦运营商网络开始阻塞无线电接入网络(GSM 最后一英里)、POP 处理(BTS 节点)和/或运营商网络(从 BTS 到 MSC 的上行链路)将开始达到其各自资源的可用容量上限——所有复杂系统都简单具有复杂的资源/容量/工作负载分配/与性能相关的上限,其中每个都可能开始阻塞我们的一些“原子”-感兴趣的延迟(持续时间)和“可调度性”

因此,让我们保持简单的假设,SMS 调制解调器将始终处理发送 SMS 的请求,因此在这种资源管理简化的情况下,唯一的限制因素是 SMS 调制解调器的数量 - 这里是4

开销严格和资源感知的重新制定:

                          1                       Where: s      := a SERIAL only part of the End-to-End process-flow
S =  ____________________________________________        1 - s  := a PARALLEL organizable part
                   / ( 1 - s )           \               pSO    := a PARALLEL task setup overhead
     s + pSO + max|  _________ , atomicP  | + pTO        pTO    := a PARALLEL test termination overhead
                   \     N               /               N      := a number of resources that process  atomic-process-block
                                                         atomicP:= a duration of a further indivisible atomic-process-block

结果:

对于模拟情况,实际时间为:

   Ts       =  X [s] a duration to launch the End-to-End process-flow ( start the program ),
   TatomicP = 10 [s] a latency of sending one SMS-message will never be shorter,
    Nres    =  5 [1] a number of SMS-messages processing resources ( i.e. GSM-modems ),
    nSMS    =  1 [1] a number of SMS-messages to send,
   TpSO     =  Y [s] a duration to start a PARALLEL sub-process for GSM-modem pool handling,
   TpTO     =  Z [s] a duration to disengage the pool of PARALLEL sub-processes and to release all of their owned resources,

因此端到端流程持续时间T_E2E将是:

T_E2E = Ts+TpSO+max(TatomicP*nSMS/Nres, TatomicP)+TpTO) = X + Y + max(10/Nres, 10) + Z

必须始终保持纯s- 的纯流程流的一部分将是:SERIALSERIAL

( Ts ) / ( T_E2E ) = X / ( X + Y + 10 + Z ) [1]

主要上限(可达到的最大值)加速S将是:

( Ts + TatomicP*Nsms ) / ( Ts + TpSO + max(TatomicP*nSMS/Nres,TatomicP) + TpTO ),对于一个 SMS 消息和任何大量 SMS 处理 GSM 调制解调器将在这里 << 1,正确的,因为纯SERIAL流程流确实没有时间来设置子流程池并最终终止它们并释放池分配的资源,并且不花时间在主任务和以真正PARALLEL方式组织的任务池之间安排数据传输。

因此,在这里,您支付的费用比收到的多得多(从流程组织的角度来看,处理就绪的 GSM 调制解调器(资源)池的安排和控制成本相当高,以便只发送一条 SMS 消息) .

如果端到端工作流开始处理更大的 SMS 消息队列,性能将得到提升,并且加速S也将如此。要处理的队列越大越好。要处理的群组越大,处理群组的 GSM 调制解调器越多越好。

然而,Amdahl 的论点设定了这种可实现加速的主要上限:

原则上,对于 4 个调制解调器,S将永远不会超过 4,对于 5 个调制解调器,不会超过 5,等等。

于 2019-07-02T11:16:02.577 回答