CPU:cortex-m7 编译器:yagarto4.9(gcc) 优化:O0级,即不优化。 1. TCPIP资源消耗情况1.1. 静态资源消耗关于静态资源,在编译链接阶段已经确立的ROM RAM等,即我们常说的text段 data段bss段。协议栈(包括FTP TFTP SNTP TELNET等网络服务以及各种用于调试的shell命令)占用的静态资源如下: 1.2. 动态资源占用情况在TCPIP协议初始化过程中,会根据用户的配置从系统申请内存用作协议栈的内部运行: 申请的内存主要有以下几项:ARP表 ,TCP控制块,UDP控制块,TCPhash查找表,UDPhash查找表,套接字数据结构,当系统运行起来后,可以使用tcpipmem查看,资源占用如下:
在做基于TCPIP的二次开发的时候,基本上使用的都是套接字,比方SNTP TFTP FTPTELNET等等应用,那么对于一个套接字究竟占用多少资源呢? 以TCP(客户端)为例: Tcpclientsocketfd = socket空间(124)+tcp_ccb(240) = 364Byte 以Udp为例: Udpsocketfd = socket空间(124)+ udp_cb(64)= 188Byte
Socket套接字空间稍大,这个是因为后续即将支持IPV6,一个IPV6四元组空间占用就是(32+2)*2=64Bytes TCP的CCB占用也稍大,这个是因为我们并发的支持套接字的同时读写,那么用到的同步量就是三个(44*3=132Bytes),同时窗口缩放、定时重传、保活机制、流量监控等等机制也占用部分空间,才让我们的CCB稍大。 话说明码标价,用户可以根据自己的需要私人订制,额外不再收取费用(资源)! 另外:TCPIP中目前使用了三个事件(线程):tcp的TICK任务,用于处理TCP的各种定时,ipprocess,用于处理接收的IP报文,ARPprocess,用于处理接收的ARP报文。该三个任务的栈空间以及优先级都是可以配置的(详见tcpipconfig.c),可配置,根绝实际情况调整。
另外,在Apollo开发板上,djyip的tcp收发速度,大包可达3Mbytes/s,小包也超过1Mbytes/s,性能相当的平稳,不会出现忽快忽慢的情况。
|