问题:从调用AF_DataRequest到数据发出,是什么原因造成了中间有一个几百ms的延时?(而且这个延时刚开始是没有的,只有发送过100多次才会产生。)
协议栈版本 Z-Stack Home 1.2.1
一个协调器、一个终端,设备连接后,协调器连续向终端发送同一数据包(50字节用户数据),每次只有在收到上一个数据包的Confirm后,才回开始发下一数据包。
设定:一个数据包的整个发送过程,主要分以下两个时间段:
t1 —— 从协调器调用AF_DataRequest,至数据发送出去。
t2 —— 从数据发送出去,至收到终端Confirm
实际测试发现,刚开始发送时,发送一个数据包的时间(t1+t2)约50ms,主要为t2,t1极短,基本可忽略);
但等发了100多个数据包后,时间会变长,(t1+t2)约400多ms,t2与之前基本没变化,t1变为约400ms。
之后发送数据包都是400ms,无法恢复到原先的50ms。
1、我原先以为是内存碎片造成,但调试发现alloc函数从来没有返回fail,因此排除内存碎片造成。
2、出现上述情况后,重启协调器或重启终端,发送时间都会恢复至50ms。
3、我连接两个终端(同一程序)到协调器,协调器向终端A连续发送,直至出现上述情况(发送时间变为400ms),再使协调器向终端B发送数据,发现时间正常,约50ms。即协调器向A发送需400s,向B发送只需50ms。