On Apr 7, 2021, at 5:16 AM, riteshh wrote: > > On 21/04/07 03:01PM, Wen Yang wrote: >> From: Wen Yang >> >> The kworker has occupied 100% of the CPU for several days: >> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND >> 68086 root 20 0 0 0 0 R 100.0 0.0 9718:18 kworker/u64:11 >> >> And the stack obtained through sysrq is as follows: >> [20613144.850426] task: ffff8800b5e08000 task.stack: ffffc9001342c000 >> [20613144.850438] Call Trace: >> [20613144.850439] [] ext4_mb_new_blocks+0x429/0x550 [ext4] >> [20613144.850439] [] ext4_ext_map_blocks+0xb5e/0xf30 [ext4] >> [20613144.850441] [] ext4_map_blocks+0x172/0x620 [ext4] >> [20613144.850442] [] ext4_writepages+0x7e5/0xf00 [ext4] >> [20613144.850443] [] do_writepages+0x1e/0x30 >> [20613144.850444] [] __writeback_single_inode+0x45/0x320 >> [20613144.850444] [] writeback_sb_inodes+0x272/0x600 >> [20613144.850445] [] __writeback_inodes_wb+0x92/0xc0 >> [20613144.850445] [] wb_writeback+0x268/0x300 >> [20613144.850446] [] wb_workfn+0xb4/0x380 >> [20613144.850447] [] process_one_work+0x189/0x420 >> [20613144.850447] [] worker_thread+0x4e/0x4b0 >> >> The cpu resources of the cloud server are precious, and the server >> cannot be restarted after running for a long time, so a configuration >> parameter is added to prevent this endless loop. > > Strange, if there is a endless loop here. Then I would definitely see > if there is any accounting problem in pa->pa_count. Otherwise busy=1 > should not be set everytime. ext4_mb_show_pa() function may help debug this. > > If yes, then that means there always exists either a file preallocation > or a group preallocation. Maybe it is possible, in some use case. > Others may know of such use case, if any. If this code is broken, then it doesn't make sense to me that we would leave it in the "run forever" state after the patch, and require a sysfs tunable to be set to have a properly working system? Is there anything particularly strange about the workload/system that might cause this? Filesystem is very full, memory is very low, etc? Cheers, Andreas