qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [RFC PATCH V3 1/4] colo-compare: introduce colo compare


From: Zhang Chen
Subject: Re: [Qemu-devel] [RFC PATCH V3 1/4] colo-compare: introduce colo compare initlization
Date: Mon, 9 May 2016 18:49:32 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.2


+
+    s->chr_sec_in = qemu_chr_find(s->sec_indev);
+    if (s->chr_sec_in == NULL) {
+        error_setg(errp, "Secondary IN Device '%s' not found",
+                   s->sec_indev);
+        return;
+    }
+
+    s->chr_out = qemu_chr_find(s->outdev);
+    if (s->chr_out == NULL) {
+        error_setg(errp, "OUT Device '%s' not found", s->outdev);
+        return;
+    }
+
+    qemu_chr_fe_claim_no_fail(s->chr_pri_in);
+    qemu_chr_add_handlers(s->chr_pri_in, compare_chr_can_read,
+                          compare_pri_chr_in, NULL, s);
+
+    qemu_chr_fe_claim_no_fail(s->chr_sec_in);
+    qemu_chr_add_handlers(s->chr_sec_in, compare_chr_can_read,
+                          compare_sec_chr_in, NULL, s);
+
Btw, what's the reason of handling this in main loop? I thought it
would
be better to do this in colo thread? Otherwise, you need lots of
extra
synchronizations?
Do you mean we should start/stop/do checkpoint it by colo-frame?
I mean we probably want to handle pri_in and sec_in in colo compare
thread. Through this way, there's no need for extra synchronization
with
main loop.
I get your point, but how to do this.
Now, we use qemu_chr_add_handlers to do this job.
You probably want to start a new main loop in colo comparing thread.

IIUC, do you mean
- remove char device read_handler

  ↓at colo comparing thread↓
while (true) {
- blocking read packet from char device with select(2)/poll(2)...
- compare packet
}
Yes, something like this.


But remove qemu_chr_add_handlers I can't get fd to select/poll.

How to get fd from all kinds of chardev?

Thanks
Zhang Chen

This solution will lead comparing packet and reading packet in serial.
But i don't know if this will have a good performance.
This probably won't have the best performance but it simplify lots of
things. Actually doing it in main loop will slow down all other I/O
processing. Consider colo can only handling userspace network traffic
now, we could start from this. For performance, it needs lots of other
stuff: I think the most important thing is to add vhost support.

Thanks

Thanks
zhangchen

.



.


--
Thanks
zhangchen






reply via email to

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