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

Re: [Xen-devel] [PATCH] [linux-2.6.39.x for xen] tmem: self-ballooning and frontswap-selfshrinking



On Thu, Jun 09, 2011 at 02:12:48PM -0700, Dan Magenheimer wrote:
> > From: Daniel Kiper [mailto:dkiper@xxxxxxxxxxxx]
> > Subject: Re: [Xen-devel] [PATCH] [linux-2.6.39.x for xen] tmem: 
> > self-ballooning and frontswap-
> > selfshrinking
>
> > goal_pages = percpu_counter_read_positive(&vm_committed_as) +
>
> !!! (Ian cc'ed)
>
> Thanks for catching this!  I had thought vm_committed_as
> was not exported (and may not have been when I first
> coded this).  Now that it is, the "core kernel" change
> that was part of the changeset is no longer required, thus
> removing the dependency on core kernel/mm review!  Yay!
>
> > On Mon, Jun 06, 2011 at 03:12:28PM -0700, Dan Magenheimer wrote:
> >
> > [...]
> >
> > > +static void selfballoon_process(struct work_struct *work)
> > > +{
> > > + extern unsigned long vm_get_committed_as(void);
> > > + unsigned long cur_pages, goal_pages, tgt_pages;
> > > + int reset_timer = 0;
> > > +
> > > + if (balloon_stats.selfballooning_enabled) {
> > > +         tgt_pages = cur_pages = totalram_pages;
> >
> > tgt_pages = cur_pages = balloon_stats.current_pages;
> >
> > > +         goal_pages = vm_get_committed_as();
> >
> > goal_pages = percpu_counter_read_positive(&vm_committed_as) +
> >             balloon_stats.current_pages - totalram_pages;
> >
> > > +         if (cur_pages > goal_pages)
> > > +                 tgt_pages = cur_pages -
> > > +                         (cur_pages - goal_pages) / 
> > > balloon_stats.selfballoon_downhysteresis;
> > > +         else if (cur_pages < goal_pages)
> > > +                 tgt_pages = cur_pages +
> > > +                         (goal_pages - cur_pages) / 
> > > balloon_stats.selfballoon_uphysteresis;
> > > +         balloon_set_new_target(tgt_pages);
> > > +         reset_timer = 1;
> > > + }
> > > + if (frontswap_selfshrinking_enabled) {
> > > +         frontswap_selfshrink();
> > > +         reset_timer = 1;
> > > + }
> > > + if (reset_timer)
> > > +         schedule_delayed_work(&selfballoon_worker,
> > > +                 balloon_stats.selfballoon_interval * HZ);
> > > +}
>
> Thanks for the review Daniel!  Do these changes make it compatible
> with your hotplug work?

Eariler versions of memory hotplug worked fine with tmem.
I did not test latest one with tmem, however, it should
work without significant changes. If you wish I could help
you to intergrate tmem with memory hotplug.

> In your second correction (goal_pages), is it possible that
> balloon_stats.current_pages is less then totalram_pages?

balloon_stats.current_pages is always greater than totalram_pages.
balloon_stats.current_pages counts all pages currently available to
the system. totalram_pages counts only pages which could be allocated
for user space processes (more or less). It means that
balloon_stats.current_pages - totalram_pages represents
all pages allocated by kernel (more or less).

Daniel

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.