Skip to contentSkip to conversation

restore user defined min_free_kbytes when disabling thp

RFC In review Han Pingtian 2 participants 4 messages Jan 21, 2014 – Jan 22, 2014

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

RFC 1/1 restore user defined min_free_kbytes when disabling thp

The testcase 'thp04' of LTP will enable THP, do some testing, then disable it if it wasn't enabled. But this will leave a different value of min_free_kbytes if it has been set by admin. So I think it's better to restore the user defined value after disabling THP.

---

thp increases the value of min_free_kbytes in initialization. This will change the user defined value of min_free_kbytes. So try to restore the value when disabling thp.

---
 mm/huge_memory.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)
mm/huge_memory.c +9 -0
index 94a824f..276180b 100644
@@ -164,6 +164,15 @@ static int start_khugepaged(void)
 	} else if (khugepaged_thread) {
 		kthread_stop(khugepaged_thread);
 		khugepaged_thread = NULL;
+
+		if (user_min_free_kbytes >= 0) {
+			pr_info("restore min_free_kbytes from %d to user "
+				"defined %d when stopping khugepaged\n",
+				min_free_kbytes, user_min_free_kbytes);
+
+			min_free_kbytes = user_min_free_kbytes;
+			setup_per_zone_wmarks();
+		}
 	}
 
 	return err;
Signature · 7 lines
1.7.7.6

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
#1 lore raw
Quoted 5 lines · Han Pingtian

The testcase 'thp04' of LTP will enable THP, do some testing, then disable it if it wasn't enabled. But this will leave a different value of min_free_kbytes if it has been set by admin. So I think it's better to restore the user defined value after disabling THP.

Then have LTP record what min_free_kbytes was at the same time THP was enabled by the test and restore both settings. It leaves a window where an admin can set an alternative value during the test but that would also invalidate the test in same cases and gets filed under "don't do that".

Signature · 8 lines
Mel Gorman
SUSE Labs

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
#2 lore raw
Quoted 7 lines · Mel Gorman
Quoted 5 lines · Han Pingtian

The testcase 'thp04' of LTP will enable THP, do some testing, then disable it if it wasn't enabled. But this will leave a different value of min_free_kbytes if it has been set by admin. So I think it's better to restore the user defined value after disabling THP.

Quoted 5 lines

Then have LTP record what min_free_kbytes was at the same time THP was enabled by the test and restore both settings. It leaves a window where an admin can set an alternative value during the test but that would also invalidate the test in same cases and gets filed under "don't do that".

Because the value is changed in kernel, so it would be better to restore it in kernel, right? :) I have a v2 patch which will restore the value only if it isn't set again by user after THP's initialization. This v2 patch is dependent on the patch 'mm: show message when updating min_free_kbytes in thp' which has been added to -mm tree, can be found here:

http://ozlabs.org/~akpm/mmotm/broken-out/mm-show-message-when-updating-min_free_kbytes-in-thp.patch

please have a look. Thanks.

#3 lore raw
Quoted 14 lines · Han Pingtian
Quoted 7 lines · Mel Gorman
Quoted 5 lines · Han Pingtian

The testcase 'thp04' of LTP will enable THP, do some testing, then disable it if it wasn't enabled. But this will leave a different value of min_free_kbytes if it has been set by admin. So I think it's better to restore the user defined value after disabling THP.

Quoted 5 lines

Then have LTP record what min_free_kbytes was at the same time THP was enabled by the test and restore both settings. It leaves a window where an admin can set an alternative value during the test but that would also invalidate the test in same cases and gets filed under "don't do that".

Quoted 7 lines

Because the value is changed in kernel, so it would be better to restore it in kernel, right? :) I have a v2 patch which will restore the value only if it isn't set again by user after THP's initialization. This v2 patch is dependent on the patch 'mm: show message when updating min_free_kbytes in thp' which has been added to -mm tree, can be found here:

It still feels like the type of scenario that only shows up during tests that modify kernel parameters as part of the test. I do not consider it normal operation for THP to be enabled and disabled multiple types during the lifetime of the system. If the system started with THP disabled, ran for a long period of time then the benefit of having min_free_kbytes at a higher value is already lost due to the system being potentially in a fragmented state already.

I'm ok with the warning being displayed if min_free_kbytes is updated but I'm not convinced that further trickery is necessary.

Signature · 8 lines
Mel Gorman
SUSE Labs

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>