Historical Histogram Data

This page presents data captured from base::ThreadPool histograms at a given point in time so it can be used in future design decisions.

All data is 28-day aggregation on Stable channel.

Number of tasks between waits

Number of tasks between two waits by a foreground worker thread in a browser/renderer process.

Histogram name: ThreadPool.NumTasksBetweenWaits.(Browser/Renderer).Foreground Date: August 2019 Values in tables below are percentiles.

Windows

Number of tasksBrowser processRenderer process
18792
29598
599100

Mac

Number of tasksBrowser processRenderer process
18190
29297
598100

Android

Number of tasksBrowser processRenderer process
19296
29798
599100

Number of tasks run while queueing

Number of tasks run by ThreadPool while task was queuing (from time task was posted until time it was run). Recorded for dummy heartbeat tasks in the browser process. The heartbeat recording avoids dependencies between this report and other work in the system.

Histogram name: ThreadPool.NumTasksRunWhileQueuing.Browser.* Date: September 2019 Values in tables below are percentiles.

Note: In renderer processes, on all platforms/priorities, 0 tasks are run while queuing at 99.5th percentile.

Windows

Number of tasksUSER_BLOCKINGUSER_VISIBLEBEST_EFFORT
0959390
1989592
2999693
51009895

Mac

Number of tasksUSER_BLOCKINGUSER_VISIBLEBEST_EFFORT
010010099
110010099
210010099
5100100100

Android

Number of tasksUSER_BLOCKINGUSER_VISIBLEBEST_EFFORT
0999897
11009999
21009999
5100100100

Chrome OS

For all priorities, 0 tasks are run while queueing at 99.5th percentile.

Analysis

The number of tasks that run while a BEST_EFFORT task is queued is unexpectedly low. We should explore creating threads less aggressively, at the expense of keeping BEST_EFFORT tasks in the queue for a longer time. See Bug 906079.