Skip to content
Snippets Groups Projects
  1. May 23, 2023
  2. Mar 28, 2023
    • Emilio Cota's avatar
      util: import GTree as QTree · e3feb2cc
      Emilio Cota authored
      The only reason to add this implementation is to control the memory allocator
      used. Some users (e.g. TCG) cannot work reliably in multi-threaded
      environments (e.g. forking in user-mode) with GTree's allocator, GSlice.
      See https://gitlab.com/qemu-project/qemu/-/issues/285
      
       for details.
      
      Importing GTree is a temporary workaround until GTree migrates away
      from GSlice.
      
      This implementation is identical to that in glib v2.75.0, except that
      we don't import recent additions to the API nor deprecated API calls,
      none of which are used in QEMU.
      
      I've imported tests from glib and added a benchmark just to
      make sure that performance is similar. Note: it cannot be identical
      because (1) we are not using GSlice, (2) we use different compilation flags
      (e.g. -fPIC) and (3) we're linking statically.
      
      $ cat /proc/cpuinfo| grep 'model name' | head -1
      model name      : AMD Ryzen 7 PRO 5850U with Radeon Graphics
      $ echo '0' | sudo tee /sys/devices/system/cpu/cpufreq/boost
      $ tests/bench/qtree-bench
      
       Tree         Op      32            1024            4096          131072         1048576
      ------------------------------------------------------------------------------------------------
      GTree     Lookup   83.23           43.08           25.31           19.40           16.22
      QTree     Lookup  113.42 (1.36x)   53.83 (1.25x)   28.38 (1.12x)   17.64 (0.91x)   13.04 (0.80x)
      GTree     Insert   44.23           29.37           25.83           19.49           17.03
      QTree     Insert   46.87 (1.06x)   25.62 (0.87x)   24.29 (0.94x)   16.83 (0.86x)   12.97 (0.76x)
      GTree     Remove   53.27           35.15           31.43           24.64           16.70
      QTree     Remove   57.32 (1.08x)   41.76 (1.19x)   38.37 (1.22x)   29.30 (1.19x)   15.07 (0.90x)
      GTree  RemoveAll  135.44          127.52          126.72          120.11           64.34
      QTree  RemoveAll  127.15 (0.94x)  110.37 (0.87x)  107.97 (0.85x)   97.13 (0.81x)   55.10 (0.86x)
      GTree   Traverse  277.71          276.09          272.78          246.72           98.47
      QTree   Traverse  370.33 (1.33x)  411.97 (1.49x)  400.23 (1.47x)  262.82 (1.07x)   78.52 (0.80x)
      ------------------------------------------------------------------------------------------------
      
      As a sanity check, the same benchmark when Glib's version
      is >= $glib_dropped_gslice_version (i.e. QTree == GTree):
      
       Tree         Op      32            1024            4096          131072         1048576
      ------------------------------------------------------------------------------------------------
      GTree     Lookup   82.72           43.09           24.18           19.73           16.09
      QTree     Lookup   81.82 (0.99x)   43.10 (1.00x)   24.20 (1.00x)   19.76 (1.00x)   16.26 (1.01x)
      GTree     Insert   45.07           29.62           26.34           19.90           17.18
      QTree     Insert   45.72 (1.01x)   29.60 (1.00x)   26.38 (1.00x)   19.71 (0.99x)   17.20 (1.00x)
      GTree     Remove   54.48           35.36           31.77           24.97           16.95
      QTree     Remove   54.46 (1.00x)   35.32 (1.00x)   31.77 (1.00x)   24.91 (1.00x)   17.15 (1.01x)
      GTree  RemoveAll  140.68          127.36          125.43          121.45           68.20
      QTree  RemoveAll  140.65 (1.00x)  127.64 (1.00x)  125.01 (1.00x)  121.73 (1.00x)   67.06 (0.98x)
      GTree   Traverse  278.68          276.05          266.75          251.65          104.93
      QTree   Traverse  278.31 (1.00x)  275.78 (1.00x)  266.42 (1.00x)  247.89 (0.99x)  104.58 (1.00x)
      ------------------------------------------------------------------------------------------------
      
      Signed-off-by: default avatarEmilio Cota <cota@braap.org>
      Message-Id: <20230205163758.416992-2-cota@braap.org>
      Signed-off-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      e3feb2cc
  3. Feb 11, 2023
  4. Dec 14, 2022
    • Markus Armbruster's avatar
      cleanup: Tweak and re-run return_directly.cocci · 66997c42
      Markus Armbruster authored
      
      Tweak the semantic patch to drop redundant parenthesis around the
      return expression.
      
      Coccinelle drops a comment in hw/rdma/vmw/pvrdma_cmd.c; restored
      manually.
      
      Coccinelle messes up vmdk_co_create(), not sure why.  Change dropped,
      will be done manually in the next commit.
      
      Line breaks in target/avr/cpu.h and hw/rdma/vmw/pvrdma_cmd.c tidied up
      manually.
      
      Whitespace in tools/virtiofsd/fuse_lowlevel.c tidied up manually.
      
      checkpatch.pl complains "return of an errno should typically be -ve"
      two times for hw/9pfs/9p-synth.c.  Preexisting, the patch merely makes
      it visible to checkpatch.pl.
      
      Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Message-Id: <20221122134917.1217307-2-armbru@redhat.com>
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@linaro.org>
      Acked-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
      66997c42
  5. May 26, 2022
  6. Mar 07, 2022
  7. Mar 12, 2021
Loading