RE: [PATCH 1/2] Drivers: hv: hv_balloon: report offline pages as being used

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

 




> -----Original Message-----
> From: Vitaly Kuznetsov [mailto:vkuznets@xxxxxxxxxx]
> Sent: Wednesday, February 25, 2015 8:56 AM
> To: KY Srinivasan
> Cc: devel@xxxxxxxxxxxxxxxxxxxxxx; Haiyang Zhang; linux-
> kernel@xxxxxxxxxxxxxxx; Dexuan Cui
> Subject: Re: [PATCH 1/2] Drivers: hv: hv_balloon: report offline pages as
> being used
> 
> KY Srinivasan <kys@xxxxxxxxxxxxx> writes:
> 
> >> -----Original Message-----
> >> From: Vitaly Kuznetsov [mailto:vkuznets@xxxxxxxxxx]
> >> Sent: Thursday, February 19, 2015 8:27 AM
> >> To: KY Srinivasan; devel@xxxxxxxxxxxxxxxxxxxxxx
> >> Cc: Haiyang Zhang; linux-kernel@xxxxxxxxxxxxxxx; Dexuan Cui
> >> Subject: [PATCH 1/2] Drivers: hv: hv_balloon: report offline pages as
> >> being used
> >>
> >> When hot-added memory pages are not brought online or when some
> >> memory blocks are sent offline the subsequent ballooning process
> >> kills the guest with OOM killer. This happens as we don't report
> >> these pages as neither used nor free and apparently host algorythm
> >> considers them as being unused. Keep track of all online/offline
> >> operations and report all currently offline pages as being used so
> >> host won't try to balloon them out.
> >>
> >> Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx>
> >> ---
> >>  drivers/hv/hv_balloon.c | 33 ++++++++++++++++++++++++---------
> >>  1 file changed, 24 insertions(+), 9 deletions(-)
> >>
> >> diff --git a/drivers/hv/hv_balloon.c b/drivers/hv/hv_balloon.c index
> >> a095b70..e4b4454 100644
> >> --- a/drivers/hv/hv_balloon.c
> >> +++ b/drivers/hv/hv_balloon.c
> >> @@ -503,6 +503,8 @@ struct hv_dynmem_device {
> >>  	 * Number of pages we have currently ballooned out.
> >>  	 */
> >>  	unsigned int num_pages_ballooned;
> >> +	unsigned int num_pages_onlined;
> >> +	unsigned int num_pages_added;
> >>
> >>  	/*
> >>  	 * State to manage the ballooning (up) operation.
> >> @@ -556,12 +558,15 @@ static void post_status(struct
> hv_dynmem_device
> >> *dm);  static int hv_memory_notifier(struct notifier_block *nb,
> >> unsigned long val,
> >>  			      void *v)
> >>  {
> >> +	struct memory_notify *mem = (struct memory_notify *)v;
> >> +
> >>  	switch (val) {
> >>  	case MEM_GOING_ONLINE:
> >>  		mutex_lock(&dm_device.ha_region_mutex);
> >>  		break;
> >>
> >>  	case MEM_ONLINE:
> >> +		dm_device.num_pages_onlined += mem->nr_pages;
> >>  	case MEM_CANCEL_ONLINE:
> >
> > Why are we not adjusting num_pages_onlined when we cancel the online
> > Operation.
> 
> Because we didn't increase the number yet.

Thanks; my mistake.

K. Y
_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel




[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux