From 3d662c390fa7908b4366e0b1a77298fc67178f3e Mon Sep 17 00:00:00 2001 From: "jamesr@chromium.org" Date: Wed, 25 Apr 2012 00:05:17 +0000 Subject: Show gpu process stats in about:tcmalloc BUG=123939 TEST=launch GPU process by navigating to a page requiring it. open about:tcmalloc. refresh. see GPU process memory information Review URL: http://codereview.chromium.org/10041017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@133816 0039d316-1c4b-4281-b951-d872f2087c98 --- content/browser/tcmalloc_internals_request_job.h | 64 ++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 content/browser/tcmalloc_internals_request_job.h (limited to 'content/browser/tcmalloc_internals_request_job.h') diff --git a/content/browser/tcmalloc_internals_request_job.h b/content/browser/tcmalloc_internals_request_job.h new file mode 100644 index 0000000..a602d8f --- /dev/null +++ b/content/browser/tcmalloc_internals_request_job.h @@ -0,0 +1,64 @@ +// 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. + +#ifndef CONTENT_BROWSER_TCMALLOC_INTERNALS_REQUEST_JOB_H_ +#define CONTENT_BROWSER_TCMALLOC_INTERNALS_REQUEST_JOB_H_ +#pragma once + +#include +#include "base/basictypes.h" +#include "base/memory/singleton.h" +#include "base/process.h" +#include "build/build_config.h" // USE_TCMALLOC +#include "content/public/common/process_type.h" +#include "net/url_request/url_request_simple_job.h" + +namespace content { + +class AboutTcmallocOutputs { + public: + // Returns the singleton instance. + static AboutTcmallocOutputs* GetInstance(); + + // Records the output for a specified header string. + void SetOutput(const std::string& header, const std::string& output); + + void DumpToHTMLTable(std::string* data); + + // Callback for output returned from a child process. Adds + // the output for a canonical process-specific header string that + // incorporates the pid. + void OnStatsForChildProcess(base::ProcessId pid, + ProcessType process_type, + const std::string& output); + + private: + AboutTcmallocOutputs(); + ~AboutTcmallocOutputs(); + + // A map of header strings (e.g. "Browser", "Renderer PID 123") + // to the tcmalloc output collected for each process. + typedef std::map AboutTcmallocOutputsType; + AboutTcmallocOutputsType outputs_; + + friend struct DefaultSingletonTraits; + + DISALLOW_COPY_AND_ASSIGN(AboutTcmallocOutputs); +}; + +class TcmallocInternalsRequestJob : public net::URLRequestSimpleJob { + public: + explicit TcmallocInternalsRequestJob(net::URLRequest* request); + + virtual bool GetData(std::string* mime_type, + std::string* charset, + std::string* data) const OVERRIDE; + + private: + DISALLOW_IMPLICIT_CONSTRUCTORS(TcmallocInternalsRequestJob); +}; + +} // namespace content + +#endif // CONTENT_BROWSER_TCMALLOC_INTERNALS_REQUEST_JOB_H_ -- cgit v1.1