Re: [openstack-dev] [nova] Simulating many fake nova compute nodes for scheduler testing

2014-03-06 Thread John Garbutt
On 3 March 2014 19:33, David Peraza  wrote:
> Thanks John,
>
> What I'm trying to do is to run an asynchronous task that pre-organizes the 
> target hosts for an image. Then scheduler only need to read the top of the 
> list or priority queue. We have a paper proposed for the summit that will 
> explain the approach, hopefully it gets accepted so we can have a 
> conversation on this at the summit. I suspect the DB overhead will go away if 
> we try our approach. Still theory though, that is why I want to get a 
> significant test environment to appreciate the performance better.

I attempted something similar as part of the caching scheduler work.

When picking the size of the "slot" cache, I found I got the best
performance when I turned it off. Small bursts of builds were slightly
quicker, but would get delayed if they came in when the cache was
being populated. Large bursts of requests very quickly depleted the
cache, and filling it back up was quite expensive, and you queue up
other requests while you do that. So choosing the cache size was very
tricky. All the time, you end up making some bad choices because you
are only looking at a subset of the nodes.

I am however very interested in seeing if you have found a balance
that works well. It feels like some combination would help in certain
situations. I just couldn't find either myself.

My current approach is just to cache the lists of hosts you get from
the DB, and update the host state with each decision you make, so
those requests don't race each other.

Some simple optimisations to the filter and weights system seemed to
be a much better route to improving the performance. (I had some
patches up for that, will refresh them when Juno opens).

But until we get the move to conductor work complete (using select
destination instead of run_instance), the DB calls locking all the
eventlet threads seems like the biggest issue.

Anyways, looking forward to a good discussion at the summit.

John

>
> Regards,
> David Peraza
>
> -Original Message-
> From: John Garbutt [mailto:j...@johngarbutt.com]
> Sent: Tuesday, February 25, 2014 5:45 AM
> To: OpenStack Development Mailing List (not for usage questions)
> Subject: Re: [openstack-dev] [nova] Simulating many fake nova compute nodes 
> for scheduler testing
>
> On 24 February 2014 20:13, David Peraza  
> wrote:
>> Thanks John,
>>
>> I also think it is a good idea to test the algorithm at unit test level, but 
>> I will like to try out over amqp as well, that is, we process and threads 
>> talking to each other over rabbit or qpid. I'm trying to test out 
>> performance as well.
>>
>
> Nothing beats testing the thing for real, of course.
>
> As a heads up, the overheads of DB calls turned out to dwarf any algorithmic 
> improvements I managed. There will clearly be some RPC overhead, but it 
> didn't stand out as much as the DB issue.
>
> The move to conductor work should certainly stop the scheduler making those 
> pesky DB calls to update the nova instance. And then, improvements like 
> no-db-scheduler and improvements to scheduling algorithms should shine 
> through much more.
>
> Thanks,
> John
>
>
>> -Original Message-----
>> From: John Garbutt [mailto:j...@johngarbutt.com]
>> Sent: Monday, February 24, 2014 11:51 AM
>> To: OpenStack Development Mailing List (not for usage questions)
>> Subject: Re: [openstack-dev] [nova] Simulating many fake nova compute
>> nodes for scheduler testing
>>
>> On 24 February 2014 16:24, David Peraza  
>> wrote:
>>> Hello all,
>>>
>>> I have been trying some new ideas on scheduler and I think I'm
>>> reaching a resource issue. I'm running 6 compute service right on my
>>> 4 CPU 4 Gig VM, and I started to get some memory allocation issues.
>>> Keystone and Nova are already complaining there is not enough memory.
>>> The obvious solution to add more candidates is to get another VM and set 
>>> another 6 Fake compute service.
>>> I could do that but I think I need to be able to scale more without
>>> the need to use this much resources. I will like to simulate a cloud
>>> of 100 maybe
>>> 1000 compute nodes that do nothing (Fake driver) this should not take
>>> this much memory. Anyone knows of a more efficient way to  simulate
>>> many computes? I was thinking changing the Fake driver to report many
>>> compute services in different threads instead of having to spawn a
>>> process per compute service. Any other ideas?
>>
>> It depends what you want to test, but I was able to look at tuning the 
>> filters and weights using the test at the end of this 

Re: [openstack-dev] [nova] Simulating many fake nova compute nodes for scheduler testing

