OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

virtio message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [virtio] [OASIS Issue Tracker] Created: (VIRTIO-28) Implement new balloon device (ID 13)


"Michael S. Tsirkin" <mst@redhat.com> writes:
> On Tue, Oct 29, 2013 at 10:44:53AM +1030, Rusty Russell wrote:
>> "Michael S. Tsirkin" <mst@redhat.com> writes:
>> > OK there are some more issues to consider around deflate.
>> >
>> >
>> > 1.  On KVM, we actually want to change QEMU so that pagefaults don't
>> > work either.  Specifically, we want to skip pages in the balloon for
>> > migration.
>> > However, migration is done in userspace while pagefaults
>> > are done in kernel.
>> > I think the implication is that 
>> > -	 you should be able to ask guest to inflate balloon
>> > 	 with pages that can be paged in (when you don't want to migrate
>> > 	 and want max local performance) or with pages that can not be paged in
>> > 	(when you want to migrate faster), dynamically, not through a
>> > 	device feature
>> > -	 "will notify before use" feature should be per a bunch or pages actually.
>> 
>> I am always reluctant to implement a spec for things which don't exist.
>> This is the cause of the current "negative feature" mess with
>> VIRTIO_BALLOON_F_MUST_TELL_HOST.
>
> Well it's no longer negative now that we made it optional.
> The name might need to be changed to VIRTIO_BALLOON_F_GUEST_TELLS_HOST.

It's still a problem: if a host *needs* this feature, and a guest
doesn't accept it, we're in trouble.

>> So if we *ever* want to ask for pages, let's make the the driver always
>> ask for pages.  You place a buffer in the queue and the device fills it
>> with page addresses you can now use.
>> 
>> See below.
>
> Hmm but then, this does not look so different from the current
> balloon anymore ...

I don't necessarily want different.  I want to fix the various virtio
balloon bugs, eg:

VIRTIO-37 	allow >4G 4K pages in balloon
VIRTIO-36 	balloon: align val in virtio_balloon_stat
VIRTIO-25 	balloon: remove VIRTIO_BALLOON_F_MUST_TELL_HOST and deflate queue.
VIRTIO-24 	balloon: don't define endianness separately for config space.

I want the balloon to return to the simple device it was meant to be.

>> +3. To withdraw pages from the balloon, the same structure should be
>> +   placed in the todevq queue, with the page array writable:
>> +
>> +	struct virtio_balloon_pages {
>> +#define VIRTIO_BALLOON_REQ_PAGES	2
>> +		u32 type; // VIRTIO_BALLOON_REQ_PAGES
>> +		u64 page[];
>> +	};
>> +
>> +   The device may not fill the entire page array.  The contents
>> +   of the pages received will be undefined.
>
> On a Linux host they are actually zeroed out.
> Maybe document this?

Absolutely not, I don't want anyone relying on it!  This can certainly
change in a future implementation.

In fact, I'm not even sure it's true on a hugepage-backed guest.

Cheers,
Rusty.



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]