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_unused += bin_unused;
|
||||||
aBinStats[j].bytes_total +=
|
aBinStats[j].bytes_total +=
|
||||||
bin->mNumRuns * (bin->mRunSize - bin->mRunFirstRegionOffset);
|
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 num_runs; // The number of runs in this bin
|
||||||
size_t bytes_unused; // The unallocated bytes across all these bins
|
size_t bytes_unused; // The unallocated bytes across all these bins
|
||||||
size_t bytes_total; // The total storage area for runs in this bin,
|
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;
|
} jemalloc_bin_stats_t;
|
||||||
|
|
||||||
#define JEMALLOC_MAX_STATS_BINS 40
|
#define JEMALLOC_MAX_STATS_BINS 40
|
||||||
|
@ -11,8 +11,12 @@ DIRS += [
|
|||||||
"build",
|
"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 += [
|
DIRS += [
|
||||||
"mozalloc",
|
"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