2014-03-05 Thread Khanh-Toan Tran
Well I use a 8 cores 128G RAM physical host :) I did not see much of the
CPU consumption for these 100 containers, so I suspect we can use less
resources.

> -Message d'origine-
> De : David Peraza [mailto:david_per...@persistentsys.com]
> Envoyé : lundi 3 mars 2014 20:27
> À : OpenStack Development Mailing List (not for usage questions)
> Objet : Re: [openstack-dev] [nova] Simulating many fake nova compute
nodes
> for scheduler testing
>
> Thanks Khanh,
>
> I see the potential issue with using threads. Thanks for pointing out.
On using
> containers, that sounds like a cool configuration but that should have a
bigger
> footprint on the host resources than just a separate service instance
like I'm
> doing. I have to admit that 100 fake computes per physical host is good
though.
> How big is your physical host. I'm running a 4 Gig 4 CPU VM. I suspect
your
> physical system is much more equipped.
>
> Regards,
> David Peraza | Openstack Solutions Architect
david_per...@persistentsys.com |
> Cell: (305)766-2520 Persistent Systems Inc. | Partners in Innovation
> | www.persistentsys.com
>
> -Original Message-
> From: Khanh-Toan Tran [mailto:khanh-toan.t...@cloudwatt.com]
> Sent: Tuesday, February 25, 2014 3:49 AM
> To: OpenStack Development Mailing List (not for usage questions)
> Subject: Re: [openstack-dev] [nova] Simulating many fake nova compute
nodes
> for scheduler testing
>
> > > I could do that but I think I need to be able to scale more without
> > > the need to use this much resources. I will like to simulate a cloud
> > > of 100 maybe
> > > 1000 compute nodes that do nothing (Fake driver) this should not
> > > take this much memory. Anyone knows of a more efficient way to
> > > simulate many computes? I was thinking changing the Fake driver to
> > > report many compute services in different threads instead of having
> > > to spawn a process per compute service. Any other ideas?
>
> I'm not sure using threads is a good idea. We need a dedicated resources
pool
> for each compute. If the threads share the same resources pool, then
every new
> VM will change the available resources on all computes, which may lead
to
> unexpected & unpredicted scheduling result. For instance, RamWeigher may
> return the same compute twice instead of spreading, because at each time
it
> finds out that the computes have the same free_ram.
>
> Using compute inside LXC, I created 100 computes per physical host. Here
is
> what I did, it's very simple:
>  -  Creating a LXC with logical volume
>   - Installing a fake nova-compute inside the LXC
>   - Make a booting script that modifies its nova.conf to use its IP
address & starts
> nova-compute
>   - Using the LXC above as the master, clone as many compute as you
like!
>
> (Note that while cloning the LXC, the nova.conf is copied with the
former's IP
> address, that's why we need the booting script.)
>
> Best regards,
>
> Toan
>
>
> > -----Message d'origine-----
> > De : David Peraza [mailto:david_per...@persistentsys.com]
> > Envoyé : lundi 24 février 2014 21:13
> > À : OpenStack Development Mailing List (not for usage questions) Objet
> > : Re: [openstack-dev] [nova] Simulating many fake nova compute
> nodes
> > for scheduler testing
> >
> > Thanks John,
> >
> > I also think it is a good idea to test the algorithm at unit test
> > level,
> but I will like
> > to try out over amqp as well, that is, we process and threads talking
> > to
> each
> > other over rabbit or qpid. I'm trying to test out performance as well.
> >
> > Regards,
> > David Peraza
> >
> > -Original Message-
> > From: John Garbutt [mailto:j...@johngarbutt.com]
> > Sent: Monday, February 24, 2014 11:51 AM
> > To: OpenStack Development Mailing List (not for usage questions)
> > Subject: Re: [openstack-dev] [nova] Simulating many fake nova compute
> nodes
> > for scheduler testing
> >
> > On 24 February 2014 16:24, David Peraza
> > 
> > wrote:
> > > Hello all,
> > >
> > > I have been trying some new ideas on scheduler and I think I'm
> > > reaching a resource issue. I'm running 6 compute service right on my
> > > 4 CPU 4 Gig VM, and I started to get some memory allocation issues.
> > > Keystone and Nova are already complaining there is not enough
memory.
> > > The obvious solution to add more candidates is to get another VM and
> set
> > another 6 Fake compute service.
> > > I could do that but I think I need to be able to scale more without
> &

Re: [openstack-dev] [nova] Simulating many fake nova compute nodes for scheduler testing

2014-03-04 Thread Mike Wilson
On Mon, Mar 3, 2014 at 3:10 PM, Sergey Skripnick wrote:

>
>
>
>  I can run multiple compute service in same hosts without containers.
>> Containers give you a nice isolation and another way to try a more
>> realistic scenario, but my initial goal now is to be able to simulate many
>> fake compute node scenario with as little resources as possible.
>>
>
> I believe it is impossible to use threads without changes in the code.
>
>
Having gone the threads route once myself, I can say from experience that
it requires changes to the code. I was able to get threads up and running
with a few modifications, but there were other issues that I never fully
resolved that make me lean more towards the container model that has been
discussed earlier in the thread. Btw, I would suggest having a look at
Rally, the Openstack Benchmarking Service. They have deployment frameworks
that use LXC that you might be able to write a "thread" model for.

-Mike


>
>
> --
> Regards,
> Sergey Skripnick
>
> ___
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Simulating many fake nova compute nodes for scheduler testing

2014-03-03 Thread Sergey Skripnick
David Peraza  писал(а) в своём письме Mon,  
03 Mar 2014 23:52:12 +0200:



Thanks Sergey,

Will look into this, but still have the same question, would introducing  
containers increase my footprint per fake compute service?


Yes. There is more then one processes running in the container.

I can run multiple compute service in same hosts without containers.  
Containers give you a nice isolation and another way to try a more  
realistic scenario, but my initial goal now is to be able to simulate  
many fake compute node scenario with as little resources as possible.


I believe it is impossible to use threads without changes in the code.


--
Regards,
Sergey Skripnick

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Simulating many fake nova compute nodes for scheduler testing

2014-03-03 Thread David Peraza
Thanks Sergey,

Will look into this, but still have the same question, would introducing 
containers increase my footprint per fake compute service? I can run multiple 
compute service in same hosts without containers. Containers give you a nice 
isolation and another way to try a more realistic scenario, but my initial goal 
now is to be able to simulate many fake compute node scenario with as little 
resources as possible. 

Regards,
David Peraza 

-Original Message-
From: Sergey Skripnick [mailto:sskripn...@mirantis.com] 
Sent: Monday, March 03, 2014 3:18 PM
To: openstack-dev@lists.openstack.org
Subject: Re: [openstack-dev] [nova] Simulating many fake nova compute nodes for 
scheduler testing

David Peraza  писал(а) в своём письме Mon,  
03 Mar 2014 21:27:01 +0200:

>
> Using compute inside LXC, I created 100 computes per physical host. Here  
> is what I did, it's very simple:
>  -  Creating a LXC with logical volume
>   - Installing a fake nova-compute inside the LXC
>   - Make a booting script that modifies its nova.conf to use its IP  
> address & starts nova-compute
>   - Using the LXC above as the master, clone as many compute as you like!
>
> (Note that while cloning the LXC, the nova.conf is copied with the  
> former's IP address, that's why we need the booting script.)
>


Also btrfs can be used to reduce disk space usage. Scenario is looks like  
this:

* create btrfs filesystem on /var/lib/lxc
* create first container with btrfs backingstore (lxc-create -B btrfs ...)
* setup devstack with fakevirt
* stop container, and make N snapshotted clones (lxc-clone --snapshot ...)
* start containers and run booting script (here script used by Rally [0])

If you do not want to do all this manually, there is  
MultihostEngine/LxcEngine
coming soon in Rally [1]

[0]  
https://review.openstack.org/#/c/56222/25/rally/deploy/engines/lxc/start.sh
[1] https://wiki.openstack.org/wiki/Rally

-- 
Regards,
Sergey Skripnick

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

DISCLAIMER
==
This e-mail may contain privileged and confidential information which is the 
property of Persistent Systems Ltd. It is intended only for the use of the 
individual or entity to which it is addressed. If you are not the intended 
recipient, you are not authorized to read, retain, copy, print, distribute or 
use this message. If you have received this communication in error, please 
notify the sender and delete all copies of this message. Persistent Systems 
Ltd. does not accept any liability for virus infected mails.

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Simulating many fake nova compute nodes for scheduler testing

2014-03-03 Thread Sergey Skripnick
David Peraza  писал(а) в своём письме Mon,  
03 Mar 2014 21:27:01 +0200:




Using compute inside LXC, I created 100 computes per physical host. Here  
is what I did, it's very simple:

 -  Creating a LXC with logical volume
  - Installing a fake nova-compute inside the LXC
  - Make a booting script that modifies its nova.conf to use its IP  
address & starts nova-compute

  - Using the LXC above as the master, clone as many compute as you like!

(Note that while cloning the LXC, the nova.conf is copied with the  
former's IP address, that's why we need the booting script.)





Also btrfs can be used to reduce disk space usage. Scenario is looks like  
this:


* create btrfs filesystem on /var/lib/lxc
* create first container with btrfs backingstore (lxc-create -B btrfs ...)
* setup devstack with fakevirt
* stop container, and make N snapshotted clones (lxc-clone --snapshot ...)
* start containers and run booting script (here script used by Rally [0])

If you do not want to do all this manually, there is  
MultihostEngine/LxcEngine

coming soon in Rally [1]

[0]  
https://review.openstack.org/#/c/56222/25/rally/deploy/engines/lxc/start.sh

[1] https://wiki.openstack.org/wiki/Rally

--
Regards,
Sergey Skripnick

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Simulating many fake nova compute nodes for scheduler testing

2014-03-03 Thread David Peraza
Thanks John,

What I'm trying to do is to run an asynchronous task that pre-organizes the 
target hosts for an image. Then scheduler only need to read the top of the list 
or priority queue. We have a paper proposed for the summit that will explain 
the approach, hopefully it gets accepted so we can have a conversation on this 
at the summit. I suspect the DB overhead will go away if we try our approach. 
Still theory though, that is why I want to get a significant test environment 
to appreciate the performance better.

Regards,
David Peraza

-Original Message-
From: John Garbutt [mailto:j...@johngarbutt.com] 
Sent: Tuesday, February 25, 2014 5:45 AM
To: OpenStack Development Mailing List (not for usage questions)
Subject: Re: [openstack-dev] [nova] Simulating many fake nova compute nodes for 
scheduler testing

On 24 February 2014 20:13, David Peraza  wrote:
> Thanks John,
>
> I also think it is a good idea to test the algorithm at unit test level, but 
> I will like to try out over amqp as well, that is, we process and threads 
> talking to each other over rabbit or qpid. I'm trying to test out performance 
> as well.
>

Nothing beats testing the thing for real, of course.

As a heads up, the overheads of DB calls turned out to dwarf any algorithmic 
improvements I managed. There will clearly be some RPC overhead, but it didn't 
stand out as much as the DB issue.

The move to conductor work should certainly stop the scheduler making those 
pesky DB calls to update the nova instance. And then, improvements like 
no-db-scheduler and improvements to scheduling algorithms should shine through 
much more.

Thanks,
John


> -Original Message-
> From: John Garbutt [mailto:j...@johngarbutt.com]
> Sent: Monday, February 24, 2014 11:51 AM
> To: OpenStack Development Mailing List (not for usage questions)
> Subject: Re: [openstack-dev] [nova] Simulating many fake nova compute 
> nodes for scheduler testing
>
> On 24 February 2014 16:24, David Peraza  
> wrote:
>> Hello all,
>>
>> I have been trying some new ideas on scheduler and I think I'm 
>> reaching a resource issue. I'm running 6 compute service right on my 
>> 4 CPU 4 Gig VM, and I started to get some memory allocation issues.
>> Keystone and Nova are already complaining there is not enough memory.
>> The obvious solution to add more candidates is to get another VM and set 
>> another 6 Fake compute service.
>> I could do that but I think I need to be able to scale more without 
>> the need to use this much resources. I will like to simulate a cloud 
>> of 100 maybe
>> 1000 compute nodes that do nothing (Fake driver) this should not take 
>> this much memory. Anyone knows of a more efficient way to  simulate 
>> many computes? I was thinking changing the Fake driver to report many 
>> compute services in different threads instead of having to spawn a 
>> process per compute service. Any other ideas?
>
> It depends what you want to test, but I was able to look at tuning the 
> filters and weights using the test at the end of this file:
> https://review.openstack.org/#/c/67855/33/nova/tests/scheduler/test_ca
> ching_scheduler.py
>
> Cheers,
> John
>
> ___
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
> DISCLAIMER
> ==
> This e-mail may contain privileged and confidential information which is the 
> property of Persistent Systems Ltd. It is intended only for the use of the 
> individual or entity to which it is addressed. If you are not the intended 
> recipient, you are not authorized to read, retain, copy, print, distribute or 
> use this message. If you have received this communication in error, please 
> notify the sender and delete all copies of this message. Persistent Systems 
> Ltd. does not accept any liability for virus infected mails.
>
>
> ___
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

DISCLAIMER
==
This e-mail may contain privileged and confidential information which is the 
property of Persistent Systems Ltd. It is intended only for the use of the 
individual or entity to which it is addressed. If you are not the intended 
recipient, you are not authorized to read, retain, copy, print, distribute or 
use this message. If you have received this communication in error, please 
notify the sender and delete all copies of t

Re: [openstack-dev] [nova] Simulating many fake nova compute nodes for scheduler testing

2014-03-03 Thread David Peraza
Thanks Khanh,

I see the potential issue with using threads. Thanks for pointing out. On using 
containers, that sounds like a cool configuration but that should have a bigger 
footprint on the host resources than just a separate service instance like I'm 
doing. I have to admit that 100 fake computes per physical host is good though. 
How big is your physical host. I'm running a 4 Gig 4 CPU VM. I suspect your 
physical system is much more equipped. 

Regards,
David Peraza | Openstack Solutions Architect
david_per...@persistentsys.com | Cell: (305)766-2520 
Persistent Systems Inc. | Partners in Innovation | www.persistentsys.com

-Original Message-
From: Khanh-Toan Tran [mailto:khanh-toan.t...@cloudwatt.com] 
Sent: Tuesday, February 25, 2014 3:49 AM
To: OpenStack Development Mailing List (not for usage questions)
Subject: Re: [openstack-dev] [nova] Simulating many fake nova compute nodes for 
scheduler testing

> > I could do that but I think I need to be able to scale more without 
> > the need to use this much resources. I will like to simulate a cloud 
> > of 100 maybe
> > 1000 compute nodes that do nothing (Fake driver) this should not 
> > take this much memory. Anyone knows of a more efficient way to  
> > simulate many computes? I was thinking changing the Fake driver to 
> > report many compute services in different threads instead of having 
> > to spawn a process per compute service. Any other ideas?

I'm not sure using threads is a good idea. We need a dedicated resources pool 
for each compute. If the threads share the same resources pool, then every new 
VM will change the available resources on all computes, which may lead to 
unexpected & unpredicted scheduling result. For instance, RamWeigher may return 
the same compute twice instead of spreading, because at each time it finds out 
that the computes have the same free_ram.

Using compute inside LXC, I created 100 computes per physical host. Here is 
what I did, it's very simple:
 -  Creating a LXC with logical volume
  - Installing a fake nova-compute inside the LXC
  - Make a booting script that modifies its nova.conf to use its IP address & 
starts nova-compute
  - Using the LXC above as the master, clone as many compute as you like!

(Note that while cloning the LXC, the nova.conf is copied with the former's IP 
address, that's why we need the booting script.)

Best regards,

Toan


> -Message d'origine-
> De : David Peraza [mailto:david_per...@persistentsys.com]
> Envoyé : lundi 24 février 2014 21:13
> À : OpenStack Development Mailing List (not for usage questions) Objet 
> : Re: [openstack-dev] [nova] Simulating many fake nova compute
nodes
> for scheduler testing
>
> Thanks John,
>
> I also think it is a good idea to test the algorithm at unit test 
> level,
but I will like
> to try out over amqp as well, that is, we process and threads talking 
> to
each
> other over rabbit or qpid. I'm trying to test out performance as well.
>
> Regards,
> David Peraza
>
> -Original Message-
> From: John Garbutt [mailto:j...@johngarbutt.com]
> Sent: Monday, February 24, 2014 11:51 AM
> To: OpenStack Development Mailing List (not for usage questions)
> Subject: Re: [openstack-dev] [nova] Simulating many fake nova compute
nodes
> for scheduler testing
>
> On 24 February 2014 16:24, David Peraza 
> 
> wrote:
> > Hello all,
> >
> > I have been trying some new ideas on scheduler and I think I'm 
> > reaching a resource issue. I'm running 6 compute service right on my 
> > 4 CPU 4 Gig VM, and I started to get some memory allocation issues.
> > Keystone and Nova are already complaining there is not enough memory.
> > The obvious solution to add more candidates is to get another VM and
set
> another 6 Fake compute service.
> > I could do that but I think I need to be able to scale more without 
> > the need to use this much resources. I will like to simulate a cloud 
> > of 100 maybe
> > 1000 compute nodes that do nothing (Fake driver) this should not 
> > take this much memory. Anyone knows of a more efficient way to  
> > simulate many computes? I was thinking changing the Fake driver to 
> > report many compute services in different threads instead of having 
> > to spawn a process per compute service. Any other ideas?
>
> It depends what you want to test, but I was able to look at tuning the
filters and
> weights using the test at the end of this file:
>
https://review.openstack.org/#/c/67855/33/nova/tests/scheduler/test_cachin
g
> _scheduler.py
>
> Cheers,
> John
>
> ___
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/c

Re: [openstack-dev] [nova] Simulating many fake nova compute nodes for scheduler testing

2014-02-25 Thread yunhong jiang
On Tue, 2014-02-25 at 10:45 +, John Garbutt wrote:
> 
> As a heads up, the overheads of DB calls turned out to dwarf any
> algorithmic improvements I managed. There will clearly be some RPC
> overhead, but it didn't stand out as much as the DB issue.
> 
> The move to conductor work should certainly stop the scheduler making
> those pesky DB calls to update the nova instance. And then,
> improvements like no-db-scheduler and improvements to scheduling
> algorithms should shine through much more.
> 
Although DB access is sure the key for performance, but do we really
want to pursue conductor-based scheduler?

--jyh


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Simulating many fake nova compute nodes for scheduler testing

2014-02-25 Thread John Garbutt
On 24 February 2014 20:13, David Peraza  wrote:
> Thanks John,
>
> I also think it is a good idea to test the algorithm at unit test level, but 
> I will like to try out over amqp as well, that is, we process and threads 
> talking to each other over rabbit or qpid. I'm trying to test out performance 
> as well.
>

Nothing beats testing the thing for real, of course.

As a heads up, the overheads of DB calls turned out to dwarf any
algorithmic improvements I managed. There will clearly be some RPC
overhead, but it didn't stand out as much as the DB issue.

The move to conductor work should certainly stop the scheduler making
those pesky DB calls to update the nova instance. And then,
improvements like no-db-scheduler and improvements to scheduling
algorithms should shine through much more.

Thanks,
John


> -Original Message-
> From: John Garbutt [mailto:j...@johngarbutt.com]
> Sent: Monday, February 24, 2014 11:51 AM
> To: OpenStack Development Mailing List (not for usage questions)
> Subject: Re: [openstack-dev] [nova] Simulating many fake nova compute nodes 
> for scheduler testing
>
> On 24 February 2014 16:24, David Peraza  
> wrote:
>> Hello all,
>>
>> I have been trying some new ideas on scheduler and I think I'm
>> reaching a resource issue. I'm running 6 compute service right on my 4
>> CPU 4 Gig VM, and I started to get some memory allocation issues.
>> Keystone and Nova are already complaining there is not enough memory.
>> The obvious solution to add more candidates is to get another VM and set 
>> another 6 Fake compute service.
>> I could do that but I think I need to be able to scale more without
>> the need to use this much resources. I will like to simulate a cloud
>> of 100 maybe
>> 1000 compute nodes that do nothing (Fake driver) this should not take
>> this much memory. Anyone knows of a more efficient way to  simulate
>> many computes? I was thinking changing the Fake driver to report many
>> compute services in different threads instead of having to spawn a
>> process per compute service. Any other ideas?
>
> It depends what you want to test, but I was able to look at tuning the 
> filters and weights using the test at the end of this file:
> https://review.openstack.org/#/c/67855/33/nova/tests/scheduler/test_caching_scheduler.py
>
> Cheers,
> John
>
> ___
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
> DISCLAIMER
> ==
> This e-mail may contain privileged and confidential information which is the 
> property of Persistent Systems Ltd. It is intended only for the use of the 
> individual or entity to which it is addressed. If you are not the intended 
> recipient, you are not authorized to read, retain, copy, print, distribute or 
> use this message. If you have received this communication in error, please 
> notify the sender and delete all copies of this message. Persistent Systems 
> Ltd. does not accept any liability for virus infected mails.
>
>
> ___
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Simulating many fake nova compute nodes for scheduler testing

2014-02-25 Thread Khanh-Toan Tran
> > I could do that but I think I need to be able to scale more without
> > the need to use this much resources. I will like to simulate a cloud
> > of 100 maybe
> > 1000 compute nodes that do nothing (Fake driver) this should not take
> > this much memory. Anyone knows of a more efficient way to  simulate
> > many computes? I was thinking changing the Fake driver to report many
> > compute services in different threads instead of having to spawn a
> > process per compute service. Any other ideas?

I'm not sure using threads is a good idea. We need a dedicated resources
pool for each compute. If the threads share the same resources pool, then
every new VM will change the available resources on all computes, which
may lead to unexpected & unpredicted scheduling result. For instance,
RamWeigher may return the same compute twice instead of spreading, because
at each time it finds out that the computes have the same free_ram.

Using compute inside LXC, I created 100 computes per physical host. Here
is what I did, it's very simple:
 -  Creating a LXC with logical volume
  - Installing a fake nova-compute inside the LXC
  - Make a booting script that modifies its nova.conf to use its IP
address & starts nova-compute
  - Using the LXC above as the master, clone as many compute as you like!

(Note that while cloning the LXC, the nova.conf is copied with the
former's IP address, that's why we need the booting script.)

Best regards,

Toan


> -Message d'origine-
> De : David Peraza [mailto:david_per...@persistentsys.com]
> Envoyé : lundi 24 février 2014 21:13
> À : OpenStack Development Mailing List (not for usage questions)
> Objet : Re: [openstack-dev] [nova] Simulating many fake nova compute
nodes
> for scheduler testing
>
> Thanks John,
>
> I also think it is a good idea to test the algorithm at unit test level,
but I will like
> to try out over amqp as well, that is, we process and threads talking to
each
> other over rabbit or qpid. I'm trying to test out performance as well.
>
> Regards,
> David Peraza
>
> -Original Message-
> From: John Garbutt [mailto:j...@johngarbutt.com]
> Sent: Monday, February 24, 2014 11:51 AM
> To: OpenStack Development Mailing List (not for usage questions)
> Subject: Re: [openstack-dev] [nova] Simulating many fake nova compute
nodes
> for scheduler testing
>
> On 24 February 2014 16:24, David Peraza 
> wrote:
> > Hello all,
> >
> > I have been trying some new ideas on scheduler and I think I'm
> > reaching a resource issue. I'm running 6 compute service right on my 4
> > CPU 4 Gig VM, and I started to get some memory allocation issues.
> > Keystone and Nova are already complaining there is not enough memory.
> > The obvious solution to add more candidates is to get another VM and
set
> another 6 Fake compute service.
> > I could do that but I think I need to be able to scale more without
> > the need to use this much resources. I will like to simulate a cloud
> > of 100 maybe
> > 1000 compute nodes that do nothing (Fake driver) this should not take
> > this much memory. Anyone knows of a more efficient way to  simulate
> > many computes? I was thinking changing the Fake driver to report many
> > compute services in different threads instead of having to spawn a
> > process per compute service. Any other ideas?
>
> It depends what you want to test, but I was able to look at tuning the
filters and
> weights using the test at the end of this file:
>
https://review.openstack.org/#/c/67855/33/nova/tests/scheduler/test_cachin
g
> _scheduler.py
>
> Cheers,
> John
>
> ___
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
> DISCLAIMER
> ==
> This e-mail may contain privileged and confidential information which is
the
> property of Persistent Systems Ltd. It is intended only for the use of
the
> individual or entity to which it is addressed. If you are not the
intended recipient,
> you are not authorized to read, retain, copy, print, distribute or use
this
> message. If you have received this communication in error, please notify
the
> sender and delete all copies of this message. Persistent Systems Ltd.
does not
> accept any liability for virus infected mails.
>
>
> ___
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Simulating many fake nova compute nodes for scheduler testing

2014-02-24 Thread David Peraza
Thanks John,

I also think it is a good idea to test the algorithm at unit test level, but I 
will like to try out over amqp as well, that is, we process and threads talking 
to each other over rabbit or qpid. I'm trying to test out performance as well. 

Regards,
David Peraza

-Original Message-
From: John Garbutt [mailto:j...@johngarbutt.com] 
Sent: Monday, February 24, 2014 11:51 AM
To: OpenStack Development Mailing List (not for usage questions)
Subject: Re: [openstack-dev] [nova] Simulating many fake nova compute nodes for 
scheduler testing

On 24 February 2014 16:24, David Peraza  wrote:
> Hello all,
>
> I have been trying some new ideas on scheduler and I think I'm 
> reaching a resource issue. I'm running 6 compute service right on my 4 
> CPU 4 Gig VM, and I started to get some memory allocation issues. 
> Keystone and Nova are already complaining there is not enough memory. 
> The obvious solution to add more candidates is to get another VM and set 
> another 6 Fake compute service.
> I could do that but I think I need to be able to scale more without 
> the need to use this much resources. I will like to simulate a cloud 
> of 100 maybe
> 1000 compute nodes that do nothing (Fake driver) this should not take 
> this much memory. Anyone knows of a more efficient way to  simulate 
> many computes? I was thinking changing the Fake driver to report many 
> compute services in different threads instead of having to spawn a 
> process per compute service. Any other ideas?

It depends what you want to test, but I was able to look at tuning the filters 
and weights using the test at the end of this file:
https://review.openstack.org/#/c/67855/33/nova/tests/scheduler/test_caching_scheduler.py

Cheers,
John

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

DISCLAIMER
==
This e-mail may contain privileged and confidential information which is the 
property of Persistent Systems Ltd. It is intended only for the use of the 
individual or entity to which it is addressed. If you are not the intended 
recipient, you are not authorized to read, retain, copy, print, distribute or 
use this message. If you have received this communication in error, please 
notify the sender and delete all copies of this message. Persistent Systems 
Ltd. does not accept any liability for virus infected mails.


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Simulating many fake nova compute nodes for scheduler testing

2014-02-24 Thread John Garbutt
On 24 February 2014 16:24, David Peraza  wrote:
> Hello all,
>
> I have been trying some new ideas on scheduler and I think I'm reaching a
> resource issue. I'm running 6 compute service right on my 4 CPU 4 Gig VM,
> and I started to get some memory allocation issues. Keystone and Nova are
> already complaining there is not enough memory. The obvious solution to add
> more candidates is to get another VM and set another 6 Fake compute service.
> I could do that but I think I need to be able to scale more without the need
> to use this much resources. I will like to simulate a cloud of 100 maybe
> 1000 compute nodes that do nothing (Fake driver) this should not take this
> much memory. Anyone knows of a more efficient way to  simulate many
> computes? I was thinking changing the Fake driver to report many compute
> services in different threads instead of having to spawn a process per
> compute service. Any other ideas?

It depends what you want to test, but I was able to look at tuning the
filters and weights using the test at the end of this file:
https://review.openstack.org/#/c/67855/33/nova/tests/scheduler/test_caching_scheduler.py

Cheers,
John

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


[openstack-dev] [nova] Simulating many fake nova compute nodes for scheduler testing

2014-02-24 Thread David Peraza
Hello all,

I have been trying some new ideas on scheduler and I think I'm reaching a 
resource issue. I'm running 6 compute service right on my 4 CPU 4 Gig VM, and I 
started to get some memory allocation issues. Keystone and Nova are already 
complaining there is not enough memory. The obvious solution to add more 
candidates is to get another VM and set another 6 Fake compute service. I could 
do that but I think I need to be able to scale more without the need to use 
this much resources. I will like to simulate a cloud of 100 maybe 1000 compute 
nodes that do nothing (Fake driver) this should not take this much memory. 
Anyone knows of a more efficient way to  simulate many computes? I was thinking 
changing the Fake driver to report many compute services in different threads 
instead of having to spawn a process per compute service. Any other ideas?

Regards,
David Peraza


DISCLAIMER
==
This e-mail may contain privileged and confidential information which is the 
property of Persistent Systems Ltd. It is intended only for the use of the 
individual or entity to which it is addressed. If you are not the intended 
recipient, you are not authorized to read, retain, copy, print, distribute or 
use this message. If you have received this communication in error, please 
notify the sender and delete all copies of this message. Persistent Systems 
Ltd. does not accept any liability for virus infected mails.

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev