mirror of
https://github.com/torvalds/linux.git
synced 2024-11-29 15:41:36 +00:00
kswapd: replace try_to_freeze() with kthread_freezable_should_stop()
Instead of using try_to_freeze, use kthread_freezable_should_stop in kswapd. By this, we can avoid unnecessary freezing when kswapd should stop. Link: https://lkml.kernel.org/r/20240126152556.58791-1-ppbuk5246@gmail.com Signed-off-by: Levi Yun <ppbuk5246@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
13ef742457
commit
96200c9150
12
mm/vmscan.c
12
mm/vmscan.c
@ -6796,6 +6796,7 @@ restart:
|
||||
bool raise_priority = true;
|
||||
bool balanced;
|
||||
bool ret;
|
||||
bool was_frozen;
|
||||
|
||||
sc.reclaim_idx = highest_zoneidx;
|
||||
|
||||
@ -6894,9 +6895,9 @@ restart:
|
||||
|
||||
/* Check if kswapd should be suspending */
|
||||
__fs_reclaim_release(_THIS_IP_);
|
||||
ret = try_to_freeze();
|
||||
ret = kthread_freezable_should_stop(&was_frozen);
|
||||
__fs_reclaim_acquire(_THIS_IP_);
|
||||
if (ret || kthread_should_stop())
|
||||
if (was_frozen || ret)
|
||||
break;
|
||||
|
||||
/*
|
||||
@ -7102,7 +7103,7 @@ static int kswapd(void *p)
|
||||
WRITE_ONCE(pgdat->kswapd_highest_zoneidx, MAX_NR_ZONES);
|
||||
atomic_set(&pgdat->nr_writeback_throttled, 0);
|
||||
for ( ; ; ) {
|
||||
bool ret;
|
||||
bool was_frozen;
|
||||
|
||||
alloc_order = reclaim_order = READ_ONCE(pgdat->kswapd_order);
|
||||
highest_zoneidx = kswapd_highest_zoneidx(pgdat,
|
||||
@ -7119,15 +7120,14 @@ kswapd_try_sleep:
|
||||
WRITE_ONCE(pgdat->kswapd_order, 0);
|
||||
WRITE_ONCE(pgdat->kswapd_highest_zoneidx, MAX_NR_ZONES);
|
||||
|
||||
ret = try_to_freeze();
|
||||
if (kthread_should_stop())
|
||||
if (kthread_freezable_should_stop(&was_frozen))
|
||||
break;
|
||||
|
||||
/*
|
||||
* We can speed up thawing tasks if we don't call balance_pgdat
|
||||
* after returning from the refrigerator
|
||||
*/
|
||||
if (ret)
|
||||
if (was_frozen)
|
||||
continue;
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user