mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-23 21:01:08 +00:00
Bug 1670188 - pt 2. Add a tool that prints the run lengths for size classes r=glandium
This new program prints the jemalloc configuration, it is only built for --enable-project=memory Differential Revision: https://phabricator.services.mozilla.com/D93184
This commit is contained in:
parent
790088fdb7
commit
96d3e53990
@ -4330,6 +4330,7 @@ inline void MozJemalloc::jemalloc_stats_internal(
|
||||
aBinStats[j].bytes_unused += bin_unused;
|
||||
aBinStats[j].bytes_total +=
|
||||
bin->mNumRuns * (bin->mRunSize - bin->mRunFirstRegionOffset);
|
||||
aBinStats[j].bytes_per_run = bin->mRunSize;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -106,7 +106,7 @@ typedef struct {
|
||||
size_t num_runs; // The number of runs in this bin
|
||||
size_t bytes_unused; // The unallocated bytes across all these bins
|
||||
size_t bytes_total; // The total storage area for runs in this bin,
|
||||
// excluding headers..
|
||||
size_t bytes_per_run; // The number of bytes per run, including headers.
|
||||
} jemalloc_bin_stats_t;
|
||||
|
||||
#define JEMALLOC_MAX_STATS_BINS 40
|
||||
|
@ -11,8 +11,12 @@ DIRS += [
|
||||
"build",
|
||||
]
|
||||
|
||||
# For now, don't build mozalloc when building with --enable-project=memory
|
||||
if CONFIG["MOZ_BUILD_APP"] != "memory":
|
||||
if CONFIG["MOZ_BUILD_APP"] == "memory":
|
||||
DIRS += [
|
||||
"mozjemalloc_info",
|
||||
]
|
||||
else:
|
||||
# For now, don't build mozalloc when building with --enable-project=memory
|
||||
DIRS += [
|
||||
"mozalloc",
|
||||
]
|
||||
|
39
memory/mozjemalloc_info/MozjemallocInfo.cpp
Normal file
39
memory/mozjemalloc_info/MozjemallocInfo.cpp
Normal file
@ -0,0 +1,39 @@
|
||||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "mozmemory.h"
|
||||
|
||||
/*
|
||||
* Print the configured size classes which we can then use to update
|
||||
* documentation.
|
||||
*/
|
||||
int main() {
|
||||
jemalloc_stats_t stats;
|
||||
jemalloc_bin_stats_t bin_stats[JEMALLOC_MAX_STATS_BINS];
|
||||
|
||||
jemalloc_stats(&stats, bin_stats);
|
||||
|
||||
printf("Page size: %5zu\n", stats.page_size);
|
||||
printf("Chunk size: %5zuKiB\n", stats.chunksize / 1024);
|
||||
|
||||
printf("Quantum: %5zu\n", stats.quantum);
|
||||
printf("Quantum max: %5zu\n", stats.quantum_max);
|
||||
printf("Sub-page max: %5zu\n", stats.page_size / 2);
|
||||
printf("Large max: %5zuKiB\n", stats.large_max / 1024);
|
||||
|
||||
printf("\nBin stats:\n");
|
||||
for (auto& bin : bin_stats) {
|
||||
if (bin.size) {
|
||||
printf(" Bin %5zu has runs of %3zuKiB\n", bin.size,
|
||||
bin.bytes_per_run / 1024);
|
||||
}
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
26
memory/mozjemalloc_info/moz.build
Normal file
26
memory/mozjemalloc_info/moz.build
Normal file
@ -0,0 +1,26 @@
|
||||
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||
# vim: set filetype=python:
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
Program("mozjemalloc-info")
|
||||
|
||||
SOURCES += [
|
||||
"/mfbt/Assertions.cpp",
|
||||
"/mfbt/RandomNum.cpp",
|
||||
"MozjemallocInfo.cpp",
|
||||
]
|
||||
|
||||
# Link replace-malloc and the default allocator.
|
||||
USE_LIBS += [
|
||||
"memory",
|
||||
]
|
||||
|
||||
# The memory library defines this, so it's needed here too.
|
||||
DEFINES["IMPL_MFBT"] = True
|
||||
|
||||
if CONFIG["MOZ_NEEDS_LIBATOMIC"]:
|
||||
OS_LIBS += ["atomic"]
|
||||
|
||||
DisableStlWrapping()
|
Loading…
Reference in New Issue
Block a user