| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <!-- | 2 <!-- |
| 3 Copyright (c) 2012 The Chromium Authors. All rights reserved. | 3 Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 4 Use of this source code is governed by a BSD-style license that can be | 4 Use of this source code is governed by a BSD-style license that can be |
| 5 found in the LICENSE file. | 5 found in the LICENSE file. |
| 6 --> | 6 --> |
| 7 | 7 |
| 8 <link rel="import" href="/tracing/extras/importer/linux_perf/parser.html"> | 8 <link rel="import" href="/tracing/extras/importer/linux_perf/parser.html"> |
| 9 | 9 |
| 10 <script> | 10 <script> |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 /** | 244 /** |
| 245 * Deduce the format of Mali perf events. | 245 * Deduce the format of Mali perf events. |
| 246 * | 246 * |
| 247 * @return {RegExp} the regular expression for parsing data when the format | 247 * @return {RegExp} the regular expression for parsing data when the format |
| 248 * is recognized; otherwise null. | 248 * is recognized; otherwise null. |
| 249 */ | 249 */ |
| 250 autoDetectLineRE: function(line) { | 250 autoDetectLineRE: function(line) { |
| 251 // Matches Mali perf events with thread info | 251 // Matches Mali perf events with thread info |
| 252 var lineREWithThread = | 252 var lineREWithThread = |
| 253 /^\s*\(([\w\-]*)\)\s*(\w+):\s*([\w\\\/\.\-]*@\d*):?\s*(.*)$/; | 253 /^\s*\(([\w\-]*)\)\s*(\w+):\s*([\w\\\/\.\-]*@\d*):?\s*(.*)$/; |
| 254 if (lineREWithThread.test(line)) | 254 if (lineREWithThread.test(line)) { |
| 255 return lineREWithThread; | 255 return lineREWithThread; |
| 256 } |
| 256 | 257 |
| 257 // Matches old-style Mali perf events | 258 // Matches old-style Mali perf events |
| 258 var lineRENoThread = /^s*()(\w+):\s*([\w\\\/.\-]*):?\s*(.*)$/; | 259 var lineRENoThread = /^s*()(\w+):\s*([\w\\\/.\-]*):?\s*(.*)$/; |
| 259 if (lineRENoThread.test(line)) | 260 if (lineRENoThread.test(line)) { |
| 260 return lineRENoThread; | 261 return lineRENoThread; |
| 262 } |
| 261 return null; | 263 return null; |
| 262 }, | 264 }, |
| 263 | 265 |
| 264 lineRE: null, | 266 lineRE: null, |
| 265 | 267 |
| 266 /** | 268 /** |
| 267 * Parses maliDDK events and sets up state in the importer. | 269 * Parses maliDDK events and sets up state in the importer. |
| 268 * events will come in pairs with a cros_trace_print_enter | 270 * events will come in pairs with a cros_trace_print_enter |
| 269 * like this (line broken here for formatting): | 271 * like this (line broken here for formatting): |
| 270 * | 272 * |
| 271 * tracing_mark_write: mali_driver: (mali-012345) cros_trace_print_enter: \ | 273 * tracing_mark_write: mali_driver: (mali-012345) cros_trace_print_enter: \ |
| 272 * gles/src/texture/mali_gles_texture_slave.c@1505: gles2_texturep_upload | 274 * gles/src/texture/mali_gles_texture_slave.c@1505: gles2_texturep_upload |
| 273 * | 275 * |
| 274 * and a cros_trace_print_exit like this: | 276 * and a cros_trace_print_exit like this: |
| 275 * | 277 * |
| 276 * tracing_mark_write: mali_driver: (mali-012345) cros_trace_print_exit: \ | 278 * tracing_mark_write: mali_driver: (mali-012345) cros_trace_print_exit: \ |
| 277 * gles/src/texture/mali_gles_texture_slave.c@1505: | 279 * gles/src/texture/mali_gles_texture_slave.c@1505: |
| 278 */ | 280 */ |
| 279 maliDDKEvent: function(eventName, cpuNumber, pid, ts, eventBase) { | 281 maliDDKEvent: function(eventName, cpuNumber, pid, ts, eventBase) { |
| 280 if (this.lineRE === null) { | 282 if (this.lineRE === null) { |
| 281 this.lineRE = this.autoDetectLineRE(eventBase.details); | 283 this.lineRE = this.autoDetectLineRE(eventBase.details); |
| 282 if (this.lineRE === null) | 284 if (this.lineRE === null) return false; |
| 283 return false; | |
| 284 } | 285 } |
| 285 var maliEvent = this.lineRE.exec(eventBase.details); | 286 var maliEvent = this.lineRE.exec(eventBase.details); |
| 286 // Old-style Mali perf events have no thread id, so make one. | 287 // Old-style Mali perf events have no thread id, so make one. |
| 287 var tid = (maliEvent[1] === '' ? 'mali' : maliEvent[1]); | 288 var tid = (maliEvent[1] === '' ? 'mali' : maliEvent[1]); |
| 288 switch (maliEvent[2]) { | 289 switch (maliEvent[2]) { |
| 289 case 'cros_trace_print_enter': | 290 case 'cros_trace_print_enter': |
| 290 this.maliDDKOpenSlice(pid, tid, ts, maliEvent[4], | 291 this.maliDDKOpenSlice(pid, tid, ts, maliEvent[4], |
| 291 maliEvent[3]); | 292 maliEvent[3]); |
| 292 break; | 293 break; |
| 293 case 'cros_trace_print_exit': | 294 case 'cros_trace_print_exit': |
| (...skipping 14 matching lines...) Expand all Loading... |
| 308 counter.addSeries(new tr.model.CounterSeries(seriesName, | 309 counter.addSeries(new tr.model.CounterSeries(seriesName, |
| 309 ColorScheme.getColorIdForGeneralPurposeString(counter.name))); | 310 ColorScheme.getColorIdForGeneralPurposeString(counter.name))); |
| 310 } | 311 } |
| 311 counter.series.forEach(function(series) { | 312 counter.series.forEach(function(series) { |
| 312 series.addCounterSample(ts, value); | 313 series.addCounterSample(ts, value); |
| 313 }); | 314 }); |
| 314 }, | 315 }, |
| 315 | 316 |
| 316 dvfsEventEvent: function(eventName, cpuNumber, pid, ts, eventBase) { | 317 dvfsEventEvent: function(eventName, cpuNumber, pid, ts, eventBase) { |
| 317 var event = /utilization=(\d+)/.exec(eventBase.details); | 318 var event = /utilization=(\d+)/.exec(eventBase.details); |
| 318 if (!event) | 319 if (!event) return false; |
| 319 return false; | |
| 320 | 320 |
| 321 this.dvfsSample('DVFS Utilization', 'utilization', ts, event[1]); | 321 this.dvfsSample('DVFS Utilization', 'utilization', ts, event[1]); |
| 322 return true; | 322 return true; |
| 323 }, | 323 }, |
| 324 | 324 |
| 325 dvfsSetClockEvent: function(eventName, cpuNumber, pid, ts, eventBase) { | 325 dvfsSetClockEvent: function(eventName, cpuNumber, pid, ts, eventBase) { |
| 326 var event = /frequency=(\d+)/.exec(eventBase.details); | 326 var event = /frequency=(\d+)/.exec(eventBase.details); |
| 327 if (!event) | 327 if (!event) return false; |
| 328 return false; | |
| 329 | 328 |
| 330 this.dvfsSample('DVFS Frequency', 'frequency', ts, event[1]); | 329 this.dvfsSample('DVFS Frequency', 'frequency', ts, event[1]); |
| 331 return true; | 330 return true; |
| 332 }, | 331 }, |
| 333 | 332 |
| 334 dvfsSetVoltageEvent: function(eventName, cpuNumber, pid, ts, eventBase) { | 333 dvfsSetVoltageEvent: function(eventName, cpuNumber, pid, ts, eventBase) { |
| 335 var event = /voltage=(\d+)/.exec(eventBase.details); | 334 var event = /voltage=(\d+)/.exec(eventBase.details); |
| 336 if (!event) | 335 if (!event) return false; |
| 337 return false; | |
| 338 | 336 |
| 339 this.dvfsSample('DVFS Voltage', 'voltage', ts, event[1]); | 337 this.dvfsSample('DVFS Voltage', 'voltage', ts, event[1]); |
| 340 return true; | 338 return true; |
| 341 }, | 339 }, |
| 342 | 340 |
| 343 hwcSample: function(cat, counterName, seriesName, ts, eventBase) { | 341 hwcSample: function(cat, counterName, seriesName, ts, eventBase) { |
| 344 var event = /val=(\d+)/.exec(eventBase.details); | 342 var event = /val=(\d+)/.exec(eventBase.details); |
| 345 if (!event) | 343 if (!event) return false; |
| 346 return false; | |
| 347 var value = parseInt(event[1]); | 344 var value = parseInt(event[1]); |
| 348 | 345 |
| 349 var counter = this.model_.kernel. | 346 var counter = this.model_.kernel. |
| 350 getOrCreateCounter(cat, counterName); | 347 getOrCreateCounter(cat, counterName); |
| 351 if (counter.numSeries === 0) { | 348 if (counter.numSeries === 0) { |
| 352 counter.addSeries(new tr.model.CounterSeries(seriesName, | 349 counter.addSeries(new tr.model.CounterSeries(seriesName, |
| 353 ColorScheme.getColorIdForGeneralPurposeString(counter.name))); | 350 ColorScheme.getColorIdForGeneralPurposeString(counter.name))); |
| 354 } | 351 } |
| 355 counter.series.forEach(function(series) { | 352 counter.series.forEach(function(series) { |
| 356 series.addCounterSample(ts, value); | 353 series.addCounterSample(ts, value); |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 558 }; | 555 }; |
| 559 | 556 |
| 560 Parser.register(MaliParser); | 557 Parser.register(MaliParser); |
| 561 | 558 |
| 562 return { | 559 return { |
| 563 MaliParser, | 560 MaliParser, |
| 564 }; | 561 }; |
| 565 }); | 562 }); |
| 566 </script> | 563 </script> |
| 567 | 564 |
| OLD | NEW |