I suspect the issue is caused by this commit:

commit c22d70a162d3cc177282c4487be4d54876ca55c8
Author: Roman Gushchin <[email protected]>
Date:   Mon Jun 28 19:36:03 2021 -0700
 
    writeback, cgroup: release dying cgwbs by switching attached inodes


It introduces a kworker "cleanup_offline_cgwbs_work", which leverages 
inode_switch_wbs_work_fn to keep moving inodes from dying cgwb to their parent, 
so it can reclaim more memory from wb structures.

Moving inodes from a wb needs to take its lock (wb->list_lock) which
also needs to be taken in inode_switch_wbs, that could be where the
contention happens.


I built a test kernel based on gcp kernel (6.8.0-1019) disabling this kworker 
for "testing only":

-       queue_work(system_unbound_wq, &cleanup_offline_cgwbs_work);
+       //queue_work(system_unbound_wq, &cleanup_offline_cgwbs_work);

https://launchpad.net/~gerald-yang-tw/+archive/ubuntu/400986-debug


If you would like to help testing, please add the above test PPA and install:
linux-gcp-6.8-headers-6.8.0-1019
linux-gcp-6.8-tools-6.8.0-1019
linux-headers-6.8.0-1019-gcp
linux-image-unsigned-6.8.0-1019-gcp
linux-modules-6.8.0-1019-gcp
linux-modules-extra-6.8.0-1019-gcp

Please note:
This test kernel is only used to confirm if this kworker is the cause of the 
issue, not a fix.

Thanks,
Gerald

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2038492

Title:
  workqueue: inode_switch_wbs_work_fn hogged CPU for >10000us 16 times,
  consider switching to WQ_UNBOUND

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-oem-6.5/+bug/2038492/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to