aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
diff options
context:
space:
mode:
authorKevin Frei <kevinfrei@users.noreply.github.com>2024-07-02 10:14:26 -0700
committerGitHub <noreply@github.com>2024-07-02 10:14:26 -0700
commit60cd3eb880fe48d192a58c64a1e38e875fc65377 (patch)
treec2b04f1136f452d1b057fb3fa2e2315d210092a5 /lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
parente94a00c3b8bf81fcd441c868644612fc887c7170 (diff)
downloadllvm-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