All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Lluís Vilanova" <vilanova@ac.upc.edu>
To: Mark Burton <mark.burton@greensocs.com>
Cc: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>,
	mttcg@greensocs.com,
	"Alexander Spyridakis" <a.spyridakis@virtualopensystems.com>,
	"Claudio Fontana" <claudio.fontana@huawei.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	"Alvise Rigo" <a.rigo@virtualopensystems.com>,
	"Emilio G. Cota" <cota@braap.org>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"KONRAD Frédéric" <fred.konrad@greensocs.com>
Subject: Re: [Qemu-devel] MTTCG Tasks (kvmforum summary)
Date: Fri, 04 Sep 2015 15:00:01 +0200	[thread overview]
Message-ID: <87pp1ynxv2.fsf@fimbulvetr.bsc.es> (raw)
In-Reply-To: <9459DA03-0B3C-465E-8636-5A6FB469B37B@greensocs.com> (Mark Burton's message of "Fri, 4 Sep 2015 12:18:38 +0200")

Mark Burton writes:
[...]
>>>> * What to do about icount?
>>>> 
>>>> What is the impact of multi-thread on icount? Do we need to disable it
>>>> for MTTCG or can it be correct per-cpu? Can it be updated lock-step?
>>>> 
>>>> We need some input from the guys that use icount the most.
>>> 
>>> That means Edgar. :)
>> 
>> Hi!
>> 
>> IMO it would be nice if we could run the cores in some kind of lock-step
>> with a configurable amount of instructions that they can run ahead
>> of time (X).
>> 
>> For example, if X is 10000, every thread/core would checkpoint at
>> 10000 insn boundaries and wait for other cores. Between these
>> checkpoints, the cores will not be in sync. We might need to
>> consider synchronizing at I/O accesses aswell to avoid weird
>> timing issues when reading counter registers for example.
>> 
>> Of course the devil will be in the details but an approach roughly
>> like that sounds useful to me.

> And “works" in other domains.
> Theoretically we dont need to sync at IO (Dynamic quantums), for most systems
> that have ’normal' IO its normally less efficient I believe. However, the
> trouble is, the user typically doesn’t know, and mucking about with quantum
> lengths, dynamic quantum switches etc is probably a royal pain in the butt. And
> if you dont set your quantum right, the thing will run really slowly (or will
> break)…

> The choices are a rock or a hard place. Dynamic quantums risk to be slow (you’ll
> be forcing an expensive ’sync’ - all CPU’s will have to exit etc) on each IO
> access from each core…. not great. Syncing with host time (e.g. each CPU tries
> to sync with host clock as best it can) will fail when one or other CPU can’t
> keep up…. In the end you end up with leaving the user with a nice long bit of
> string and a message saying “hang yourself here”.

That price would not be paid when icount is disabled. Well, the code complexity
price is always paid... I meant runtime :)

Then, I think this depends on what type of guarantees you require from
icount. I see two possible semantics:

* All CPUs are *exactly* synchronized at icount granularity

  This means that every icount instructions everyone has to stop and
  synchronize.

* All CPUs are *loosely* synchronized at icount granularity

  You can implement it in a way that ensures that every cpu has *at least*
  reached a certain timestamp. So cpus can keep on running nonetheless.

The downside is that the latter loses the ability for reproducible runs, which
IMHO are useful. A more complex option is to merge both: icount sets the
"synchronization granularity" and another parameter sets the maximum delta
between cpus (i.e., set it to 0 to have the first option, and infinite for the
second).


Cheers,
  Lluis

-- 
"And it's much the same thing with knowledge, for whenever you learn
something new, the whole world becomes that much richer."
-- The Princess of Pure Reason, as told by Norton Juster in The Phantom
Tollbooth

  reply	other threads:[~2015-09-04 13:00 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-04  7:49 [Qemu-devel] MTTCG Tasks (kvmforum summary) Alex Bennée
2015-09-04  8:10 ` Frederic Konrad
2015-09-04  9:25 ` Paolo Bonzini
2015-09-04  9:41   ` Edgar E. Iglesias
2015-09-04 10:18     ` Mark Burton
2015-09-04 13:00       ` Lluís Vilanova [this message]
2015-09-04 13:10         ` dovgaluk
2015-09-04 14:59           ` Lluís Vilanova
2015-09-04  9:45 ` dovgaluk
2015-09-04 12:38   ` Lluís Vilanova
2015-09-04 12:46     ` Mark Burton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87pp1ynxv2.fsf@fimbulvetr.bsc.es \
    --to=vilanova@ac.upc.edu \
    --cc=a.rigo@virtualopensystems.com \
    --cc=a.spyridakis@virtualopensystems.com \
    --cc=alex.bennee@linaro.org \
    --cc=claudio.fontana@huawei.com \
    --cc=cota@braap.org \
    --cc=edgar.iglesias@gmail.com \
    --cc=edgar.iglesias@xilinx.com \
    --cc=fred.konrad@greensocs.com \
    --cc=mark.burton@greensocs.com \
    --cc=mttcg@greensocs.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.