On 2014/11/21 16:17, ChenLiang wrote:
> On 2014/11/21 15:38, Li, Liang Z wrote:
>
>>>> +int migrate_compress_threads(void)
>>>> +{
>>>> + MigrationState *s;
>>>> +
>>>> + s = migrate_get_current();
>>>> +
>>>> + return s->compress_thread_count;
>>>> +}
>>>> +
>>>> int migrate_use_xbzrle(void)
>>>> {
>>>> MigrationState *s;
>>>> @@ -697,4 +795,5 @@ void migrate_fd_connect(MigrationState *s)
>>>>
>>>> qemu_thread_create(&s->thread, "migration", migration_thread, s,
>>>> QEMU_THREAD_JOINABLE);
>>>> + migrate_compress_threads_create(s);
>>
>>
>>> don't create compress_threads always.
>>> It may be better:
>>
>>> if (!migrate_use_xbzrle()) {
>>> migrate_compress_threads_create(s);
>>> }
>>
>> Thanks for your comments, in fact, the multiple thread compression can
>> co-work with xbrzle, which can help to accelerate live migration.
>
>
> hmm, multiple thread compression can't co-work with xbzrle. xbzrle need
> guarantee
> the cache at src is same to dest. But I dont see that below:
>
> + /* XBZRLE overflow or normal page */
> + if (bytes_sent == -1) {
> + bytes_sent = migrate_save_block_hdr(¶m->migbuf, block,
> + offset, cont, RAM_SAVE_FLAG_COMPRESS_PAGE);
> + blen = migrate_qemu_add_compress(¶m->migbuf, p,
> + TARGET_PAGE_SIZE, migrate_compress_level());
> + bytes_sent += blen;
> + atomic_inc(&acct_info.norm_pages);
>
> the code don't update the cache of xbzrle at src.
>
>>
>>> BTW, this patch is too big to review. Spliting it into some patch will be
>>> welcome.
>>
>> I am doing it.
>>
>>
>>
>>
>>
>
>
>
>
>
>