[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Re: [PATCH 0/4] Threaded tcp incoming migration.
From: |
Yoshiaki Tamura |
Subject: |
Re: [Qemu-devel] Re: [PATCH 0/4] Threaded tcp incoming migration. |
Date: |
Wed, 2 Jun 2010 01:44:17 +0900 |
2010/6/2 Anthony Liguori <address@hidden>:
> On 06/01/2010 11:18 AM, Yoshiaki Tamura wrote:
>>
>> 2010/6/2 Anthony Liguori<address@hidden>:
>>
>>>
>>> On 06/01/2010 10:40 AM, Yoshiaki Tamura wrote:
>>>
>>>>
>>>> Hi,
>>>>
>>>> This series add threaded tcp incoming migration. Currently, tcp
>>>> migration
>>>> on
>>>> incoming side is blocked when outgoing has started on the remote side,
>>>> and
>>>> you
>>>> can't do anything. With this series you can get info of incoming
>>>> migration by
>>>> calling "info migrate" like on outgoing side. Threaded tcp incoming
>>>> migration
>>>> is enable only when --enable-io-thread is set.
>>>>
>>>>
>>>
>>> I'm much less confident that threading is the answer here. We really
>>> would
>>> just need to have asynchronous incoming migration.
>>>
>>
>> You mean, go back to select() in main(), and then call incoming
>> handler each time?
>> Won't it introduce more latency, resulting less throughput?
>>
>
> I wouldn't think so. With threads, you've got to acquire locks and that
> lock acquisition can be a source of significant latency. By blocking in
> select, you've got a straight dispatch path.
>
> Really, we'd get 99% of the way there just focusing on live loading of ram.
> There's really no need to make the final stage of migration live.
>
>> Although threading maybe a big hammer for just getting monitor
>> working, I think using thread for incoming handler may worth if it
>> doesn't heart performance on receiving data.
>>
>
> Unless I'm mistaken, the thread patches you've posted make no attempt at
> addressing the problem of locking. I believe that properly handling locking
> would result in the patch series increasing in size and complexity rather
> significantly.
>
> I think the simpler approach is to implement a state machine for ram
> loading.
OK. Making ram loading to be selectable seems to be a good start point.
Thanks,
Yoshi
>
> Regards,
>
> Anthony Liguori
>
>> The downside is mutual exclusion, of course...
>>
>> Thanks,
>>
>> Yoshi
>>
>>
>>>
>>> Regards,
>>>
>>> Anthony Liguori
>>>
>>>
>>>>
>>>> This series apply on top of patch from Corentin posted on May 29.
>>>>
>>>> http://www.mail-archive.com/address@hidden/msg33830.html
>>>>
>>>> Yoshiaki Tamura (4):
>>>> qemu-thread: add qemu_thread_join().
>>>> migration-tcp: threaded tcp incoming migration.
>>>> arch_init: calculate transferred bytes at ram_load().
>>>> migration: add support to print migration info on incoming side.
>>>>
>>>> arch_init.c | 2 +
>>>> migration-tcp.c | 86
>>>> ++++++++++++++++++++++++++++++++++++++++++++++---------
>>>> migration.c | 18 +++++++++--
>>>> migration.h | 2 +-
>>>> qemu-thread.c | 9 ++++++
>>>> qemu-thread.h | 1 +
>>>> 6 files changed, 99 insertions(+), 19 deletions(-)
>>>>
>>>>
>>>>
>>>
>>>
>>>
>
>
>
- [Qemu-devel] [PATCH 2/4] migration-tcp: threaded tcp incoming migration., (continued)
[Qemu-devel] [PATCH 3/4] arch_init: calculate transferred bytes at ram_load()., Yoshiaki Tamura, 2010/06/01
[Qemu-devel] [PATCH 1/4] qemu-thread: add qemu_thread_join()., Yoshiaki Tamura, 2010/06/01
[Qemu-devel] Re: [PATCH 0/4] Threaded tcp incoming migration., Anthony Liguori, 2010/06/01