Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

针对非LOANED_MESSAGE的零拷贝消耗的测试是不是错了 #1

Open
cocaston opened this issue Dec 20, 2024 · 4 comments
Open

Comments

@cocaston
Copy link

这里应该使用export ROS_DISABLE_LOANED_MESSAGES=1吧

@cocaston
Copy link
Author

进程间使用loan msg非零拷贝通信,应该也错了

@zhukao
Copy link
Owner

zhukao commented Dec 23, 2024

你好,ROS_DISABLE_LOANED_MESSAGES这个宏和loan msg是两个概念,所以存在两个概念的组合和测试对比。

ROS_DISABLE_LOANED_MESSAGES是ROS2标准定义的宏,用于控制是否启用零拷贝功能,默认是0,即启用零拷贝。所以如果要禁用零拷贝功能,可以直接设置export ROS_DISABLE_LOANED_MESSAGES=1,不管实际发布是否按照零拷贝方式进行通信。

loan msg表示的是通信使用的消息类型和是否使用零拷贝方式发布数据

另外,ROS2手册中关于零拷贝的说明和使用资料非常少,主流的ROS2项目(如相机驱动、nav2)都是使用进程内通信方式,可以关注下测试总结

@cocaston
Copy link
Author

确实资料很少,很感谢你整理开放的这一套测试代码,这对我也很有用。
只是这里存在的问题可能是我没有表述清楚。我所提到的问题是针对文档中的环境变量设置,如下图
image
不使用loan msg是否应该改为export ROS_DISABLE_LOANED_MESSAGE=1。

修改了配置以后这里我的测试结果是3%.

@zhukao
Copy link
Owner

zhukao commented Dec 24, 2024

确实资料很少,很感谢你整理开放的这一套测试代码,这对我也很有用。 只是这里存在的问题可能是我没有表述清楚。我所提到的问题是针对文档中的环境变量设置,如下图 image 不使用loan msg是否应该改为export ROS_DISABLE_LOANED_MESSAGE=1。

修改了配置以后这里我的测试结果是3%.

明白你的意思,可能还是零拷贝开关ROS_DISABLE_LOANED_MESSAGEloan msg这两个概念我没有说清楚,如果ROS2中零拷贝开关是ROS_DISABLE_SHARED_MEMORY/ROS_DISABLE_ZERO_COPY可能就不会有歧义了。

使用loan msg的意思是发布端使用borrow_loaned_message接口申请消息内存,填充消息内容后使用publish接口发布申请到的消息。对应示例代码#ifdef USING_LOAN_MSG开关部分的逻辑。

已经更新了readme,把描述使用loan msg改成了使用borrow_loaned_message

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants