On Thu 2016-05-26 06:56:38, Tetsuo Handa wrote: > On 2016/04/15 0:14, Petr Mladek wrote: > > This patch converts hungtaskd() in kthread worker API because > > it modifies the priority. > > > > This patch moves one iteration of the main cycle into a self-queuing > > delayed kthread work. It does not longer check if it was called > > earlier. Instead, the work is scheduled only when needed. This > > requires storing the time of the last check into a global > > variable. > > Is it guaranteed that that work is fired when timeout expires? It is > common that tasks sleep in uninterruptible state due to waiting for > memory allocations. Unless a dedicated worker like vmstat_wq is used > for watchdog, I think it might fail to report such tasks due to all > workers being busy but the system is under OOM. > > vmstat_wq = alloc_workqueue("vmstat", WQ_FREEZABLE|WQ_MEM_RECLAIM, 0); We are on the safe side. You might be confused because the kthread worker API has similar semantic like workqueues (using workers and works). The main difference is that each kthread worker has its own dedicated kthread. There are no pools, no dynamic assignment, and no further allocations needed. Thanks a lot for looking at it. Best Regards, Petr -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>