性能优化(下):如何降低延时?

Light of Logic series. Composition of numbers, lights and design elements suitable as a backdrop for the projects on thinking, logic, computers and future technology

Latency这个词很有意思,以至于我经常会在课堂上提起它。Latency在英语中的意思是指潜在可能的延误,而不是真的延误。涉及网络(或其它资源)的Latency意味着网络传输所用的时间,无法进行避免。

Latency通常定义为IT工作单元完成工作所需要的时间,一般是某种形式的处理传输,我们也称之为响应时间。工作单元的延迟一般由子单元构成,如处理器加工处理、硬盘输入输出操作以及网络传输时间,每个工作单元都有相应的延迟。虽然不能完全赞同延迟的意思,我觉得把延迟时间分成两部分考虑会比较好。

延迟组成

延迟时间可分成以下两部分,本地延迟和额外延迟。本地延迟是工作单元执行工作所需的时间,不受环境影响,也就是说,不用面临排队、重新传输、重新连接和其它可能增加等待时间的问题。本地延迟是不变的,除非因为网络、数据压缩等技术而需要对设备进行更新升级时才会改变。例如,磁盘访问所需的本地延迟就等于寻道时间加上搜索时间再加上数据传输时间。而对于网络链路,在一条链路上传播的发送位的“宽度”(有效负载+控制数据)会根据链路带宽而改变。

本地延迟是当工作单元流量(处理)开始需要排队以及其它导致等待时间增加的过程,如数据重新传输、磁盘重新连接。排队会增加等待时间,有时也叫排队时间,延迟会增加。排队时间是由相应的资源使用来决定,即繁忙程度。对于单个资源,可以用以下等式表示:

Tlatency = Tnative + Textra

我认为,delay是指在一个设计良好且平衡的系统,数据传输没有按既定时间完成。就如同交通拥堵导致行程由原来的20分钟增加到了30分钟。所以,我们得到了如下的数据:

Normal (native) time = 20, delay (extra) = 30, total time = 50 (latency)

为什么会出现这种现象?为什么有这么多延迟?不可能只有一种延时,但是我们通常通过减少响应时间(通常指处理所需的时间)来减少这些等待时间。

举个例子,如果你有3秒的响应时间(一般情况下,指延迟=3秒),很明显,你想要减少这种等待时间。其中,这种响应时间里包含的本地延迟(例如网络)=(有效负载+控制数据)/线路速度=2.2秒。你可以尝试下,但会发现徒劳无功,如果你不用一些网络提高技术,例如WAN加速或数据压缩,你很难将时间减少到比这更低。如果你把这3秒响应时间(延迟)分成本地(无法改变)延迟和额外延迟,你可以关注额外延迟的部分,由此可以得到以下等式:额外延迟=(响应时间—本地时间)。然后,你可以更明确地知道你需要解决的问题,把额外延迟分解成各个组成部分,针对其中占比较大的部分进行解决完善。网络节点、传输错误都能造成额外的等待时间。

Cache越大越好吗?

业内普遍认为,数据读写的缓冲区越大,响应时间越短,数据吞吐量越大,文件传输速度越短。但这种认识很明显是错误的,尽管在某些情况下可能是成立的。在这里,我们看到,我们可以通过缓存来实现网络的最佳操作性能。缓存对网络中路由器、数据库等单个组件性能起着非常关键的作用。

网络:作为系统和用户的连接层,网络可能由于不够优化的缓存而造成延误。最常用的网络协议是传输控制协议,即TCP。为了达到最大的网络吞吐,链路使用最优TCP socket buffer sizes非常关键(注:不应该小于带宽和延迟的乘积)。如果缓存区太小,TCP拥堵窗口将不会完全开放,所以发送方将会有所限制。如果缓冲区太大,发送方的流量将大大超过接收方(就好像从消防水管处直接喝水),这也会导致接收方丢弃数据包以及TCP拥塞窗口关闭。

审查和优化也会有利于NFS与DNS缓存。

更多关于计算缓存大小的信息,可以阅读以下文章:

How TCP Works:

http://www.onlamp.com/2005/11/17/tcp_tuning.html

Buffer Sizing in the Internet:

http://yuba.stanford.edu/buffersizing/

 

路由器的缓冲/缓存以及内存缓存也有类似的考虑。我曾见过32K缓存处理器的性能甚至优于与其几乎相同功率的64K缓存处理器。这完全得益于缓存使用的处理算法,也由此可见这两款缓存处理器使用的算法是不同的。

 

Terry Critchley is the author of High Availability IT Services,  ISBN 9781498769198 – CAT# K29288