定义
性能与时间有关。事件发生时,系统必须对其做出响应。事件到达和响应有很多特性,但性能基本上与事件发生时,将要耗费系统多长时间做出响应有关。
在使性能变得复杂的众多因素中,其中一个因素就是事件源的数量和到达模式。事件可以来自用户请求、其他系统或系统内部。到达模式可以分为周期性的、随机的或偶然性的。
可以用等待时间、处理期限、系统吞吐量、响应抖动(等待时间的变化)、缺失率(由于系统太忙因而无法做出响应所导致的未处理事件的数量)、数据丢失(因为系统太忙所丢失的数据)等指标来度量。
性能战术
性能战术的目标就是对在一定的时间限制内到达系统的事件生成一个响应。到达系统的可以是单个事件,也可以是事件流的形式,它是请求执行计算的触发器。它可以是消息的到达、定时器到时、系统环境中重要的状态变化的检测,等等。系统对事件进行处理并生成一个响应。性能战术控制生成响应的时间。等待时间是事件到达和对该事件生成响应之间的时间。
基本因素
资源消耗
资源包括CPU、数据存储、网络通信带宽和内存,但它也可以包括由设计中的特定系统所定义的实体。-
闭锁时间
资源争用
争用同一个资源的多个流或相同流中争用同一个资源的不同事件都会增加等待时间。一般而言,对一个资源的争用越多,就越有可能引入等待时间。然而,这取决于如何仲裁争用以及仲裁机制如何处理单个请求。资源的可用性
即使没有争用,如果资源不可用,计算也无法进行下去。资源离线、组件故障或其他原因都会导致资源不可用。在任何情况下,设计师都必须确定资源不可用可能会导致急剧增加等待时间的位置。对其他计算的依赖性
计算可能必须等待,因为它必须与另一个计算的结果同步,或者是因为它在等待它所启动的一个计算结果。
资源需求
事件流是资源需求的源。需求的两个特性是:资源流中的事件之间的时间;每个请求所消耗的资源是多少。
减少等待时间的一个战术就是减少处理一个事件流所需要的资源。
提高计算效率
处理事件或消息中的一个步骤就是应用某个算法。改进在关键的地方所使用的算法将减少等待时间。有时可以用一种资源换取另一种资源,这取决于时间和空间资源的可用性。减少计算开销
如果没有资源请求,就可以减少处理需求。
减少等待时间的另一个战术就是减少所处理事件的数量。
管理事件率
如果可以降低监视环境变量处的取样频率,就可以减少需求。如果系统进行了超量设计的话,这样做是可行的,其他时候使用不必要的高采样率来建立多个流之间的和谐的周期。也就是说,某个流或事件流被过采样,以使它们可以被同步化。控制采样频率
如果没有对外部生成的事件的到达进行控制,则可以用一个较低的频率对排队的请求进行采样,这可能会导致请求的丢失。
用于减少或管理需求的其他战术包括控制资源的使用。
限制执行时间
限制用多少执行时间对事件做出响应。有时这样做有意义,有时没有意义。对于迭代式、依赖于数据的算法,限制迭代的数量就是限制执行时间的一个方法。限制队列大小
这控制了排成队列的到达事件的最大数量,因此控制了用来处理到达事件的资源。
资源管理
引入并发
如果可以并行处理请求,就可以减少闭锁时间。可以通过在不同的线程上处理不同的事件流或创建额外的线程来处理不同的活动集来引入并发。维持数据或计算的多个副本
客户机-服务器模式中的客户机是计算的副本。使用副本的目的是减少在中央服务器上进行所有的计算时出现的争用。高速缓存是在不同速度的存储库或单独的存储库上复制数据的战术,目的是减少争用。因为被高速缓存的数据通常是现有数据的一个副本,因此使副本一致和同步就变成了系统必须承担的责任。增加可用资源
速度更快的处理器、额外的处理器、额外的内存以及速度更快的网络都可能减少等待时间。
资源仲裁
当存在资源争用时,必须对资源进行调度。我们需要对处理器、缓冲器和网络进行高度安排。设计师的目标是理解每个资源使用的特性,并选择与之一致的调度策略。
先进/先出
FIFO队列同等看待对资源的所有请求,并依次对其进行处理。-
固定优先级调度
固定优先级调度为每个请求资源的源分配一个特定的优先级,并按该优先级顺序分配资源。该策略能够确保为优先级较高的请求提供更好的服务,但是,对一些优先级较低但重要的请求来说,可能要等很长的时间才能得到服务,因为它前面有很多优先级较高的请求在等待提供服务。3个常见的优先级策略为:语义重要性
每个流都根据生成它的任务的某个与领域特性被静态地分配一个优先级。时限时间单调
时限时间单调是一种静态优先级分配,它将较高的优先级分配给具有较短时限时间的流。在调度的不同优先级流具有实时时限时间时,使用该调度策略。速率单调
速率单调是周期流的一种静态优先级分配,它将较高的优先级分配给具有较短周期的流。该调度策略是时限时间单调的一种特殊情况。
-
动态优先级调度
轮转
轮转是一种调度策略,它对请求进行排序,然后在允许的时候,把资源分配给该排序中的下一个请求。时限时间最早优先
时限时间最早优先根据具有最早的时限时间的挂起请求来分配优先级。
静态调度
循环执行调度是一种调度策略,在该策略中,离线确定先占点和资源分配顺序。