You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cloudstack.apache.org by Linux TUX <az...@yahoo.com> on 2013/06/21 14:47:48 UTC

Resource Management/Allocation for CS

Hi All,

Does anybody can tell me which parts of CloudStack's source code are related to its Resource Allocation (RA) process?
By RA, I mean the part of code that is responsible for VM migration or process migration, if there is any.
As you know, there are two kinds of RA, to wit: 1) server side such as VM migration, or 2) client side such as clients' proprietary schedulers.
Furthermore, client side's RA's success is dependent on knowing sever side's RA very well.

So, since i am interested to work on RA of CloudStack, if, with regard to the above information, you have any idea, please tell me?
Also, if your are working on it, please let me know. Finally, it would be really approciated if you tell me which parts of the source code
is related to implementation of CloudStack's RA algorithms.

Best regards,
Pouya

Re: Resource Management/Allocation for CS

Posted by Prasanna Santhanam <ts...@apache.org>.
On Fri, Jun 21, 2013 at 10:17:53PM +0000, Edison Su wrote:
> 
> Haven't read the whole paper yet, but the above problem statement
> resonates with me. Our current centralized allocation algorithm may
> have problem in case of a large of concurrent VMs allocation. 
> 

Speaking of which CLOUDSTACK-2843 makes some inroads in this
direction. Not sure what the scale of this change is and testing
complexities are.

-- 
Prasanna.,

------------------------
Powered by BigRock.com


Re: Resource Management/Allocation for CS

Posted by Linux TUX <az...@yahoo.com>.
Without any doubt, this paper raises an interesting challenge. Although this high-quality paper is motivated by a real-world problem, it doen'tnecessarily mean that its results can be repeated in a real test-bed using unorganized workloads and users. So, I am going to readthis paper more carefully. By the way, thank you for the paper's link.



________________________________
 From: Edison Su <Ed...@citrix.com>
To: "dev@cloudstack.apache.org" <de...@cloudstack.apache.org>; 'Linux TUX' <az...@yahoo.com>; Prachi Damle <Pr...@citrix.com> 
Sent: Saturday, 22 June 2013, 2:47
Subject: RE: Resource Management/Allocation for CS
 

Found this paper sounds interesting: http://www.sigmetrics.org/sigmetrics2013/pdfs/p67.pdf

"The physical infrastructure is divided into a large pool of compute and storage servers. The former are organized into clusters consisting of tens of servers (typically 32 or so). A public cloud may contain hundreds of such clusters to get a large-scale deployment. The VMs from a single tenant may span an arbitrary set of clusters. This architecture exists for most of the deployments based on solutions from VMware
vSphere [27], Microsoft SCVMM [15] and others. In this environment it is infeasible to simply extend currently existing resource allocation mechanisms. The state-of-the-art today includes cluster management solutions like DRS [12] that collect information about VMs from each server in the cluster, and allocate CPU and memory re-sources based on the demand. This clustered model has certain advantages like facilitating VM migrations between servers if the total allocation to VMs on a server exceeds its physical capacity. However, when a tenant's VMs are spread across multiple clusters, a centralized strategy becomes impractical, since it requires dynamic per VM information to be made available at a cloud-level database shared among hundreds of clusters. Not only does this require a large amount of information to be frequently exchanged between clusters, but the centralized algorithms will be CPU intensive due to the large number of VMs it needs to consider.

The problem of scalable dynamic resource  and we are not aware of any practical existing solution. We envision our algorithm to run at the cluster-level and allow distributed clusters to work together to provide the customer with the abstraction of buying bulk capacity. 
"

Haven't read the whole paper yet, but the above problem statement resonates with me. Our current centralized allocation algorithm may have problem in case of a large of concurrent VMs allocation. 



