第卷 第期洛阳工业高等专科学校学报
年 月
12 4
200212 Journal of Luoyang Technology College Dec. 2002
Vol.12 No.4
TCP
发送缓冲区优化方法的分析与实现
(
洛阳工业高等专科学校计算机系,河南洛阳
许庆功,张永胜
471003)
分析了发送缓冲区的结构,并提出一个动态分配发送缓冲区的方法,保证连接以最大有效
TCPTCPTCP
摘要:
带宽发送数据。
关键词:
中图分类号:文献标识码:文章编号
TP393
HTTPTCP
服务器;发送缓冲区;带宽
A
:1008-8814(2002)04-0006-01
HTTPTCPHTTP
服务器的发送缓冲区是服务器的一个重
须大于这个值。当可用空间小于这个值时,如果一个服务
要资源,高效地使用发送缓冲区是提高服务性能
的一个有效方法[1]。随着的发展,在其上运行的
TCPHTTP
Internet
进程试图向发送缓冲区添加新的数据时,这个进程将被挂
起。当接收到新的时,这个被挂起的进程将被唤醒。
ACK
HTTPHTTP
服务器也以极快的速率增加。每个服务器每时每
当可用空间小于时,进程将处
(sb_hiwat sb_cc)sb_lowat
刻要处理成百上千的请求,每个请求都要在服务
HTTPHTTP
于等待状态;否则一个数据块会被拷入新分配的缓冲区
器和客户机之间建立一条或多条连接。服务器的
性能主要依赖于能否有效地使用服务器的有效资源。
TCPHTTP
HTTP
1 TCP
发送缓冲区结构分析
socketsockbuf
一个结构包括两个子结构,即发送缓冲区
(so_snd)mbuf(so_rcv)mbuf
和接收缓冲区
。
每个结构包含一个指向结构的链表的指
sockbufmbuf
mbuf128
针,一个结构由个字节组成。这些字节中的某些字
中,这个缓冲区将会被添加到发送缓冲区队列。当流控TCP
进程允许发送一个新的数据段时,发送函数会将这个数
TCP
据块组装成一个带有正确的头的数据段,然后调用 发
TCPIP
送函数将此数据段送入网络接口的发送队列。函数在sosend
将所有收到的数据送入到发送队列后正确返回。
2 TCP
发送缓冲区分配的局部最优化
TCPTCP
发送缓冲区分配最优化的目标是找到使连接工
节用于控制数据如指向链表中下一个的指针,指向数
mbuf
作于最大速率之下的最小缓冲区。发送缓冲区分配的局
TCP
据缓冲区的指针及其它有效数据等等。其余的字节可用于
部最优化考虑的是针对单个连接的性能
TCP
[2]。
存贮数据。每个不包含数据的都有一个指针指向一个
mbuf
最优化发送缓冲区大小是局部最优化的主要内容,最优
大的数据缓冲区,这个缓冲区称为簇、扩展缓冲区或映射
化的发送缓冲区大小是保证连接利用最大有效带宽发送
TCP
页,是一个数据存贮单元,其大小为 、 或。图
1KB2KB4KB
1
的最小发送缓冲区尺寸。寻找最优化的发送缓冲区尺寸的
描述了一个包含字节的发送缓冲区,这些数据被存
贮在一个大小为字节的簇和一个中。在发送缓
2148TCP
2048mbufTCP
困难在于,在连接存在的整个期间,甚至网络条件不变的
情况下,它仍处于动态变化之中。发送缓冲区最优化尺寸
冲区中数据是以流的方式存贮的,没有数据包的边界。
直接受以下因素影响:
当一个确认包到达时,包含在或一个簇中
(ACK)mbuf
的所有数据都被确认,这个及其簇将从链表中删除,
mbuf
并将其附加到释放缓冲区表中,在发送缓冲区中的数据的
发送方的
cwnd
;
连接的往返时间
(RTT)
;
(1)
(2)
(3)
服务器的读取时间。服务器的读取时间
(ReadTime)
量由以下三个数据成员来规范:
sockbuf
是从文件中读取一块数据并将其传送到发送缓冲区所需的
s
o
c
k
b
u
f
socket
so_end
m b u f
m_len=2048
m_data
2048 字 节
图发送缓冲区分析
1 TCP
m b u f
访问、读取、传输时间。
m_len=100
m_data
100 字 节
由于在每个内,新的数据块只从硬盘中读取
ReadTime
一次,因此发送缓冲区中应保持足够多的待发送段,这样
才能保证连接使用最大带宽。在期间,可发
TCPReadTime
送的待发送段的最大数取决于待确认段数。
假设,在时刻
ReadTime < RTT
t启动了新的文件访问过
程,如果在此时刻有n个待确认段且拥塞控制模式为慢启动
方式,那么直到时刻t
+ReadTimeACK
,收到的不会超过
n个
∶在整个发送缓冲区中尚未被确认的字节数。
(1) sb_cc
(2) sb_hiwat
(3) sb_lowat
:缓冲区可容纳的数据最大数。
:缓冲区中可用空间的下
(sb_hiwat sb_cc)
限。发送缓冲区在接收更多待发送数据时,其可用空间必
。每收到一个将会发送个待发送段,在文件访问完成
ACK
2
之前,发送的数据段数不会超过2n。因此为了避免不必要的
延迟,在时刻t,发送缓冲区不仅要包含n个待确认段,还要
(13 )
下转第 页
第 期4 陈守雄等万用表中的有效值测量电路及应用
13
RD1D2
为限流电阻, 、为双向限幅二极管,超过压保护作
加一级分流器。
用,可选高速开关二极管。
IN4148
4
注意事项
应用该芯片来制作仪表时,应注意以下几个问题:
RMS
()当被测交流电压超过时,必须在该芯片前
1200mV
加一级分压器,以将被测电压衰减到以内。在采用
200mV
该芯片制作仪表时,可在该芯片的输出端接级、
RMS1.0
200mV
直流毫伏表,或接位半数字电压表()。
3DVM
()设计高精度有效值时,还应考虑被测电压的
3RMS
波峰因素Kp(波峰因数Kp是被测信号的峰值与真有效值之
比)的影响,应仔细选择合适的。常见的正弦波、言
CAV
波、三角波和锯齿波的Kp≤,此时可取
>2
于窄脉冲或晶闸管的波形,由于Kp ,因此应适当增大
CAV
Kp 所>2
的容量,以延长取平均值的时间,从而减少由
μ 。 但 对
2CAV33
F
引起的附加误差。
()若要测量交流电流的真有效值,应在该芯片前面
2
收稿日期:2002-03-20
The Appliance and the Virtual Value Measuring Circuit in Multimeter
CHEN Shou-xiong
(Luoyang Technology College, Luoyang 471003, China)
Abstract: This article introduces the working principle and using points of the virtual value measuring circuit .It offers an applying
circuit composed the core circuit.
Key words: Virtual value; Circuit; Appliance
包含
2n个待发送段。同理在[t+RTT,t
(6 )
上接第 页
待发送数据的最大数应为4n,因此,在时刻t启 动 的 文 件 访
问过程应该读取4n个数据段。
+2RTT]
,
3
全局最优化
如果服务器提供给所有连接使用的发送
HTTPTCPTCP
缓冲区总数为N,那么系统就不可能为每个连接分配根
TCP
据局部最优化算法计算出的缓冲区数目。这样就存在一个
全局最优化问题。目前,服务器使用的较为原始的方
HTTP
法是让所有连接平等地使用发送缓冲区,即每个 连
TCPTCP
接的是相同的,这对不同速率接入的用户是不公平
sh_hiwat
的,而且是低效的。例如:以接入的用户和以
6MbpsADSL
56Kbps Modem
接入的用户,其所需的缓冲区数显然是不同
则再次入队。
(2)
优先级排队法:等待队列以优先级方法进行排队,
每个连接的优先级按以下方法计算:
p = min(P,sb_hiwat/k)
其中:k是该连接已经取得的缓冲区数,P是持有缓冲区
的所有连接的最在优先级。
当建立一个新的连接时,它的优先级被赋于最大值,即
P ,+1 因为新的连接最有可能发送数据,这样就可以提高整个
系统的吞吐量。每当有缓冲区被释放,系统就重新计算各个连
接的优先级,并根据优先级给每个队列分配缓冲区。
结 语4
对于大型网站的HTTP服务器而言,如何提高HTTP服
的,如果给它们分配相同的缓冲区数,则用户则不可
ADSL
务器效率,从而提高网站的服务质量,是一个比较重要的
能工作于其最大带宽,而用户所分配的缓冲区远远
Modem
超出了其所需要的缓冲区数。
问题。本文所提出的方法使连接到HTTP服务器的连接以其
最大带宽发送数据,这在一定程度上可以提高HTTP的 服 务
TCP
发送缓冲区全局最优化是在局部最优化基础上,
效率。当然,关于如何根据不同的用户分配不同的带宽,
采用一种较好的缓冲区分配策略,将可用缓冲区分配给需
还需要进一步研究。
要缓冲区的连接,一般可采用以下两种策略:
(1)
轮转法:这种方法与操作系统中进程调度算法中所
使用的轮转法类似。缓冲区按先进先出的方法管理。
(FIFO)
当有一个缓冲区被释放,而等待队列不空时,就将队头连
接出队,并将缓冲区分配给它。如果它还需要其它缓冲区
参 考 文 献 ∶
[1] V.Jacobson,R.T.Braden, and D.A.Borman. TCP Extensions for
High Performance[M]. Technical Report RFC 1323, 1992.5.
[2] S.Folyd. TCP and Explicit Congestion Notification[J].ACM
Computer Comm. Rev. , 1998, 28:(4).
收稿日期:2002-05-10
The Analysis and Implement of the Optimizing Method for TCP Send Buffer
XU Qing-gong, ZHANG Yong-sheng
(Dep. of Computer. Luoyang Technology college, Luoyang 471003, China)
Abstract: This paper analyzes the structure of TCP sending buffer , then proposes a dynamic approach to allocate TCP sending
buffer in order to guarantee TCP connection working under the maximum available bandwidth.
Key words: HTTP server; TCP send buffer; Bandwidth