From: Paul Brook <paul@codesourcery.com>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] need advice on PCI board emulation
Date: Fri, 8 Dec 2006 15:07:40 +0000 [thread overview]
Message-ID: <200612081507.40975.paul@codesourcery.com> (raw)
In-Reply-To: <1165575170.22384.16.camel@bibi>
On Friday 08 December 2006 10:52, jerome Arbez-Gindre wrote:
> Hi,
>
> I'm working on a modem PCI board emulation inside Qemu.
Qemu already emulates a reasonably modern PCI system.
> My emulation is neerly functionnaly complete, but I have some doubt on
> my technical choices :
> - to emulate dma transfers, I launch one thread for each dma channel.
Does this really provide any significant speedup? ie. does qemu spend
significant amounts of time doing dma transfers?
> - to emulate posponed starting behaviors (board self tests), I launch a
> thread with a sleep and then board status changes.
You should just use timers.
> - to emulate demodulated incoming data, I launch one thread waiting
> with blocking reads on a UDP socket.
Again, why use threads?
> Because I had some toubles (segfaults in tb_reset_jump_recursive2
> (exec.c)), I have serilized my calls to pci_set_irq with the help of a
> new thread.
>
> So, my question is :
> Is it reasonable to use threads to emulate parallel behaviors ?
Maybe. With the possible exception of processing graphics, I wouldn't expect
there to be very limited scope for parallelism in peripheral emulation. Most
things are limited by the speed of the underlying device, or how fast the
guest CPU can process the data.
You're liable to spend more time fighting for locks and waiting for cache
flushes bouncing data between different CPUs than you gain from using
multiple cores. On single cpu systems (which are still common in low-end
machines) using threads is almost certainly going to slow things down.
If you look at the current code, you'll notice that most of the operations
that can block for a long time waiting for external inputs (IDE/SCSI/USB)
already operate asynchronously, and network is fairly asynchronous anyway.
Paul
next prev parent reply other threads:[~2006-12-08 15:07 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-08 10:52 [Qemu-devel] need advice on PCI board emulation jerome Arbez-Gindre
2006-12-08 15:07 ` Paul Brook [this message]
2006-12-08 16:57 ` jerome Arbez-Gindre
2006-12-08 15:22 ` Paul Brook
2006-12-08 17:06 ` jerome Arbez-Gindre
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=200612081507.40975.paul@codesourcery.com \
--to=paul@codesourcery.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).