侵蚀昨天 2021-11-04 15:23 采纳率: 0%
浏览 10

Linux工作队列queue_work 任务丢失

场景如下:
目标:跑一个网络模型,需要在内核保存每层结果
环境:每层跑完会产生一个中断,然后进入中断后半段进行后处理,后处理在spin_lock_irqsave的保护之下

尝试方案如下:
1、直接在后处理中使用filp_open、vfs_write的接口写入,但是貌似这个操作不能在原子操作里面调用,会crash 放弃
2、目前使用的方案:使用create_workqueue工作队列,在任务里面写入,但是对于运行快小模型可以,每层都能保存下来,一到大模型,这个时候保存任务比较耗时,就会出现trace,同时丢任务,但是还是能继续跑下去,所以我只能多跑几遍,然后集合起来才能得到完整的数据,着实麻烦。

[ 4929.012718] [<ffff0000080858e0>] __switch_to+0x90/0xb0
[ 4929.013710] [<ffff00000899139c>] __schedule+0x19c/0x5e0
[ 4929.014407] [<ffff000008991818>] schedule+0x38/0xa0
[ 4929.015049] [<ffff000008994a6c>] schedule_timeout+0x12c/0x280
[ 4929.015863] [<ffff000008124304>] rcu_gp_kthread+0x504/0x750
[ 4929.016597] [<ffff0000080e16ec>] kthread+0xfc/0x130
[ 4929.017230] [<ffff0000080836c0>] ret_from_fork+0x10/0x5

请问有没有专家知道是什么原因啊,或者针对我这个需求,有没有其他更好的方法能告知一番的,感谢。

  • 写回答

1条回答 默认 最新

  • aabbabababaa 2021-11-04 16:24
    关注

    没玩过工作队列,学习下

    评论

报告相同问题?

问题事件

  • 创建了问题 11月4日

悬赏问题

  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算