TCP的发送系列 — 发送缓存的管理(一)

TCP的发送系列 — 发送缓存的管理(一)

ID:40755094

大小:39.52 KB

页数:24页

时间:2019-08-07

TCP的发送系列 — 发送缓存的管理(一)_第1页
TCP的发送系列 — 发送缓存的管理(一)_第2页
TCP的发送系列 — 发送缓存的管理(一)_第3页
TCP的发送系列 — 发送缓存的管理(一)_第4页
TCP的发送系列 — 发送缓存的管理(一)_第5页
资源描述:

《TCP的发送系列 — 发送缓存的管理(一)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、TCP的发送系列—发送缓存的管理(一)数据结构TCP对发送缓存的管理是在两个层面上进行的,一个层面是单个socket的发送缓存管理,另一个层面是整个TCP层的内存管理。单个socket的发送缓存所涉及的变量。[java]structsock{.../*预分配缓存大小,是已经分配但尚未使用的部分*/intsk_forward_alloc;.../*提交给IP层的发送数据大小(累加skb->truesize)*/atomic_tsk_wmem_alloc;...intsk_sndbuf;/*发送缓冲区大小的上限*/st

2、ructsk_buff_headsk_write_queue;/*发送队列*/.../*发送队列的总大小,包含发送队列中skb负荷大小,*以及sk_buff、sk_shared_info结构体、协议头的额外开销。*/intsk_wmem_queued;...};整个TCP层的内存相关变量。[java]structprototcp_prot={.name="TCP",.owner=THIS_MODULE,.../*设置TCP的内存压力标志,把tcp_memory_pressure置为1*/.enter_memory_

3、pressure=tcp_enter_memory_pressure,/*检查sock是否有剩余的发送缓存(sk_wmem_queued

4、tcp_mem[0]后清除*/.memory_pressure=&tcp_memory_pressure,/*TCP内存使用的最小值、压力值、最大值,单位为页*/.sysctl_mem=sysctl_tcp_mem,/*每个sock写缓存的最小值、默认值、最大值,单位为字节*/.sysctl_wmem=sysctl_tcp_wmem,/*每个sock读缓存的最小值、默认值、最大值,单位为字节*/.sysctl_rmem=sysctl_tcp_rmem,.max_header=MAX_TCP_HEADER,/*协议头

5、的最大长度*/...};atomic_long_ttcp_memory_allocated;/*Currentallocatedmemory.*/inttcp_memory_pressure__read_mostly;初始化(1)tcp_memtcp_mem是整个TCP层的内存消耗,单位为页。longsysctl_tcp_mem[3]__read_mostly;tcp_mem-vectorof3INTEGERs:min,pressure,maxmin:belowthisnumberofpagesTCPisnotbo

6、theredaboutitsmemoryappetite.pressure:whenamountofmemoryallocatedbyTCPexceedsthisnumberofpages,TCPmoderatesitmemoryconsumptionandentersmemorypressuremode,whichisexitedwhenmemoryconsumptionfallsundermin.max:numberofpagesallowedforqueueingbyallTCPsockets.Default

7、sarecalculatedatboottimefromamountofavailablememory.在tcp_init()中,调用tcp_init_mem()来初始化sysctl_tcp_mem[3]数组。tcp_mem[0]是最小值,为3/32的系统内存。tcp_mem[1]是压力值,为1/8的系统内存,也是最小值的4/3。tcp_mem[2]是最大值,为3/16的系统内存,也是最小值的2倍。[java]staticvoidtcp_init_mem(void){/*nr_free_buffer_pages()

8、计算ZONE_DMA和ZONE_NORMAL的页数,*对于64位系统来说,其实就是所有内存了。*/unsignedlonglimit=nr_free_buffer_pages()/8;limit=max(limit,128UL);/*不能低于128页*/sysctl_tcp_mem[0]=limit/4*3;/*最小值设为3/32的系统内存*/sysctl_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。