> -----Original Message-----
> From: Linux TUX [mailto:azgil.info@yahoo.com]
> Sent: Friday, June 21, 2013 2:27 PM
> To: Prachi Damle; dev@cloudstack.apache.org
> Subject: Re: Resource Management/Allocation for CS
> 
> HiPrachi,
> 
> Thank you for your reply. Surely, this helps. I will work on these
> implementations, and then report my ideas back to the community.
> 
> Thanks,
> Pouya
> 
> 
> 
> ________________________________
>  From: Prachi Damle <Pr...@citrix.com>
> To: "dev@cloudstack.apache.org" <de...@cloudstack.apache.org>; Linux TUX
> <az...@yahoo.com>
> Sent: Saturday, 22 June 2013, 1:28
> Subject: RE: Resource Management/Allocation for CS
> 
> 
> Hi Pouya,
> 
> All of CloudStack's RA heuristics are applied by deployment planner modules
> and host/storagepool allocators to decide the order in which
> resource(pods,clusters,hosts,storage pools) will be considered for a VM
> deployment/migration.
> 
> Following are the existing flavors of these modules:
> random: This just shuffles the list of clusters/hosts/pools that is returned by
> the DB lookup. Random does not mean round-robin - So if you are looking for
> a new host being picked up on every deployment - that may not happen.
> firstfit:  This makes sure that clusters are ordered by available capacity and
> first hosts/pools having enough capacity is chosen within a cluster.
> userdispersing: For a given account, this makes sure that VM's are
> dispersed  - so clusters/hosts with minimum number of running VM's for that
> account are chosen first. Storage Pool with minimum number of Ready
> storage pools for the account is chosen first.
> Userconcentratedpod: Always choose the pod/cluster with max. number of
> VMs for the account - concentrating VM's at one pod.
> 
> You can find the source code related to above under:
> server/src/com/cloud/deploy, plugins/deployment-planners, plugins/host-
> allocators, plugins/storage-allocators
> 
> Hope this helps.
> 
> Thanks,
> Prachi
> 
> -----Original Message-----
> From: Linux TUX [mailto:azgil.info@yahoo.com]
> Sent: Friday, June 21, 2013 5:48 AM
> To: dev@cloudstack.apache.org
> Subject: Resource Management/Allocation for CS
> 
> Hi All,
> 
> Does anybody can tell me which parts of CloudStack's source code are
> related to its Resource Allocation (RA) process?
> By RA, I mean the part of code that is responsible for VM migration or
> process migration, if there is any.
> As you know, there are two kinds of RA, to wit: 1) server side such as VM
> migration, or 2) client side such as clients' proprietary schedulers.
> Furthermore, client side's RA's success is dependent on knowing sever side's
> RA very well.
> 
> So, since i am interested to work on RA of CloudStack, if, with regard to the
> above information, you have any idea, please tell me?
> Also, if your are working on it, please let me know. Finally, it would be really
> approciated if you tell me which parts of the source code is related to
> implementation of CloudStack's RA algorithms.
> 
> Best regards,
> Pouya

RE: Resource Management/Allocation for CS

Posted by Edison Su <Ed...@citrix.com>.
Found this paper sounds interesting: http://www.sigmetrics.org/sigmetrics2013/pdfs/p67.pdf

"The physical infrastructure is divided into a large pool of compute and storage servers. The former are organized into clusters consisting of tens of servers (typically 32 or so). A public cloud may contain hundreds of such clusters to get a large-scale deployment. The VMs from a single tenant may span an arbitrary set of clusters. This architecture exists for most of the deployments based on solutions from VMware
vSphere [27], Microsoft SCVMM [15] and others. In this environment it is infeasible to simply extend currently existing resource allocation mechanisms. The state-of-the-art today includes cluster management solutions like DRS [12] that collect information about VMs from each server in the cluster, and allocate CPU and memory re-sources based on the demand. This clustered model has certain advantages like facilitating VM migrations between servers if the total allocation to VMs on a server exceeds its physical capacity. However, when a tenant's VMs are spread across multiple clusters, a centralized strategy becomes impractical, since it requires dynamic per VM information to be made available at a cloud-level database shared among hundreds of clusters. Not only does this require a large amount of information to be frequently exchanged between clusters, but the centralized algorithms will be CPU intensive due to the large number of VMs it needs to consider.

