[PATCH 0/2] Fix vm.dirtytime_expire_seconds=0 causing 100% CPU

Laveesh Bansal posted 2 patches 1 month ago
There is a newer version of this series
Documentation/admin-guide/sysctl/vm.rst |  2 ++
fs/fs-writeback.c                       | 14 ++++++++++----
2 files changed, 12 insertions(+), 4 deletions(-)
[PATCH 0/2] Fix vm.dirtytime_expire_seconds=0 causing 100% CPU
Posted by Laveesh Bansal 1 month ago
Setting vm.dirtytime_expire_seconds to 0 causes wakeup_dirtytime_writeback()
to reschedule itself with a delay of 0, creating an infinite busy loop that
spins kworker at 100% CPU.

This series:
- Patch 1: Fixes the bug by handling interval=0 as "disable writeback"
           (consistent with dirty_writeback_centisecs behavior)
- Patch 2: Documents that setting the value to 0 disables writeback

Tested by booting kernels in QEMU with virtme-ng:
- Buggy kernel: kworker CPU spikes to ~73% when interval set to 0
- Fixed kernel: CPU remains normal, writeback correctly disabled
- Re-enabling (0 -> non-zero): writeback resumes correctly

Laveesh Bansal (2):
  writeback: fix 100% CPU usage when dirtytime_expire_interval is 0
  docs: clarify that dirtytime_expire_seconds=0 disables writeback

 Documentation/admin-guide/sysctl/vm.rst |  2 ++
 fs/fs-writeback.c                       | 14 ++++++++++----
 2 files changed, 12 insertions(+), 4 deletions(-)

--
2.43.0