On Apr 23, 2009, at 9:19 PM, Anthony Liguori wrote:
刘志建 wrote:
Hello folks,
In the past, it was said KVM would like to treat the guest OS
threads differently in scheduling. However, till now, the qemu
thread is regarded as a conventional user thread. Therefore, it is
hard to control how much CPU slices one guest OS can utilize. I
don't think a computing cloud provider likes this idea.
And, what's more, "Xen and Co.: Communication-aware CPU Scheduling
for Consolidated Xen-based Hosting Platforms"(http://www.cse.psu.edu/~sgovinda/papers/vee07.pdf
) has shown that the standard thread scheduling in Linux might not
fit the virtualization environment well.
By standard thread scheduling, I presume you mean scheduling that
doesn't take into account IO? That is, this paper is arguing that
in a virtualization environment, you want to provide temporary
disproportionate scheduling to favor IO bound workloads over CPU
bound workloads.
I don't think you need the credit scheduler to implement this idea
in KVM. CFS provides a number of tunables to userspace along with
pretty fine grain control ala cgroups. I think that provides you a
roughly equivalent interface to userspace that could be used to make
scheduling adjustments based on IO consumption.
What are the other motivating factors for wanting to use credit over
cfs?
Regards,
Anthony Liguori
I'm a lurker on this list, but as someone has raised the point of what
cloud computing providers will and won't like, I figure I could add my
two cents.
If you guys think in terms of "the client of your client is your real
client" - i.e. the clients of the cloud providers are your clients -
then you need to consider how they would buy the product. Here in
Brazil there is still a lot of ignorance surrounding cloud computing
and many clients still think in terms of physical machines - that is
that they use their previous knowledge of provisioning physical
machines to guide their decisions when contracting new machines. As
such they think in terms of contracting a certain amount of MHz/GHz.
I'll give you a perfect and real example of this: We use VMware and we
are testing Xen/KVM because we ultimately want to go full open-source
with our back-end for virtualization. VMware allows us to sell the
product to the end client in terms of CPU/RAM/Disk Space, Xen on the
other hand works in terms of CPU prioritization, which AFAIK is the
correct way to think about how to use the physical resources. However
this approach treats all clients as one unit and does the tasks with
the greatest priority instead of treating all clients as equals and
taking care of all equally (with a guaranteed minimum amount of CPU as
per the client's contract). Adopting Xen would force us to completely
redesign our product plans with a product model which would be more
alien to the end user (i.e. more difficult to compare/consider).
At the end of the day I think virtualization has two basic users: (1)
Companies, laboratories, etc where certain tasks are assigned
priorities and all computing resources are used to their maximum all
the time (timesharing) and (2) Service providers where all clients
have a contract guaranteeing minimum resources and where overselling
to some degree is taking place (variable resource usage over the
course of the day/week).
Please excuse me if I didn't exactly answer the above question. Coming
from a business/somewhat technical background, I'm working as hard as
I can to immerse myself in the nitty gritty of virtualization. If
anyone has any other questions for what a cloud computing provider
would or would not like, feel free to contact me directly or post
questions to the list.
Andrew de Andrade
Locaweb
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html