qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 14/17] translate-all: protect TB jumps with a


From: Alex Bennée
Subject: Re: [Qemu-devel] [PATCH v2 14/17] translate-all: protect TB jumps with a per-destination-TB lock
Date: Fri, 20 Apr 2018 17:13:03 +0100
User-agent: mu4e 1.1.0; emacs 26.1

Emilio G. Cota <address@hidden> writes:

> This applies to both user-mode and !user-mode emulation.
>
> Instead of relying on a global lock, protect the list of incoming
> jumps with tb->jmp_lock. This lock also protects tb->cflags,
> so update all tb->cflags readers outside tb->jmp_lock to use
> atomic reads via tb_cflags().
>
> In order to find the destination TB (and therefore its jmp_lock)
> from the origin TB, we introduce tb->jmp_dest[].
>
> I considered not using a linked list of jumps, which simplifies
> code and makes the struct smaller. However, it unnecessarily increases
> memory usage, which results in a performance decrease. See for
> instance these numbers booting+shutting down debian-arm:
>                       Time (s)  Rel. err (%)  Abs. err (s)  Rel. slowdown (%)
> ------------------------------------------------------------------------------
>  before                  20.88          0.74      0.154512                 0.
>  after                   20.81          0.38      0.079078        -0.33524904
>  GTree                   21.02          0.28      0.058856         0.67049808
>  GHashTable + xxhash     21.63          1.08      0.233604          3.5919540
>
> Using a hash table or a binary tree to keep track of the jumps
> doesn't really pay off, not only due to the increased memory usage,
> but also because most TBs have only 0 or 1 jumps to them. The maximum
> number of jumps when booting debian-arm that I measured is 35, but
> as we can see in the histogram below a TB with that many incoming jumps
> is extremely rare; the average TB has 0.80 incoming jumps.
>
> n_jumps: 379208; avg jumps/tb: 0.801099
> dist: [0.0,1.0)|▄█▁▁▁▁▁▁▁▁▁▁▁ ▁▁▁▁▁▁ ▁▁▁  ▁▁▁     ▁|[34.0,35.0]
>
> Signed-off-by: Emilio G. Cota <address@hidden>

This now conflicts with master

--
Alex Bennée



reply via email to

[Prev in Thread] Current Thread [Next in Thread]