队列技术
<b>1. </b><b>概述</b><b></b>
<b></b>
数值化所有可调的参数,让任何调整都有数据支持,即队列理论(排队论)。由 1910 年的时候丹麦科学家 A.K.Erlang 提出来的。
l 队列长度是可以调整的,调整队列这样可以优化读写的性能。
l 短队列的好处:在内存中一个少的队列的长度,会对我们的内存有利。
l 长队列的好处:可以对多个队列进行合并读写,这样可以更少的 IO 操作,有更高的性能。
<b>2. </b><b>队列理论的公式</b><b></b>
<b>L = A * W</b>
l L:队列长度(queue length)。
#number of request指在系统中等待处理的请求的平均数,单位个。
l A: 平均到达率。
#请求到达系统的比例,A 假如衡量标准为s,则每s有多少个请求到达。
l W: 平均等待时间。
#处理完成一个请求所需要的时间;(该指标也被理解为延迟、响应时间或者驻留时间)。
通常到达率A是无法改变和调整的。(如:A是每天的web访问人数。)我们主要是要要调节 "L" 和 "W" 来控制到达率的请求的处理,最大的可调性是 W 等待(处理)时间。
<b>3. </b><b>W </b><b>总的等待</b><b>(</b><b>处理</b><b>)</b><b>时间的公式</b><b></b>
<b>W = Q + S </b><b>或</b><b> W = Q + (Tsys + Tuser)</b>
l W: 总的等待(处理)时间
l Q: 排队等着处理的时间
l S: 服务用的时间,S=Tsys+Tuser
n Tsys: 系统时间(与内核有关的),内容处理这个响应调度花的时间,比上中断,上下文件切换。
n Tuser: 用户时间(是与应用程序有关的),应用程序处理应用花的时间,真实程序使用的时间
实例:time查看命令处理时间
[root@station8 ~]# time dd if=/dev/zero of=test bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 0.909336 seconds, 577 MB/s
real 0m0.911s #W时间
user 0m0.001s #Tuser时间
sys 0m0.910s #Tsys时间
<b>4. </b><b>完成率(</b><b>completion rate</b><b>)</b><b></b>
<b>B=X + O</b>
l B:带宽Bandwidth, 数据Data+开销 Overhead
l X: 速率Throughput,吞吐量,通常是要减去开销的。就是指单纯的数据(eg:Mbps)
l O:开销Overhead,工作中所消耗的部分(eg:Mbps)
<b>#</b><b>通常情况下带宽B是固定的,减小开销O可以提升速率X</b>
<b>A & C</b>
l A:到达率,同一时间的请求数(eg:packets/s)
l C:完成率,同一时间完成的请求数(eg:packets/s)
<b>#</b><b>最理想的状态时:到达率</b><b>A=C</b><b>完成率。</b><b> </b><b>通常情况下,到达率是外部影响的,通常是比较难调的。所以一般调整完成率。</b><b></b>
本文转自netsword 51CTO博客,原文链接:http://blog.51cto.com/netsword/563959