Changeset 242243 in webkit


Ignore:
Timestamp:
Feb 28, 2019 4:48:07 PM (5 years ago)
Author:
Joseph Pecoraro
Message:

Web Inspector: CPU Usage: Worker thread that dies might stay at a high value forever
https://bugs.webkit.org/show_bug.cgi?id=195148

Reviewed by Matt Baker.

  • UserInterface/Views/CPUTimelineView.js:

(CPUTimelineView.prototype.layout):
Handle workers dieing or at least zeroing out between records.

Location:
trunk/Source/WebInspectorUI
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebInspectorUI/ChangeLog

    r242242 r242243  
     12019-02-28  Joseph Pecoraro  <pecoraro@apple.com>
     2
     3        Web Inspector: CPU Usage: Worker thread that dies might stay at a high value forever
     4        https://bugs.webkit.org/show_bug.cgi?id=195148
     5
     6        Reviewed by Matt Baker.
     7
     8        * UserInterface/Views/CPUTimelineView.js:
     9        (CPUTimelineView.prototype.layout):
     10        Handle workers dieing or at least zeroing out between records.
     11
    1122019-02-28  Joseph Pecoraro  <pecoraro@apple.com>
    213
  • trunk/Source/WebInspectorUI/UserInterface/Views/CPUTimelineView.js

    r242242 r242243  
    302302        let dataPoints = [];
    303303        let workersDataMap = new Map;
     304        let workersSeenInCurrentRecord = new Set;
    304305
    305306        let max = -Infinity;
     
    362363            unknownThreadAverage += unknownThreadUsage;
    363364
     365            let workersSeenInLastRecord = workersSeenInCurrentRecord;
     366            workersSeenInCurrentRecord = new Set;
     367
    364368            if (record.workersData && record.workersData.length) {
    365369                for (let {targetId, usage} of record.workersData) {
     370                    workersSeenInCurrentRecord.add(targetId);
    366371                    let workerData = workersDataMap.get(targetId);
    367372                    if (!workerData) {
     
    401406                    workerData.min = Math.min(workerData.min, usage);
    402407                    workerData.average += usage;
     408                }
     409            }
     410
     411            // Close any worker that died by dropping to zero.
     412            if (workersSeenInLastRecord.size) {
     413                let deadWorkers = workersSeenInLastRecord.difference(workersSeenInCurrentRecord);
     414                for (let workerId of deadWorkers) {
     415                    let workerData = workersDataMap.get(workerId);
     416                    if (workerData.dataPoints.lastValue.usage !== 0)
     417                        workerData.dataPoints.push({time, usage: 0});
    403418                }
    404419            }
Note: See TracChangeset for help on using the changeset viewer.