The problem of scalable dynamic resource  and we are not aware of any practical existing solution. We envision our algorithm to run at the cluster-level and allow distributed clusters to work together to provide the customer with the abstraction of buying bulk capacity. 
"

Haven't read the whole paper yet, but the above problem statement resonates with me. Our current centralized allocation algorithm may have problem in case of a large of concurrent VMs allocation. 



> -----Original Message-----
> From: Linux TUX [mailto:azgil.info@yahoo.com]
> Sent: Friday, June 21, 2013 2:27 PM
> To: Prachi Damle; dev@cloudstack.apache.org
> Subject: Re: Resource Management/Allocation for CS
> 
> HiPrachi,
> 
> Thank you for your reply. Surely, this helps. I will work on these
> implementations, and then report my ideas back to the community.
> 
> Thanks,
> Pouya
> 
> 
> 
> ________________________________
>  From: Prachi Damle <Pr...@citrix.com>
> To: "dev@cloudstack.apache.org" <de...@cloudstack.apache.org>; Linux TUX
> <az...@yahoo.com>
> Sent: Saturday, 22 June 2013, 1:28
> Subject: RE: Resource Management/Allocation for CS
> 
> 
> Hi Pouya,
> 
> All of CloudStack's RA heuristics are applied by deployment planner modules
> and host/storagepool allocators to decide the order in which
> resource(pods,clusters,hosts,storage pools) will be considered for a VM
> deployment/migration.
> 
> Following are the existing flavors of these modules:
> random: This just shuffles the list of clusters/hosts/pools that is returned by
> the DB lookup. Random does not mean round-robin - So if you are looking for
> a new host being picked up on every deployment - that may not happen.
> firstfit:  This makes sure that clusters are ordered by available capacity and
> first hosts/pools having enough capacity is chosen within a cluster.
> userdispersing: For a given account, this makes sure that VM's are
> dispersed  - so clusters/hosts with minimum number of running VM's for that
> account are chosen first. Storage Pool with minimum number of Ready
> storage pools for the account is chosen first.
> Userconcentratedpod: Always choose the pod/cluster with max. number of
> VMs for the account - concentrating VM's at one pod.
> 
> You can find the source code related to above under:
> server/src/com/cloud/deploy, plugins/deployment-planners, plugins/host-
> allocators, plugins/storage-allocators
> 
> Hope this helps.
> 
> Thanks,
> Prachi
> 
> -----Original Message-----
> From: Linux TUX [mailto:azgil.info@yahoo.com]
> Sent: Friday, June 21, 2013 5:48 AM
> To: dev@cloudstack.apache.org
> Subject: Resource Management/Allocation for CS
> 
> Hi All,
> 
> Does anybody can tell me which parts of CloudStack's source code are
> related to its Resource Allocation (RA) process?
> By RA, I mean the part of code that is responsible for VM migration or
> process migration, if there is any.
> As you know, there are two kinds of RA, to wit: 1) server side such as VM
> migration, or 2) client side such as clients' proprietary schedulers.
> Furthermore, client side's RA's success is dependent on knowing sever side's
> RA very well.
> 
> So, since i am interested to work on RA of CloudStack, if, with regard to the
> above information, you have any idea, please tell me?
> Also, if your are working on it, please let me know. Finally, it would be really
> approciated if you tell me which parts of the source code is related to
> implementation of CloudStack's RA algorithms.
> 
> Best regards,
> Pouya

Re: Resource Management/Allocation for CS

Posted by Linux TUX <az...@yahoo.com>.
HiPrachi,

Thank you for your reply. Surely, this helps. I will work on these implementations, and then report my ideas back to the community.

Thanks,
Pouya



________________________________
 From: Prachi Damle <Pr...@citrix.com>
