aboutsummaryrefslogtreecommitdiff
path: root/trappy/pid_controller.py
diff options
context:
space:
mode:
authorJavi Merino <javi.merino@arm.com>2015-08-10 15:59:10 +0100
committerJavi Merino <javi.merino@arm.com>2015-08-13 18:59:58 +0100
commit435457c8af9d69383ba45e0bd7da022d967a8dea (patch)
treec591b2b6494bf95fbe25006503f4c0cf9870cf6e /trappy/pid_controller.py
parentdea8e9d314e5b0f9213c5f3ecf87ef4369537082 (diff)
downloadtrappy-435457c8af9d69383ba45e0bd7da022d967a8dea.tar.gz
trappy: rename to trappy
Change-Id: I7e0e34c9f5565e34629683bb29ab25cf5e737088
Diffstat (limited to 'trappy/pid_controller.py')
-rw-r--r--trappy/pid_controller.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/trappy/pid_controller.py b/trappy/pid_controller.py
new file mode 100644
index 0000000..714f513
--- /dev/null
+++ b/trappy/pid_controller.py
@@ -0,0 +1,43 @@
+# Copyright 2015-2015 ARM Limited
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+"""Process the output of the power allocator's PID controller in the
+current directory's trace.dat"""
+
+from trappy.base import Base
+from trappy.run import Run
+from trappy.plot_utils import normalize_title, pre_plot_setup, post_plot_setup
+
+class PIDController(Base):
+ """Process the power allocator PID controller data in a ftrace dump"""
+
+ name = "pid_controller"
+
+ def __init__(self):
+ super(PIDController, self).__init__(
+ unique_word="thermal_power_allocator_pid",
+ )
+
+ def plot_controller(self, title="", width=None, height=None, ax=None):
+ """Plot a summary of the controller data"""
+ title = normalize_title("PID", title)
+
+ if not ax:
+ ax = pre_plot_setup(width, height)
+
+ self.data_frame[["output", "p", "i", "d"]].plot(ax=ax)
+ post_plot_setup(ax, title=title)
+
+Run.register_class(PIDController, "thermal")