Pdeathsig is almost never what you want
a year ago
- #Linux Kernel
- #Debugging
- #Performance Optimization
- 作者的任务是优化Recall.ai平台的输出媒体启动延迟问题。
- 输出媒体功能通过沙盒环境中的Chromium浏览器(使用Bubblewrap工具)将客户提供的网页渲染为音视频流供机器人使用。
- 最初由于激活输出媒体时Chromium需要消耗大量资源启动,导致延迟高达12秒。
- 解决方案计划在机器人启动时预加载Chromium以减少延迟。
- 测试发现尽管父进程仍在运行,Chromium会意外终止。
- 调试发现根本原因是Bubblewrap的--die-with-parent参数使用了Linux的PR_SET_PDEATHSIG机制。
- PR_SET_PDEATHSIG跟踪的是父线程而非父进程,这与Tokio运行时线程管理方式产生冲突。
- Tokio动态线程停放和回收机制导致Chromium被提前终止。
- 移除--die-with-parent参数后问题解决,延迟降至2-3秒。
- 该优化方案通过大幅缩短等待时间显著提升了客户体验。