aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2017-12-06 15:05:26 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-12-06 21:25:29 +0000
commitbbfe51547439fd02265c9775115001033f9312c1 (patch)
treea12b8de211c48e5a8ccd03774f9bafce063a9c75 /tools
parent7f4dd6cc079f9a7389a3d962e4588a6e9383cfdd (diff)
remove ThermalManager
It throttles 1000x more than intended, and I suspect that some of the trip points it uses to decide when to throttle make no sense. We've already turned it off on the Nexus 5x. Change-Id: Idf556a83fe61ccc5f63c7bede3eecbe80087e28b Reviewed-on: https://skia-review.googlesource.com/81303 Reviewed-by: Kevin Lubick <kjlubick@google.com> Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/ThermalManager.cpp113
-rw-r--r--tools/ThermalManager.h61
2 files changed, 0 insertions, 174 deletions
diff --git a/tools/ThermalManager.cpp b/tools/ThermalManager.cpp
deleted file mode 100644
index e0c7c44c69..0000000000
--- a/tools/ThermalManager.cpp
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright 2016 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "ThermalManager.h"
-
-#include "SkOSFile.h"
-
-#include <stdio.h>
-
-#ifndef SK_BUILD_FOR_WIN32
- #include <unistd.h>
-#endif
-
-#ifdef THERMAL_MANAGER_SUPPORTED
-
-/*
- * ThermalManager is completely dependent on sysfs to monitor thermal temperatures. In sysfs
- * thermal management is controlled by a number of thermal zones. They are laid out as follows:
- * /sys/class/thermal/thermal_zoneN where N is the number of the thermal zone starting at 0.
- *
- * Inside each thermal_zone folder is a file called 'temp,' which has the current temperature
- * reading from the sensor in that zone, as well as 0 or more files called 'trip_point_N_temp.'
- *
- * When the reading in temp is greater than one of the numbers in the trip_point files, then the
- * kernel will take some kind of action. This is all documented online.
- *
- * In any case, the goal of this class is to sleep right before a trip point is about to be
- * triggered, thus naturally cooling the system and preventing thermal throttling.
- */
-
-ThermalManager::ThermalManager(int32_t threshold, uint32_t sleepIntervalMs, uint32_t timeoutMs)
- : fSleepIntervalMs(sleepIntervalMs)
- , fTimeoutMs(timeoutMs) {
- static const char* kThermalZonePath = "/sys/class/thermal/";
- SkOSFile::Iter it(kThermalZonePath);
- SkString path;
- while (it.next(&path, true)) {
- if (!path.contains("thermal_zone")) {
- continue;
- }
-
- SkString fullPath(kThermalZonePath);
- fullPath.append(path);
- SkOSFile::Iter thermalZoneIt(fullPath.c_str());
-
- SkString filename;
- while (thermalZoneIt.next(&filename)) {
- if (!(filename.contains("trip_point") && filename.contains("temp"))) {
- continue;
- }
-
- fTripPoints.push_back(TripPoint(fullPath, filename, threshold));
- }
- }
-}
-
-bool ThermalManager::coolOffIfNecessary() {
- uint32_t i = 0, totalTimeSleptMs = 0;
- while (i < (uint32_t)fTripPoints.count() && totalTimeSleptMs < fTimeoutMs) {
- if (fTripPoints[i].willTrip()) {
- sleep(fSleepIntervalMs);
- totalTimeSleptMs += fSleepIntervalMs;
- } else {
- i++;
- }
- }
-
- return totalTimeSleptMs < fTimeoutMs;
-}
-
-int32_t ThermalManager::OpenFileAndReadInt32(const char* path) {
- FILE* tempFile = fopen(path, "r");
- SkASSERT(tempFile);
- int32_t value;
- int ret = fscanf(tempFile, "%d", &value);
- if (!ret) {
- SkDebugf("Could not read temperature\n");
- SkASSERT(false);
- }
-
- fclose(tempFile);
- return value;
-}
-
-ThermalManager::TripPoint::TripPoint(SkString thermalZoneRoot, SkString pointName,
- int32_t threshold)
- : fThermalZoneRoot(thermalZoneRoot)
- , fPointName(pointName) {
- SkString fullPath(thermalZoneRoot);
- fullPath.appendf("/%s", pointName.c_str());
- fPoint = OpenFileAndReadInt32(fullPath.c_str());
- fBase = GetTemp(fThermalZoneRoot);
- fThreshold = threshold;
- fDisabled = fBase + fThreshold >= fPoint; // We disable any trip point which start off
- // triggered
-}
-
-bool ThermalManager::TripPoint::willTrip() {
- int32_t currentTemp = GetTemp(fThermalZoneRoot);
- bool wouldTrip = !fDisabled && currentTemp + fThreshold >= fPoint;
-
- if (wouldTrip) {
- SkDebugf("%s/%s would trip {%d,%d,%d,%d}\n", fThermalZoneRoot.c_str(),
- fPointName.c_str(), fBase, currentTemp, fPoint, fThreshold);
- }
- return wouldTrip;
-}
-
-#endif
diff --git a/tools/ThermalManager.h b/tools/ThermalManager.h
deleted file mode 100644
index 747cf52691..0000000000
--- a/tools/ThermalManager.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2016 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef ThermalManager_DEFINED
-#define ThermalManager_DEFINED
-
-#include "../private/SkTArray.h"
-#include "SkString.h"
-
-#if defined(SK_BUILD_FOR_ANDROID) || defined(SK_BUILD_FOR_UNIX)
-# define THERMAL_MANAGER_SUPPORTED
-#endif
-
-#ifdef THERMAL_MANAGER_SUPPORTED
-
-/*
- * This simple class monitors the thermal part of sysfs to ensure we don't trigger thermal events
- */
-
-class ThermalManager {
-public:
- ThermalManager(int32_t threshold, uint32_t sleepIntervalMs, uint32_t timeoutMs);
-
- bool coolOffIfNecessary();
-
-private:
- static int32_t OpenFileAndReadInt32(const char* path);
-
- // current temperature can be read from /thermalZonePath/temp
- static int32_t GetTemp(SkString thermalZonePath) {
- SkString temperatureFilePath(thermalZonePath);
- temperatureFilePath.appendf("/temp");
- return OpenFileAndReadInt32(temperatureFilePath.c_str());
- }
-
- struct TripPoint {
- TripPoint(SkString thermalZoneRoot, SkString pointName, int32_t threshold);
-
- bool willTrip();
-
- SkString fThermalZoneRoot;
- SkString fPointName;
- int32_t fBase;
- int32_t fPoint;
- int32_t fThreshold;
-
- // Certain trip points seem to start tripped. For example, I have seen trip points of 0 or
- // negative numbers.
- bool fDisabled;
- };
-
- SkTArray<TripPoint> fTripPoints;
- uint32_t fSleepIntervalMs;
- uint32_t fTimeoutMs;
-};
-#endif
-#endif