http://patchwork.ozlabs.org/patch/815639/

Every once in a while when my system is under a bit of stress I see
some spammy messages show up in my logs that say: kevent X may have been dropped As far as I can tell these messages aren't terribly useful. The
comments around the messages make me think that either workqueues used
to work differently or that the original author of the code missed a
sublety related to them. The error message appears to predate the git
conversion of the kernel so it's somewhat hard to tell. Specifically, workqueues should work like this: A) If a workqueue hasn't been scheduled then schedule_work() schedules
it and returns true. B) If a workqueue has been scheduled (but hasn't started) then
schedule_work() will do nothing and return false. C) If a workqueue has been scheduled (and has started) then
schedule_work() will put it on the queue to run again and return
true. Said another way: if you call schedule_work() you can guarantee that
at least one full runthrough of the work will happen again. That
should mean that the work will get processed and I don't see any
reason to think something should be dropped. Reading the comments in in usbnet_defer_kevent() made me think that B)
and C) would be treated the same. That is: even if we've started the
work and are 99% of the way through then schedule_work() would return
false and the work wouldn't be queued again. If schedule_work()
really did behave that way then, truly, some amount of work would be
lost. ...but it doesn't. NOTE: if somehow these warnings are useful to mean something then
perhaps we should change them to make it more obvious. If it's
interesting to know when the work is backlogged then we should change
the spam to say "warning: usbnet is backlogged". ALSO NOTE: If somehow some of the types of work need to be repeated if
usbnet_defer_kevent() is called multiple times then that should be
quite easy to accomplish without dropping any work on the floor. We
can just keep an atomic count for that type of work and add a loop
into usbnet_deferred_kevent().

最新文章

  1. web主题公园版权信息破解:script.js加密文件
  2. 创建ASP.NET Core MVC应用程序(6)-添加验证
  3. webpack-dev-server
  4. idea 用maven骨架生成项目速度慢的问题
  5. ZooKeeper 编程(一)
  6. linux+php+apache+mysql(mariadb)故障排除
  7. MVVM开源框架Knot.js 教程1 - CBS初步
  8. erl0003-ets 几种类型的区别和ets效率建议 <转>
  9. 【CSS】伪类与伪元素
  10. 大神博客链接系列---C#SubSonic3.0搭建ORM
  11. [转]ICE介绍 (RFC 5245)
  12. Ubuntu 16.04 + ROS Kinetic 机器人操作系统学习镜像分享与使用安装说明
  13. 第二十节: 深入理解并发机制以及解决方案(锁机制、EF自有机制、队列模式等)
  14. js数据放入缓存,需要再调用
  15. Centos7.5 防火墙设置
  16. webVR框架A-frame
  17. Hibernate 再接触 CRUD
  18. Debian下的crontab保存
  19. 洛谷P3243 [HNOI2015]菜肴制作 拓扑排序+贪心
  20. 【SQL】181. Employees Earning More Than Their Managers

热门文章

  1. typescript里一些有趣的点
  2. ViewTool Hollong BLE Sniffer Support Linux OS Introduction
  3. P3376 网络最大流模板(Dinic + dfs多路增广优化 + 炸点优化 + 当前弧优化)
  4. JDBC释放数据库连接
  5. 如何在本地开发Composer包
  6. js实现图片无缝循环跑马灯
  7. 转 googlenet论文解读
  8. [反汇编]函数开始部分利用mov ebx,esp找到返回地址(_KTRAP_FRAME结构)
  9. Zabbix 预警问题-预警对应的用户报警媒介收不到
  10. 天天向上的力量python(举一反三)