| Index: tools/android/device_stats_monitor/device_stats_monitor.cc
|
| diff --git a/tools/android/device_stats_monitor/device_stats_monitor.cc b/tools/android/device_stats_monitor/device_stats_monitor.cc
|
| deleted file mode 100644
|
| index ef2fee9d9e09de2cb61ba1e9e067bd7b7685b86a..0000000000000000000000000000000000000000
|
| --- a/tools/android/device_stats_monitor/device_stats_monitor.cc
|
| +++ /dev/null
|
| @@ -1,108 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// Dumps CPU and IO stats to a file at a regular interval.
|
| -//
|
| -// Output may be post processed by host to get top/iotop style information.
|
| -
|
| -#include <signal.h>
|
| -#include <unistd.h>
|
| -
|
| -#include <fstream>
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "base/command_line.h"
|
| -#include "base/file_util.h"
|
| -#include "base/strings/string_split.h"
|
| -
|
| -namespace {
|
| -
|
| -const char kIOStatsPath[] = "/proc/diskstats";
|
| -const char kCPUStatsPath[] = "/proc/stat";
|
| -
|
| -class DeviceStatsMonitor {
|
| - public:
|
| - explicit DeviceStatsMonitor(const std::string& out_path)
|
| - : out_path_(out_path),
|
| - record_(true) {
|
| - CHECK(!out_path_.empty());
|
| - samples_.reserve(1024 * 1024);
|
| - }
|
| -
|
| - // Records stats continuously at |hz| cycles per second util
|
| - // StopRecordingAndDumpStats() is called.
|
| - //
|
| - // Yes, this buffers everything in memory, so it cannot be used for extended
|
| - // durations without OOM. But that beats writing during the trace which
|
| - // would affect the results.
|
| - void Start(int hz) {
|
| - const int sample_interval = 1000000 / hz;
|
| - const base::FilePath io_stats_path(kIOStatsPath);
|
| - const base::FilePath cpu_stats_path(kCPUStatsPath);
|
| - std::string out;
|
| - while (record_) {
|
| - out.clear();
|
| - CHECK(base::ReadFileToString(io_stats_path, &out));
|
| - CHECK(base::ReadFileToString(cpu_stats_path, &out));
|
| - samples_.push_back(out);
|
| - usleep(sample_interval);
|
| - }
|
| - }
|
| -
|
| - // Stops recording and saves samples to file.
|
| - void StopAndDumpStats() {
|
| - record_ = false;
|
| - usleep(250 * 1000);
|
| - std::ofstream out_stream;
|
| - out_stream.open(out_path_.value().c_str(), std::ios::out);
|
| - for (std::vector<std::string>::const_iterator i = samples_.begin();
|
| - i != samples_.end(); ++i) {
|
| - out_stream << i->c_str() << std::endl;
|
| - }
|
| - out_stream.close();
|
| - }
|
| -
|
| - private:
|
| - const base::FilePath out_path_;
|
| - std::vector<std::string> samples_;
|
| - bool record_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(DeviceStatsMonitor);
|
| -};
|
| -
|
| -DeviceStatsMonitor* g_device_stats_monitor = NULL;
|
| -
|
| -void SigTermHandler(int unused) {
|
| - printf("Stopping device stats monitor\n");
|
| - g_device_stats_monitor->StopAndDumpStats();
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -int main(int argc, char** argv) {
|
| - const int kDefaultHz = 20;
|
| -
|
| - CommandLine command_line(argc, argv);
|
| - CommandLine::StringVector args = command_line.GetArgs();
|
| - if (command_line.HasSwitch("h") || command_line.HasSwitch("help") ||
|
| - args.size() != 1) {
|
| - printf("Usage: %s OUTPUT_FILE\n"
|
| - " --hz=HZ Number of samples/second. default=%d\n",
|
| - argv[0], kDefaultHz);
|
| - return 1;
|
| - }
|
| -
|
| - int hz = command_line.HasSwitch("hz") ?
|
| - atoi(command_line.GetSwitchValueNative("hz").c_str()) :
|
| - kDefaultHz;
|
| -
|
| - printf("Starting device stats monitor\n");
|
| - g_device_stats_monitor = new DeviceStatsMonitor(args[0]);
|
| - signal(SIGTERM, SigTermHandler);
|
| - g_device_stats_monitor->Start(hz);
|
| - delete g_device_stats_monitor;
|
| -
|
| - return 0;
|
| -}
|
|
|