To: "dev@cloudstack.apache.org" <de...@cloudstack.apache.org>; Linux TUX <az...@yahoo.com> 
Sent: Saturday, 22 June 2013, 1:28
Subject: RE: Resource Management/Allocation for CS
 

Hi Pouya,

All of CloudStack's RA heuristics are applied by deployment planner modules and host/storagepool allocators to decide the order in which resource(pods,clusters,hosts,storage pools) will be considered for a VM deployment/migration.

Following are the existing flavors of these modules:
random: This just shuffles the list of clusters/hosts/pools that is returned by the DB lookup. Random does not mean round-robin - So if you are looking for a new host being picked up on every deployment - that may not happen.
firstfit:  This makes sure that clusters are ordered by available capacity and first hosts/pools having enough capacity is chosen within a cluster.
userdispersing: For a given account, this makes sure that VM's are dispersed  - so clusters/hosts with minimum number of running VM's for that account are chosen first. Storage Pool with minimum number of Ready storage pools for the account is chosen first.
Userconcentratedpod: Always choose the pod/cluster with max. number of VMs for the account - concentrating VM's at one pod.

You can find the source code related to above under: server/src/com/cloud/deploy, plugins/deployment-planners, plugins/host-allocators, plugins/storage-allocators

Hope this helps.

Thanks,
Prachi

-----Original Message-----
From: Linux TUX [mailto:azgil.info@yahoo.com] 
Sent: Friday, June 21, 2013 5:48 AM
To: dev@cloudstack.apache.org
Subject: Resource Management/Allocation for CS

Hi All,

Does anybody can tell me which parts of CloudStack's source code are related to its Resource Allocation (RA) process?
By RA, I mean the part of code that is responsible for VM migration or process migration, if there is any.
As you know, there are two kinds of RA, to wit: 1) server side such as VM migration, or 2) client side such as clients' proprietary schedulers.
Furthermore, client side's RA's success is dependent on knowing sever side's RA very well.

So, since i am interested to work on RA of CloudStack, if, with regard to the above information, you have any idea, please tell me?
Also, if your are working on it, please let me know. Finally, it would be really approciated if you tell me which parts of the source code is related to implementation of CloudStack's RA algorithms.

Best regards,
Pouya

RE: Resource Management/Allocation for CS

Posted by Prachi Damle <Pr...@citrix.com>.
Hi Pouya,

All of CloudStack's RA heuristics are applied by deployment planner modules and host/storagepool allocators to decide the order in which resource(pods,clusters,hosts,storage pools) will be considered for a VM deployment/migration.

Following are the existing flavors of these modules:
random: This just shuffles the list of clusters/hosts/pools that is returned by the DB lookup. Random does not mean round-robin - So if you are looking for a new host being picked up on every deployment - that may not happen.
firstfit:  This makes sure that clusters are ordered by available capacity and first hosts/pools having enough capacity is chosen within a cluster.
userdispersing: For a given account, this makes sure that VM's are dispersed  - so clusters/hosts with minimum number of running VM's for that account are chosen first. Storage Pool with minimum number of Ready storage pools for the account is chosen first.
Userconcentratedpod: Always choose the pod/cluster with max. number of VMs for the account - concentrating VM's at one pod.

You can find the source code related to above under: server/src/com/cloud/deploy, plugins/deployment-planners, plugins/host-allocators, plugins/storage-allocators

Hope this helps.

Thanks,
Prachi

-----Original Message-----
From: Linux TUX [mailto:azgil.info@yahoo.com] 
Sent: Friday, June 21, 2013 5:48 AM
To: dev@cloudstack.apache.org
Subject: Resource Management/Allocation for CS

Hi All,

Does anybody can tell me which parts of CloudStack's source code are related to its Resource Allocation (RA) process?
By RA, I mean the part of code that is responsible for VM migration or process migration, if there is any.
As you know, there are two kinds of RA, to wit: 1) server side such as VM migration, or 2) client side such as clients' proprietary schedulers.
Furthermore, client side's RA's success is dependent on knowing sever side's RA very well.

