Port-xen archive

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

Re: Xen balloon driver rewrite



On Thu, 7 Apr 2011 20:22:58 +0530, "Cherry G. Mathew" <cherry.g.mathew%gmail.com@localhost> wrote:
If you ask for inflate then a deflate of 256MiB, or the other way around, you will effectively spawn two workers. Both will work towards the same
target though, and in this case, will rapidly exit.

I'm curious about the effect of lock contention in the case of many
outstanding threads reading/writing to the same shared variable. Also
the load on the scheduler / thread manager for multiple outstanding
requests.

More than lock contention, it's the concurrent access to balloon_inflate and balloon_deflate that is problematic :)

Although this is a rare situation, it can happen: one worker is currently executing a balloon_inflate, while another is created to handle a deflate. Ouch. Linux fixes that by having a "biglock" mutex wrapping the balloon handler loop, but I'd like to avoid going down that route.

Can't think of any other objections.

This all depends on the above. If I can't find a clean solution to the above (other that having an ugly "biglock" at worker handler entry and release it upon return), I'll revert back to the idle thread solution.

In the feedback case, the userland script/tool within the domU, and
the dom0 (via xenstore) can see what's going on. Wouldn't this be
better than to leave both uninformed and under the impression that the
balloon succeeded ?

domU will see it in the error case, because it will be logged to its console.

Indeed, for dom0/admin domain, it won't notice it. The memory/target entry is not modified back. I am not sure if it should anyway: the pv_ops Linux kernel does not feedback such situation back to Xenstore (I did not find the code that does it...), so I am not sure that tools/someone would ever care if memory/target gets modified behind their back.

Yes, but balloon.mem-min is a pretty arbitrary/rule-of-thumb value,
right ?

Yes. It permits the domU admin to control what the kernel is doing for ballooning, independently from the safeguard XEN_RESERVATION_MIN value. Of course, mem-min cannot go below XEN_RESERVATION_MIN. Think of it as a way for domU's admin to say: "I am expecting high memory usage in the near future, so don't inflate balloon too much."

Whereas the scenario above would be a realworld situation
where we got feedback that a high mem-pressure situation has been
reached ?

Yes. However, I wouldn't "signal" it via the memory/target Xenstore node. Such states are transient. It's the kind of setup where some stupid guy starts doing

   while true; do
sleep 1 && xm mem-set <whatever> # Heck NetBSD, stop changing the value, heh
   done

because he doesn't get a clue of what is currently happening.

Agreed nonetheless, it's hard to report back specific conditions to dom0. Except for well defined nodes, domains put whatever pleases them in Xenstore...

--
Jean-Yves Migeon
jeanyves.migeon%free.fr@localhost


Home | Main Index | Thread Index | Old Index