Introduction
Task Manager Efficiency 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 Efficiency mode and are good citizens of the OS. The goal is to give power users control of process resource consumption and contribute to Microsoft’s Sustainable Software initiative. At a high level, the Task Manager Efficiency mode limits process resource usage by reducing the process priority and ensuring it runs efficiently on the CPU by leveraging EcoQoS.
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 terminating 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 Efficiency 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 Efficiency 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 a 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 Efficiency mode on the foreground experience by comparing the completion times when the system is loaded with the CPU load without Efficiency mode applied vs. when the system is loaded with Efficiency mode applied to the CPU workload. Both normalized to the baseline completion times without the CPU load. The chart below shows the results:
The results show that setting Efficiency mode on the CPU workload vastly improves the responsiveness of the system by 14% ~ 76% across the common scenarios we tested. Recall that the Efficiency 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 Efficiency mode for a given process in the Task Manager Processes tab (the same process works in the Task Manager Details tab too):
- Open Task Manager.
- Click on Processes tab.
- Expand the process tree group by clicking on the > for the intended app
- Either click on the Efficiency mode on the command bar or right-click on a child process or an individual process.
- The status column in the Processes tab should show “Efficiency mode” for the process & will show the new leaf icon for the parent process.
If “Efficiency mode” is greyed out, then its a core Windows process, and throttling that process may affect the system.
Note: If Microsoft Edge (or Chrome) is showing “Efficiency 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 “Efficiency mode” apps. You may see other apps with “Efficiency mode” if they adapt to similar techniques to improve efficiency.
Closing Thoughts
The Task Manager Efficiency 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 Efficiency Mode feature, feel free to shoot our way by commenting down below or click here to jump to the Task Manager category in Feedback hub (Win+F – Feedback Hub -> Desktop Environment – Task Manager)
Is it possible to use PowerShell to enable Efficiency Mode for a process?
Really great stuff! Glad to see the Windows team is focusing on sustainability and battery life. Does switching a process to efficiency mode persist that preference across reboots? There may be certain apps a user would want to prevent from opening at boot to eliminate surprise battery drain, but efficiency mode seems like a good way to deal with this. One of the knobs I want to see added in the future is a toggle...
Thank you! at the present, we do not support saving Efficiency mode settings across reboots but would highly encourage you to provide feedback using the Feedback Hub (WIN + F) under Desktop Environment > Task Manager.
This will help us to prioritize the feature work.