建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

伏东奇

发帖: 1粉丝: 0

级别 : 新手上路

发消息 + 关注

更新于2020年09月21日 16:32:10 272 2
直达本楼层的链接
楼主
显示全部楼层
[网络及数据传输问题] can使用CanDataSetMethod下发数据阻塞

can下发数据使用CanDataSetMethod,方式同步,单线程发送,频率为100hz,mdc版本为T28


现在有个问题,偶尔会出现被CanDataSetMethod卡住的情况,频率大致1小时出现几次10ms以上,正常测试一两天可能会出现卡顿100ms以上,最多有到三四百ms的情况


定位情况

计时方法

Timestamp t1 = pinecone::common::GetSynchronizedTimestamp();

can_rx_proxies_[intf]->CanDataSetMethod(std::move(can_message));

Timestamp SendCanMessage_cost_time =
      pinecone::common::GetSynchronizedTimestamp() - t1;

GetSynchronizedTimestamp()为封装的std::chrono::steady_clock计时,单位为微秒


日志说明

以310,311行为例

10:42:29 530960    I [packer.cpp:557]    cost_time:21424 SendCanMessage_cost_time:21082
10:42:30 710600    I [packer.cpp:557]    cost_time:1114 SendCanMessage_cost_time:1010


其中cost_time为接收到控制指令,到整个回调函数结束的时间,当该时间大于1000微秒就会打印

上面的计时里面主要是数据格式转换(耗时很低),在回调函数最后使用CanDataSetMethod进行下发,对该函数进行计时,也就是log里面的SendCanMessage_cost_time,发现阻塞都是在这个函数


这里的310行阻塞了21ms,310行是正常情况

can_message_sender_node.squirrel.20200920-102745.txt 131.46 KB,下载次数:1

举报
分享

分享文章到朋友圈

分享文章到微博

chenjiawei

发帖: 0粉丝: 0

级别 : 新手上路

发消息 + 关注

发表于2020年09月21日 17:23:31
直达本楼层的链接
沙发
显示全部楼层

运行时是否有开始someip的同步日志,开启同步日志会引入性能问题,导致时延概率性增加

评论
伏东奇 2020-9-22 08:52 评论

不知道是不是cm日志?cm日志是默认的,级别也是默认的,应该是warning,如果有cm日志是会写到我们这个日志文件,但是这里并没有

... 查看全部
点赞 评论 引用 举报

chenjiawei

发帖: 0粉丝: 0

级别 : 新手上路

发消息 + 关注

发表于2020年09月21日 18:18:57
直达本楼层的链接
板凳
显示全部楼层

问题出现时的系统负载情况是什么(CPU使用率,内存占用率),高负载也会导致概率性时延过大。

然后麻烦收集一下CM和someip的日志,日志收集方法在《MDC 300 (F) 快速入门指南 01.chm》中“调试信息收集”-“CM信息收集”-“准备工作”和“SOME/IP信息收集”

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册