diff options
author | halcanary <halcanary@google.com> | 2014-08-11 11:33:51 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-08-11 11:33:51 -0700 |
commit | 0d154eeaebc640b7bd83e0b212fac22587610a4b (patch) | |
tree | 51ad02bda3d0a787b7b4df0f57bc9b91c710a7f3 /tools | |
parent | d3ddea284ec6611a93a6b75e64de39d0bc7e083c (diff) |
Process Statistics header, add max RSS to render_pdfs
Committed: https://skia.googlesource.com/skia/+/6274baae7fe82ce6481da367687aa6168356e1e1
R=mtklein@google.com
Author: halcanary@google.com
Review URL: https://codereview.chromium.org/448993003
Diffstat (limited to 'tools')
-rw-r--r-- | tools/ProcStats.cpp | 31 | ||||
-rw-r--r-- | tools/ProcStats.h | 25 | ||||
-rw-r--r-- | tools/render_pdfs_main.cpp | 10 |
3 files changed, 65 insertions, 1 deletions
diff --git a/tools/ProcStats.cpp b/tools/ProcStats.cpp new file mode 100644 index 0000000000..94660394f8 --- /dev/null +++ b/tools/ProcStats.cpp @@ -0,0 +1,31 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "ProcStats.h" + +#if defined(SK_BUILD_FOR_UNIX) || \ + defined(SK_BUILD_FOR_MAC) || \ + defined(SK_BUILD_FOR_ANDROID) + + #include <sys/resource.h> + int sk_tools::getMaxResidentSetSizeKB() { + struct rusage ru; + getrusage(RUSAGE_SELF, &ru); + #if defined(SK_BUILD_FOR_MAC) + return static_cast<int>(ru.ru_maxrss / 1024); // Darwin reports bytes. + #else + return static_cast<int>(ru.ru_maxrss); // Linux reports kilobytes. + #endif + } + +#else + + int sk_tools::getMaxResidentSetSizeKB() { + return -1; + } + +#endif diff --git a/tools/ProcStats.h b/tools/ProcStats.h new file mode 100644 index 0000000000..42849f1401 --- /dev/null +++ b/tools/ProcStats.h @@ -0,0 +1,25 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef ProcStats_DEFINED +#define ProcStats_DEFINED + +/** + * ProcStats - Process Statistics Functions + */ + +namespace sk_tools { + +/** + * If not implemented for this OS, returns -1. Otherwise, return + * the maximum resident set size, as reported by getrusage(). + */ +int getMaxResidentSetSizeKB(); + +} // namespace sk_tools + +#endif // ProcStats_DEFINED diff --git a/tools/render_pdfs_main.cpp b/tools/render_pdfs_main.cpp index be294399ec..34e5e58f53 100644 --- a/tools/render_pdfs_main.cpp +++ b/tools/render_pdfs_main.cpp @@ -18,6 +18,7 @@ #include "SkTArray.h" #include "SkTSort.h" #include "PdfRenderer.h" +#include "ProcStats.h" #include "picture_utils.h" __SK_FORCE_IMAGE_DECODER_LINKING; @@ -219,7 +220,9 @@ static int process_input( } } } - SkTQSort<SkString>(files.begin(), files.end() - 1); + if (files.count() > 0) { + SkTQSort<SkString>(files.begin(), files.end() - 1); + } int failures = 0; for (int i = 0; i < files.count(); i ++) { if (!render_pdf(files[i], outputDir, renderer)) { @@ -246,6 +249,11 @@ int tool_main_core(int argc, char** argv) { int failures = process_input(FLAGS_inputPaths, outputDir, *renderer); + int max_rss_kb = sk_tools::getMaxResidentSetSizeKB(); + if (max_rss_kb >= 0) { + SkDebugf("%4dM peak ResidentSetSize\n", max_rss_kb / 1024); + } + if (failures != 0) { SkDebugf("Failed to render %i PDFs.\n", failures); return 1; |