summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorsleffler@chromium.org <sleffler@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-11 20:59:40 +0000
committersleffler@chromium.org <sleffler@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-11 20:59:40 +0000
commit7d4368c56830969fc50d6d9a8eca90fd85974107 (patch)
tree1e5619646296426ad6b4ee012bcbb1a0ec8a1e0f /chrome
parentb48f3e0db7016ef56bbb35f905ef455586fddaab (diff)
downloadchromium_src-7d4368c56830969fc50d6d9a8eca90fd85974107.zip
chromium_src-7d4368c56830969fc50d6d9a8eca90fd85974107.tar.gz
chromium_src-7d4368c56830969fc50d6d9a8eca90fd85974107.tar.bz2
Parse cpu_idle and cpu_frequency events
Handle power:cpu_idle and power:cpu_frequency events (the power_* events are still parsed but are deprecated). This gives us C-state data again. BUG=chromium-os:27809 TEST=unit tests + collect trace w/ updated debugd systrace.sh on cros and hand-check displayed data Change-Id: Idc29eb729a11d0ef406d8bb2c0a2f71843fae8f3 Review URL: http://codereview.chromium.org/10024042 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@131833 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/resources/tracing/linux_perf_importer.js43
-rw-r--r--chrome/browser/resources/tracing/linux_perf_importer_test.html66
2 files changed, 101 insertions, 8 deletions
diff --git a/chrome/browser/resources/tracing/linux_perf_importer.js b/chrome/browser/resources/tracing/linux_perf_importer.js
index ef70dba..9841172 100644
--- a/chrome/browser/resources/tracing/linux_perf_importer.js
+++ b/chrome/browser/resources/tracing/linux_perf_importer.js
@@ -473,6 +473,49 @@ cr.define('tracing', function() {
powerCounter.timestamps.push(ts);
powerCounter.samples.push(powerState);
break;
+ case 'cpu_frequency':
+ var event = /state=(\d+) cpu_id=(\d)+/.exec(eventBase[5]);
+ if (!event) {
+ this.malformedEvent(eventName);
+ continue;
+ }
+
+ var targetCpuNumber = parseInt(event[2]);
+ var targetCpu = this.getOrCreateCpuState(targetCpuNumber);
+ var powerCounter =
+ targetCpu.cpu.getOrCreateCounter('', 'Clock Frequency');
+ if (powerCounter.numSeries == 0) {
+ powerCounter.seriesNames.push('state');
+ powerCounter.seriesColors.push(
+ tracing.getStringColorId(powerCounter.name + '.' + 'state'));
+ }
+ var powerState = parseInt(event[1]);
+ powerCounter.timestamps.push(ts);
+ powerCounter.samples.push(powerState);
+ break;
+ case 'cpu_idle':
+ var event = /state=(\d+) cpu_id=(\d)+/.exec(eventBase[5]);
+ if (!event) {
+ this.malformedEvent(eventName);
+ continue;
+ }
+
+ var targetCpuNumber = parseInt(event[2]);
+ var targetCpu = this.getOrCreateCpuState(targetCpuNumber);
+ var powerCounter = targetCpu.cpu.getOrCreateCounter('', 'C-State');
+ if (powerCounter.numSeries == 0) {
+ powerCounter.seriesNames.push('state');
+ powerCounter.seriesColors.push(
+ tracing.getStringColorId(powerCounter.name));
+ }
+ var powerState = parseInt(event[1]);
+ // NB: 4294967295/-1 means an exit from the current state
+ if (powerState != 4294967295)
+ powerCounter.samples.push(powerState);
+ else
+ powerCounter.samples.push(0);
+ powerCounter.timestamps.push(ts);
+ break;
case 'workqueue_execute_start':
var event = workqueueExecuteStartRE.exec(eventBase[5]);
if (!event) {
diff --git a/chrome/browser/resources/tracing/linux_perf_importer_test.html b/chrome/browser/resources/tracing/linux_perf_importer_test.html
index b9b5b8b..2d0c6b7 100644
--- a/chrome/browser/resources/tracing/linux_perf_importer_test.html
+++ b/chrome/browser/resources/tracing/linux_perf_importer_test.html
@@ -233,13 +233,13 @@ function testImportWithoutClockSyncDeletesEverything() {
function testWorkQueueImport() {
var lines = [
- 'kworker/0:3-6880 [000] 2784.771958: workqueue_execute_start: ' +
+ ' kworker/0:3-6880 [000] 2784.771958: workqueue_execute_start: ' +
'work struct ffff8800a5083a20: function intel_unpin_work_fn',
- 'kworker/0:3-6880 [000] 2784.771966: workqueue_execute_end: ' +
+ ' kworker/0:3-6880 [000] 2784.771966: workqueue_execute_end: ' +
'work struct ffff8800a5083a20',
- 'kworker/1:2-7269 [001] 2784.805966: workqueue_execute_start: ' +
+ ' kworker/1:2-7269 [001] 2784.805966: workqueue_execute_start: ' +
'work struct ffff88014fb0f158: function do_dbs_timer',
- 'kworker/1:2-7269 [001] 2784.805975: workqueue_execute_end: ' +
+ ' kworker/1:2-7269 [001] 2784.805975: workqueue_execute_end: ' +
'work struct ffff88014fb0f158'
];
var m = new tracing.TimelineModel(lines.join('\n'), false);
@@ -252,13 +252,13 @@ function testWorkQueueImport() {
function testPowerStartImport() {
}
-function testCpuFrequencyImport() {
+function testPowerFrequencyImport() {
var lines = [
- 'kworker/0:3-6880 [000] 2784.783015: power_frequency: ' +
+ ' kworker/0:3-6880 [000] 2784.783015: power_frequency: ' +
'type=2 state=1000000 cpu_id=0',
- 'kworker/1:2-7269 [001] 2784.788993: power_frequency: ' +
+ ' kworker/1:2-7269 [001] 2784.788993: power_frequency: ' +
'type=2 state=800000 cpu_id=1',
- 'kworker/1:2-7269 [001] 2784.993120: power_frequency: ' +
+ ' kworker/1:2-7269 [001] 2784.993120: power_frequency: ' +
'type=2 state=1300000 cpu_id=1'
];
var m = new tracing.TimelineModel(lines.join('\n'), false);
@@ -273,6 +273,56 @@ function testCpuFrequencyImport() {
assertEquals(2, c1.counters['Power Frequency'].samples.length);
}
+function testCpuFrequencyImport() {
+ var lines = [
+ ' kworker/1:0-9665 [001] 15051.007301: cpu_frequency: ' +
+ 'state=800000 cpu_id=1',
+ ' kworker/1:0-9665 [001] 15051.010278: cpu_frequency: ' +
+ 'state=1300000 cpu_id=1',
+ ' kworker/0:2-7972 [000] 15051.010278: cpu_frequency: ' +
+ 'state=1000000 cpu_id=0',
+ ' kworker/0:2-7972 [000] 15051.020304: cpu_frequency: ' +
+ 'state=800000 cpu_id=0'
+ ];
+ var m = new tracing.TimelineModel(lines.join('\n'), false);
+ assertEquals(0, m.importErrors.length);
+
+ var c0 = m.cpus[0];
+ assertEquals(0, c0.slices.length);
+ assertEquals(2, c0.counters['Clock Frequency'].samples.length);
+
+ var c1 = m.cpus[1];
+ assertEquals(0, c1.slices.length);
+ assertEquals(2, c1.counters['Clock Frequency'].samples.length);
+}
+
+function testCpuIdleImport() {
+ var lines = [
+ ' <idle>-0 [000] 15050.992883: cpu_idle: ' +
+ 'state=1 cpu_id=0',
+ ' <idle>-0 [000] 15050.993027: cpu_idle: ' +
+ 'state=4294967295 cpu_id=0',
+ ' <idle>-0 [001] 15050.993132: cpu_idle: ' +
+ 'state=1 cpu_id=1',
+ ' <idle>-0 [001] 15050.993276: cpu_idle: ' +
+ 'state=4294967295 cpu_id=1',
+ ' <idle>-0 [001] 15050.993279: cpu_idle: ' +
+ 'state=3 cpu_id=1',
+ ' <idle>-0 [001] 15050.993457: cpu_idle: ' +
+ 'state=4294967295 cpu_id=1',
+ ];
+ var m = new tracing.TimelineModel(lines.join('\n'), false);
+ assertEquals(0, m.importErrors.length);
+
+ var c0 = m.cpus[0];
+ assertEquals(0, c0.slices.length);
+ assertEquals(2, c0.counters['C-State'].samples.length);
+
+ var c1 = m.cpus[1];
+ assertEquals(0, c1.slices.length);
+ assertEquals(4, c1.counters['C-State'].samples.length);
+}
+
function testi915Import() {
var lines = [
' chrome-1223 [000] 2784.773556: i915_gem_object_pwrite: ' +