[chef] Re: chef-client memory usage


Chronological Thread 
  • From: Brad Knowles < >
  • To:
  • Cc: Brad Knowles < >
  • Subject: [chef] Re: chef-client memory usage
  • Date: Thu, 8 Dec 2011 17:00:29 -0600


On Dec 8, 2011, at 3:43 PM, Chris wrote:

> My company is pretty late to the Chef party, only getting things started 
> about 6 months ago (after a year of asking for it), but now that we have 
> things up and running we've run into a bit of a problem. The client 
> consumes a fairly large amount of memory, between 175-250m per server. This 
> has caused a lot of concern from the Operations team since that amount * N 
> VMs can get quite expensive. I've been doing some research into this and 
> noticed that the amount of resident memory can depend on how many recipes 
> are loaded on a node, and Opscode docs seem to confirm this. Right now 
> these cookbooks are loaded into a single base role and added to each node 
> for ease of use. They're all OS level recipes to manage hostfiles, 
> resolv.conf etc.. etc.. There are 20 total. We also have application roles 
> that can add another 3 or 4 recipes.

We've been doing chef since August using 0.10.4 on CentOS 5.6.  We currently 
have 43 cookbooks and 37 roles across all of our machines, but I use roles 
very heavily (I'll test a new cookbook as a new role on a new machine and 
then when I'm happy I might include that role as part of another larger 
role).  We just spun up a "staging" environment today, which added twelve new 
nodes, taking us up to 33 total being managed by chef.  On one of our most 
complex nodes, the run_list has five main roles loaded, while the expanded 
run_list is sixteen roles and comprises thirty recipes.

I checked, and when chef-client is active, we hit a VSS of about 195MB, but a 
Resident (working) Set Size of 60-70MB.  Even a dry run includes multiple 
invocations of Python, Perl, and various other programs and languages, many 
of which have VSS & RSS that are almost as big as chef-client, even though 
they might only persist for a few seconds during the run.

In comparison, the RevealCloud agent that we run on every machine has a VSS 
of ~160MB, although the RSS is just over 2MB.  This machine is brand-new and 
is virtually idle, but each httpd process has a VSS of ~150MB and an RSS of 
just under 5MB, and we spin up a total of seventeen of them.

This is on a Rackspace "flavor 3" VM which has allocated to it 1GB of RAM, 
40GB of hard disk space (~35GB usable), etc....  There are only two VM images 
that Rackspace makes available that are smaller than this -- a "flavor 2" 
with 512MB of RAM, and a "flavor 1" with 256MB of RAM.


Compared to all the other things that this VM is doing, the overhead of 
chef-client seems pretty reasonable to me -- not really any more than another 
httpd process, or the overhead from the RevealCloud monitoring system.  Not 
something that I would consider totally negligible, but also not that 
significant.

Speaking only for myself, I believe that if you've got systems where you 
really are this tightly constrained for memory, then I think you've got much 
bigger problems than whether or not you can afford to run chef-client.

-- 
Brad Knowles 
< >
SAGE Level IV, Chef Level 0.0.1




Archive powered by MHonArc 2.6.16.

§