Thanks for the very quick response. You guys at Qumranet are good. :)

On 2/1/07, Dor Laor <[EMAIL PROTECTED]> wrote:
> >The main questions I have at the moment are the following:
> >
> >1. What is the best way to start and ID multiple guests? I've just
> >been configuring a script to start up two of them from the
> >command-line and storing an ID in the kvm_vcpu structure. The first to
> >get to get to vmc_run() is designated as the primary and the other is
> >then the secondary that will replicate what the primary does. I'm open
> >to ideas on automating the creation of multiple guests (with pinning
> >to CPUs).
>
> It's logical to have such VM uniqe id, similar to Xen domain.
> Do you intent to use is as an id for the deterministic guest to hook
> into the primary executing guest?

I was just looking to use the ID as a way for the hypervisor to
distinguish which guest is the primary and which is the
backup/replication. If logic is put in the usermode qemu code, it also
needs to know if the guest is primary or backup.

>
> >2. Where should the bulk of the buffering and synchronization be done?
> >I've been putting everything in the hypervisor since it can see all
> >the guests. It may make sense to put some things in the qemu code and
> >make use of other IPC mechanisms for synchronization, though.
>
> Except for code that must resides within KVM (the performance counters
> logic), I would put all the non performance critical (mem copy) in the
> user space with special hooks into Qemu-kvm.
> This way we achieve separation and easier coding in user space.
>

I thought this would be the case. It seems it would be convenient if
the guest could be completely ignorant to the fact it is being
replicated with the hypervisor doing everything in the background, but
it does make sense to make the qemu process aware of it to make the
coding easier and not put a lot of policy in the kernel.

> >3. What is the best way to deal with I/O string/string_down calls that
> >handle the I/O in kvmctl.c? I would guess it will be necessary to
> >buffer the memory range somewhere and pass the address of that someone
> >for the secondary guest to access when it gets to that point.
>
> Do you assume that the deterministic guest(slave) resides in the same
> host?
> It's better to put them in a stream and send to the slave guest in a
> pipe/socket.
>

I was assuming all guests would run on a single, multi-core machine.
It would be an interesting extension to replicate across different
physical hosts and would enable usage similar to Marathon Technologies
distributed lockstepping. I will explore the socket option, although
I'm trying to trade-off limited flexibility with just getting
something working.

> >4. DMA? I haven't thought about this much yet and am using simple
> >guests that don't do it. It will need to be handled eventually,
> >though.
>
> All network/disk IO should be sent to the slave guest too. You might
> need to hook into Qemu disk/net devices and replace them temporary in
> slave mode.
>

I will have to explore QEMU some more, but it's reassuring that you
and Avi suggest it's straightforward.

> >
> >There are many others, but these are the top things that I'm still not
> >clear on. I'd appreciate any input from others experienced in this
> >area.
> >
> >Thanks,
> >Casey
>
> Good luck, it's really a fun project.
>

Thanks for the help.

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to