mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
GH-128842: Collect JIT memory stats (GH-128941)
This commit is contained in:
parent
e6c76b947b
commit
567394517a
6 changed files with 117 additions and 8 deletions
|
@ -87,6 +87,7 @@ jit_free(unsigned char *memory, size_t size)
|
|||
jit_error("unable to free memory");
|
||||
return -1;
|
||||
}
|
||||
OPT_STAT_ADD(jit_freed_memory_size, size);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -510,6 +511,13 @@ _PyJIT_Compile(_PyExecutorObject *executor, const _PyUOpInstruction trace[], siz
|
|||
#ifdef MAP_JIT
|
||||
pthread_jit_write_protect_np(0);
|
||||
#endif
|
||||
// Collect memory stats
|
||||
OPT_STAT_ADD(jit_total_memory_size, total_size);
|
||||
OPT_STAT_ADD(jit_code_size, code_size);
|
||||
OPT_STAT_ADD(jit_trampoline_size, state.trampolines.size);
|
||||
OPT_STAT_ADD(jit_data_size, data_size);
|
||||
OPT_STAT_ADD(jit_padding_size, padding);
|
||||
OPT_HIST(total_size, trace_total_memory_hist);
|
||||
// Update the offsets of each instruction:
|
||||
for (size_t i = 0; i < length; i++) {
|
||||
state.instruction_starts[i] += (uintptr_t)memory;
|
||||
|
|
|
@ -309,6 +309,14 @@ print_optimization_stats(FILE *out, OptimizationStats *stats)
|
|||
);
|
||||
}
|
||||
}
|
||||
fprintf(out, "JIT total memory size: %" PRIu64 "\n", stats->jit_total_memory_size);
|
||||
fprintf(out, "JIT code size: %" PRIu64 "\n", stats->jit_code_size);
|
||||
fprintf(out, "JIT trampoline size: %" PRIu64 "\n", stats->jit_trampoline_size);
|
||||
fprintf(out, "JIT data size: %" PRIu64 "\n", stats->jit_data_size);
|
||||
fprintf(out, "JIT padding size: %" PRIu64 "\n", stats->jit_padding_size);
|
||||
fprintf(out, "JIT freed memory size: %" PRIu64 "\n", stats->jit_freed_memory_size);
|
||||
|
||||
print_histogram(out, "Trace total memory size", stats->trace_total_memory_hist);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue