Google has begun to throttle some background tabs in Chrome as part of a plan to reduce its browser’s impact on power consumption.
Chrome 57 introduces the first phase of its plan, which ultimately aims to kill background tab processing and reduce the browser’s impact on desktop energy use, laptop batteries, and CPU resources.
According to Google, background tabs are responsible for up to a third of Chrome’s power use on a desktop.
“Starting in version 57, Chrome will throttle individual background tabs by limiting the timer fire rate for background tabs using excessive power,” explained Alexander Timin, Google software engineer.
The company is rolling out background throttling gradually to give developers time to make adjustments since it can break website features that rely on working in the background.
According to Google’s notes, before Chrome 57 the browser has allowed each background timer to run at a limit of once per second to minimize the impact of background tab activity.
“Chrome 57 will delay timers to limit average CPU load to one percent of a core if an application uses too much CPU in background,” Timin said.
The new policy won’t affect tabs playing audio in the background or real-time connections, such as WebSockets and WebRTC. These exceptions are Google’s acknowledgement that Chrome still treats the web as an application platform.
Google notes that it is working on a set of APIs that will help developers “specify which work needs to be done in the background, similar to what’s possible on Android and iOS”.
For now, Timin says this throttling mechanism leads to 25 percent fewer busy background tabs.
Google has offered a more detailed breakdown of Chrome’s throttling budget:
- Each background tab has a time budget in seconds for running timers in the background.
- A page is subjected to time-budget limitations after 10 seconds in the background.
- A timer task is allowed to run only when the time budget is non-negative.
- After a timer has executed, its run-time is subtracted from the budget.
- The budget continuously regenerates with time. It’s currently set to a rate of 0.01 seconds per second. Note that this budget regeneration rate can be tweaked as Chrome collects more data about throttling behavior.
Google did test the new time-based throttling in the Chrome 56 beta, which caused one developer to complain of “significant breakage” to his site.