diff options
| author | Kevin Frei <kevinfrei@users.noreply.github.com> | 2024-07-02 10:14:26 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-02 10:14:26 -0700 |
| commit | 60cd3eb880fe48d192a58c64a1e38e875fc65377 (patch) | |
| tree | c2b04f1136f452d1b057fb3fa2e2315d210092a5 /lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp | |
| parent | e94a00c3b8bf81fcd441c868644612fc887c7170 (diff) | |
| download | llvm-60cd3eb880fe48d192a58c64a1e38e875fc65377.zip llvm-60cd3eb880fe48d192a58c64a1e38e875fc65377.tar.gz llvm-60cd3eb880fe48d192a58c64a1e38e875fc65377.tar.bz2 | |
Reduce llvm-gsymutil memory usage (#91023)
llvm-gsymutil eats a lot of RAM. On some large binaries, it causes OOM's on smaller hardware, consuming well over 64GB of RAM. This change frees line tables once we're done with them, and frees DWARFUnits's DIE's when we finish processing each DU, though they may get reconstituted if there are references from other DU's during processing. Once the conversion is complete, all DIE's are freed. The reduction in peak memory usage from these changes showed between 7-12% in my tests.
The double-checked locking around the creation & freeing of the data structures was tested on a 166 core system. I validated that it trivially malfunctioned without the locks (and with stupid reordering of the locks) and worked reliably with them.
---------
Co-authored-by: Kevin Frei <freik@meta.com>
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp')
0 files changed, 0 insertions, 0 deletions
