[Lldb-commits] [PATCH] D113789: Add the ability to cache information for a module between debugger instances.

Greg Clayton via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Mon Nov 15 16:52:08 PST 2021


clayborg added a comment.

Some perf numbers that involve loading a large iOS Application and all of its shared libraries without caching first and then with caching are found below. The "lldb-perf.py" command will start a timer, run any LLDB commands and then stop the timer and print out. Before the first run, I run "sudo purge" to purge the kernel file cache, and then I run one "cold" run with the file caches being empty. Then I run the same thing again with hot file caches. So the first run is always slower.

First run with no cache enabled:

  $ lldb-perf.py --lldb /Users/gclayton/Documents/src/llvm/main-clean/Release/bin/lldb --command 'file Facebook.app'
  ------------------------------------------------------------------------
  Cold file cache run:
  ------------------------------------------------------------------------
  (lldb) script import time; start_time = time.perf_counter()
  (lldb) file Facebook.app
  Current executable set to 'Facebook.app' (x86_64).
  (lldb) script print(time.perf_counter() - start_time)
  10.961282056
  (lldb) quit
  ------------------------------------------------------------------------
  Warm file cache run:
  ------------------------------------------------------------------------
  (lldb) script import time; start_time = time.perf_counter()
  (lldb) file Facebook.app
  Current executable set to 'Facebook.app' (x86_64).
  (lldb) script print(time.perf_counter() - start_time)
  6.4026089829999995
  (lldb) quit
  ------------------------------------------------------------------------
  Warm file cache run:
  ------------------------------------------------------------------------
  (lldb) script import time; start_time = time.perf_counter()
  (lldb) file Facebook.app
  Current executable set to 'Facebook.app' (x86_64).
  (lldb) script print(time.perf_counter() - start_time)
  6.43446597
  (lldb) quit

Second run with caching enabled:

  $ lldb-perf.py --lldb /Users/gclayton/Documents/src/llvm/main-clean/Release/bin/lldb --command 'settings set symbols.enable-lldb-modules-cache true' --command 'file Facebook.app'
  ------------------------------------------------------------------------
  Cold file cache run:
  ------------------------------------------------------------------------
  (lldb) script import time; start_time = time.perf_counter()
  (lldb) settings set symbols.enable-lldb-modules-cache true
  (lldb) file Facebook.app
  Current executable set to 'Facebook.app' (x86_64).
  (lldb) script print(time.perf_counter() - start_time)
  9.102131989
  (lldb) quit
  ------------------------------------------------------------------------
  Warm file cache run:
  ------------------------------------------------------------------------
  (lldb) script import time; start_time = time.perf_counter()
  (lldb) settings set symbols.enable-lldb-modules-cache true
  (lldb) file Facebook.app
  Current executable set to 'Facebook.app' (x86_64).
  (lldb) script print(time.perf_counter() - start_time)
  4.374525497
  (lldb) quit
  ------------------------------------------------------------------------
  Warm file cache run:
  ------------------------------------------------------------------------
  (lldb) script import time; start_time = time.perf_counter()
  (lldb) settings set symbols.enable-lldb-modules-cache true
  (lldb) file Facebook.app
  Current executable set to 'Facebook.app' (x86_64).
  (lldb) script print(time.perf_counter() - start_time)
  4.353001629
  (lldb) quit

Results from one large project:
20% faster for cold file caches
47% faster for warm file caches


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113789/new/

https://reviews.llvm.org/D113789



More information about the lldb-commits mailing list