On Fri, 25 Jul 2014 20:18:18 +0530 Chintan Pandya<cpandya@xxxxxxxxxxxxxx> wrote:
KSM thread to scan pages is scheduled on definite timeout. That wakes
up CPU from idle state and hence may affect the power consumption.
Provide an optional support to use deferrable timer which suites
low-power use-cases.
Typically, on our setup we observed, 10% less power consumption with
some use-cases in which CPU goes to power collapse frequently. For
example, playing audio while typically CPU remains idle.
To enable deferrable timers,
$ echo 1> /sys/kernel/mm/ksm/deferrable_timer
This could not have been the version which you tested. What's up?
--- a/mm/ksm.c~ksm-provide-support-to-use-deferrable-timers-for-scanner-thread-fix-fix-2
+++ a/mm/ksm.c
@@ -1720,8 +1720,6 @@ static int ksmd_should_run(void)
static int ksm_scan_thread(void *nothing)
{
- signed long to;
-
set_freezable();
set_user_nice(current, 5);
@@ -1735,7 +1733,9 @@ static int ksm_scan_thread(void *nothing
try_to_freeze();
if (ksmd_should_run()) {
- timeout = msecs_to_jiffies(ksm_thread_sleep_millisecs);
+ signed long to;
+
+ to = msecs_to_jiffies(ksm_thread_sleep_millisecs);
if (use_deferrable_timer)
schedule_timeout_deferrable_interruptible(to);
else
_