qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 21/22] tcg: enable per-thread TCG for softmmu


From: Richard Henderson
Subject: Re: [Qemu-devel] [PATCH 21/22] tcg: enable per-thread TCG for softmmu
Date: Sun, 9 Jul 2017 11:19:37 -1000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1

On 07/08/2017 09:50 PM, Emilio G. Cota wrote:
This allows us to generate TCG code in parallel. MTTCG already uses
it, although the next commit pushes down a lock to actually
perform parallel generation.

User-mode is kept out of this: contention due to concurrent translation
is more commonly found in full-system mode.

Um, why do you believe that? Are you suggesting that a multi-threaded user-only guest is much more likely to share TBs and do much less code generation total?

At the moment I think it's just a confusing distinction. As proven by some of the comment adjustments you made.

-TCGContext tcg_ctx;
+TCG_THREAD TCGContext tcg_ctx;

This is a really large structure, and it's not needed by any of the I/O threads. We're probably better off dynamically allocating this ourselves and do something like

__thread TCGContext *tcg_ctx_ptr;
#define tcg_ctx (*tcg_ctx_ptr)

You could then even have tcg_init_ctx be the object instead of a pointer to the object.

for the main thread, so you don't have to have an extra pointer to this; just reference it by symbol.

-static struct tcg_temp_info temps[TCG_MAX_TEMPS];
-static TCGTempSet temps_used;
+static TCG_THREAD struct tcg_temp_info temps[TCG_MAX_TEMPS];
+static TCG_THREAD TCGTempSet temps_used;


I've been meaning to dynamically allocate these for a while now. I think that would be better than putting this large array in TLS. Which, again, is not needed for I/O threads.


r~



reply via email to

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