So, since i am interested to work on RA of CloudStack, if, with regard to the above information, you have any idea, please tell me?
Also, if your are working on it, please let me know. Finally, it would be really approciated if you tell me which parts of the source code is related to implementation of CloudStack's RA algorithms.

Best regards,
Pouya

Re: Resource Management/Allocation for CS

Posted by Linux TUX <az...@yahoo.com>.
Dear John,

More specifically, I'd been working on RA in distributed systems awhile, and also, I've presented a prototype for it.
The most important thing that I've learnt is: talking about RA without regarding to workloads (e.g., HTC, MTC, BoT, Scientific, Data-Intensive, etc.) is not optimal at all.

So, I am thinking about providing different RA modules for each workload. It means, when the api gets a client's workload, first,
some workload characterizations are needed (e.g., statistical modeling, classification, multi-queue, etc.), then, based on nature of
the workload the RA process by using the appropriate RA module can be near optimal, I hope. By optimal, I mean less resource consumption as compared to a general RA for all workloads.


Nevertheless, since I am coming from theory (i.e., simulation of RA for distributed systems) to here and I don't have a big image
about RA in CloudStack in mind, I'm wondering if someone gives some clues to make me ready for putting my idea into practice.
Also, unfortunately, I cannot attend in CloudStack Collab 2013, but I will follow its news and your slides.

Best regards,
Pouya



________________________________
 From: John Burwell <jb...@basho.com>
To: dev@cloudstack.apache.org; Linux TUX <az...@yahoo.com> 
Sent: Friday, 21 June 2013, 17:26
Subject: Re: Resource Management/Allocation for CS
 

Pouya,

What problem/issue/enhancements do you have in mind?

If you are attending CloudStack Collab 2013, I will speaking on this topic on Monday @ 2:30 (How to Run from a Zombie: CloudStack Distributed Process Management).  My slides will be available online after the talk as well.  

Thanks,
-John

On Jun 21, 2013, at 8:47 AM, Linux TUX <az...@yahoo.com> wrote:

> Hi All,
> 
> Does anybody can tell me which parts of CloudStack's source code are related to its Resource Allocation (RA) process?
> By RA, I mean the part of code that is responsible for VM migration or process migration, if there is any.
> As you know, there are two kinds of RA, to wit: 1) server side such as VM migration, or 2) client side such as clients' proprietary schedulers.
> Furthermore, client side's RA's success is dependent on knowing sever side's RA very well.
> 
> So, since i am interested to work on RA of CloudStack, if, with regard to the above information, you have any idea, please tell me?
> Also, if your are working on it, please let me know. Finally, it would be really approciated if you tell me which parts of the source code
> is related to implementation of CloudStack's RA algorithms.
> 
> Best regards,
> Pouya

Re: Resource Management/Allocation for CS

Posted by John Burwell <jb...@basho.com>.
Pouya,

What problem/issue/enhancements do you have in mind?

If you are attending CloudStack Collab 2013, I will speaking on this topic on Monday @ 2:30 (How to Run from a Zombie: CloudStack Distributed Process Management).  My slides will be available online after the talk as well.  

Thanks,
-John

On Jun 21, 2013, at 8:47 AM, Linux TUX <az...@yahoo.com> wrote:

> Hi All,
> 
> Does anybody can tell me which parts of CloudStack's source code are related to its Resource Allocation (RA) process?
> By RA, I mean the part of code that is responsible for VM migration or process migration, if there is any.
> As you know, there are two kinds of RA, to wit: 1) server side such as VM migration, or 2) client side such as clients' proprietary schedulers.
> Furthermore, client side's RA's success is dependent on knowing sever side's RA very well.
> 
> So, since i am interested to work on RA of CloudStack, if, with regard to the above information, you have any idea, please tell me?
> Also, if your are working on it, please let me know. Finally, it would be really approciated if you tell me which parts of the source code
> is related to implementation of CloudStack's RA algorithms.
> 
> Best regards,
> Pouya