Reduce Process Interference with Task Manager Eco Mode

Raymond Li

Raymond

Introduction

Task Manager Eco Mode is a new feature that gives you options to ensure certain running processes won’t stress the CPU out, leading to faster foreground responsiveness and better energy efficiency. It also helps you to identify apps that are already running in Eco Mode and are good citizens of the OS. The goal is to give power users control of process resource consumption and it contribute to Microsoft’s Sustainable Software initiative. At a high level, the Task Manager Eco Mode limits process resource usage by reducing the process priority and ensuring it runs efficiently on the CPU by leveraging EcoQoS.

Graphical user interface, application, table Description automatically generated

Motivation

Some applications continue to consume system resources (CPU, memory, disk, networking) even when they are idle and not being actively used or providing value to the user. This results in less resources being allocated to guarantee the performance needed for the user-desired applications. It may also lead to increased thermal and fan noise, as well as shortened battery life.

Task Manager is the go-to utility tool if a user wants to understand how well the system performs. We want to provide our users the way to limit the resource allocation on a per-process basis (in addition to just terminate a process since it might lead to undesirable issues), so the work from the processes can be executed as efficiently as possible, minimizing their interference with the foreground experience. The signals that we get back would help Windows to influence app teams to run as efficiently as possible.

The Feature Explained

The Windows Operating System provides a few knobs that can be turned to tune a process’ resource availability. For the first iteration, we focused on CPU as it is the most contended and power-consuming resource on modern devices.

When Eco Mode is enabled on a process, it a) reduces process base priority to low, and b) sets QoS mode to EcoQoS. Low priority ensures that this process does not interfere with higher priority processes that the user is actively using. EcoQoS ensures the process is executed in the most power efficient manner. This could mean running the processor at a lower frequency to save power, and it helps improve the thermal footprint of the CPU. We see up to 4x improvements (or ~76% reduction, see below) in UI responsiveness on a CPU contended system. The following section discusses improvements in detail.

Impact

To measure the benefits of Eco Mode, we test the completion time of certain activities like app launch and Start Menu open on a “busy” system. During these scenarios, the system has a synthetic CPU workload running in the background to simulate a busy device. This CPU workload runs on normal priority thread per CPU core 100% of the time, meaning it does not attempt to yield the CPU by sleeping or blocking. We can measure the effect of Eco Mode on the foreground experience by comparing the completion times when the system is loaded with the CPU load without Eco Mode applied, to when the system is loaded with Eco Mode applied to the CPU workload, both normalized to the baseline completion times without the CPU load. The chart below shows the results:

Image Eco Mode Impact

 

The results show that setting Eco Mode on the CPU workload vastly improves the responsiveness of the system by 14% ~ 76% across the common scenarios we tested. Recall that Eco Mode consists of both lowered priority and EcoQoS. EcoQoS can save thermal headroom for the foreground or ‘important’ work by keeping the CPU from working too hard on the background work, while the lowered priority ensures that the foreground work gets to run first.

Usage

Here is how to enable Eco mode for a given process in the Task Manager Processes tab (the same process works in the Task Manager Details tab too):

  1. Open Task Manager.
  2. Click on Processes tab.
  3. Right-click on a child process or an individual process.
  4. Click on “Eco mode” in the context menu to apply throttling.
  5. The status column in the Processes tab should show Eco mode for the process.

If “Eco mode” is greyed out, then it’s a parent/group process. You can expand the process tree to apply Eco mode on one of its child processes.

Note: If Microsoft Edge (or Chrome) is showing “Eco mode” as enabled but you did not apply it, this is due to both Microsoft Edge and Chrome experimenting with lowering base priority and applying power efficiency APIs to improve efficiency which is similar to what Task Manager is doing to identify “Eco” efficient apps. You may see other apps with “Eco mode” if they adapt to similar techniques to improve efficiency.

Closing Thoughts

The Task Manager Eco Mode is a feature that we hope to keep iterating on. As mentioned above, for the first iteration, we focused on managing the CPU allocation for a given app. For future iterations, we are exploring additional knobs to manage CPU resources, and similar techniques for other system resources.

If you have any suggestions or feedback about the Eco Mode feature, feel free to shoot our way by commenting down below or by using the Feedback Hub app and choose the “Desktop Environment / Task manager” feedback category.

15 comments

Leave a comment

    • Raymond Li
      Raymond LiMicrosoft employee

      The Eco Mode API is not made available to the public yet, because we are still experimenting with it to improve its effectiveness without introducing undesired side-effects. However, it’s possible to call the underlying APIs individually. The linked articles in “The Feature Explained” sections have more details.

  • Avatar
    Max Mustermueller

    Is the Eco Mode setting saved? For example I set a process to Eco Mode and restart my computer, does the process launch in Eco Mode or do I have to re-enable this over and over again every time the process has launched?

  • Avatar
    Alexander Hokhlov

    Will EcoQoS be any different from low process/thread priority on a desktop, considering their current lack of hardware support for it? I doubt it’s practical, or even possible, to adjust the CPU clock speed at every context switch. All desktop CPU cores run at the same clock unless disabled by TurboBoost or such, am I right? (Which is inherently inefficient, of course). Also, I’d like to see an option to start all system services in Eco mode by default, as well as enforce it during action gaming.

    • Raymond Li
      Raymond LiMicrosoft employee

      This feature is rolling out to a subset of Insiders in the Dev Channel at first, to help us quickly identify issues that may impact performance and reliability. Rest assured they will be gradually rolled out to everyone in the Dev Channel.

  • Avatar
    Luke Blevins

    This has to be one of the best features that came to the dev channel in a while. This was a great read! Looking forward to future iterations, a WinRT Eco Mode API, and novel methods of application for this new efficiency knob.

    • Avatar
      Drew -

      Yes, I will, also, say there have been a few fine things recently aiding performance, Sleeping tabs is an example. AND, this is bloody brilliant❗ In general, but apart from that… the marriage between Sleeping tabs & Eco Mode with Edge processes is VERY impactful.

      High praise goes to introducing Eco Mode, sure gets my 👏

      The article is enlightening, indeed 👍👍

      Cheers,
      Drew

  • Avatar
    Roger B

    The first post nails it. As soon as I get a build with this I’m going to try it against MsMpEng (aka. inbox malware shipped by Microsoft).

    If you really care about the environment, some serious investment in making Defender more efficient will have much greater impact than this option. For now I will continue running a script which disables Real Time Monitoring as that’s the only way to get back the 20+% performance defender steals when I build software.

  • Avatar
    Rey:)

    Hello I have a problem with the option “ECO MODE”, it does not appear in the task manager. I have the preview 21370.co_release…

    2. Neither in the configuration> customization, the new option of Device Usage appears

    Will there be a code, to place in cmd, or powershell and that the options are activated?..