Hi, I must admit I'd really like to like puppet, so I'm a bit agitated by this issue, and won't rest till I know the cause :) . Sorry for the information overload, hope you don't mind.
First of all, I've followed Martin's suggestion and simplified my config. This is my configuration in it's entirety: nodes.pp: node 'puptest.domain.com' { include onlyone } onlyone.pp: class onlyone { $pack_list = ["large-package"] package { $pack_list: ensure => installed } $username = "someuser" user { "$username": comment => "Some user", home => "/home/$username", managehome => "true", shell => '/bin/bash' } file { "/data/installed/by/large-package": owner => "$username", group => "$username", recurse => "true", require => [ User["$username"], Package["large-package"] ], ensure => "directory", checksum => undef } } No effect though, the issue still occurs after all files have been chown'd. I've also tried attaching gdb to the puppetd process and breaking during high CPU usage. If I do a backtrace then, most of the backtrace contains ?? -> can't derive. If I only leave the methods gdb can determine, this is the stacktrace: st_foreach () from /usr/lib/libruby1.8.so.1.8 st_foreach () from /usr/lib/libruby1.8.so.1.8 st_foreach () from /usr/lib/libruby1.8.so.1.8 st_foreach () from /usr/lib/libruby1.8.so.1.8 st_foreach () from /usr/lib/libruby1.8.so.1.8 st_foreach () from /usr/lib/libruby1.8.so.1.8 st_foreach () from /usr/lib/libruby1.8.so.1.8 ruby_xmalloc () from /usr/lib/libruby1.8.so.1.8 rb_yield_values () from /usr/lib/libruby1.8.so.1.8 rb_ary_each () from /usr/lib/libruby1.8.so.1.8 rb_funcall2 () from /usr/lib/libruby1.8.so.1.8 rb_iterate () from /usr/lib/libruby1.8.so.1.8 rb_block_call () from /usr/lib/libruby1.8.so.1.8 No idea if this is of any use ... I've also tried using --debug, but no debug statements are printed either during the entire time puppetd is hogging the CPU. Will have a second look though, maybe something interesting is printed earlier... On Mar 12, 1:58 pm, Martin Wheldon <mwhel...@googlemail.com> wrote: > Hi, > > Is this directory the only resource you are managing or are there others. > If not then try disabling all other resources and see if you still get > the same issue? > > Best Regards > > Martin Wheldon > > On Fri, Mar 12, 2010 at 12:55 PM, DieterVDW <dieter...@gmail.com> wrote: > > Also, whatever Puppetd is doing then, it seems to be unnecessary. > > > If I execute puppetd -tv and wait until all files have been chown'd, > > and then hit CTRL-C and run puppetd again, > > the second time, puppetd finishes in about a minute. > > The total process of running puppetd twice takes about 4 minutes . > > > So by manipulating the execution of puppetd using a CTRL-C keystroke I > > can reach the intended end state in 4 minutes. > > If I leave puppetd to do it by itself, it takes 30+ minutes of 100% > > CPU usage... > > > On Mar 12, 1:43 pm, DieterVDW <dieter...@gmail.com> wrote: > >> Aren't the time values in seconds? > >> Because I can't match the "Total: 54.78" line to the "notice: Finished > >> catalog run in 1877.06 seconds" . > > >> Also, the strange thing is that the actual changing of owner and group > >> happens pretty fast. > >> I see these messages passing during +- 20s for all files: > >> notice: /File[/some/file]/owner: owner changed 'wronguser' to > >> 'rightuser' > >> notice: /File[/some/file]/group: group changed 'wronggroup' to > >> 'rightgroup' > > >> It's AFTER this has happened that puppetd stalls for 30+ minutes. > >> So it must be some kind of wrapup action... ? > > >> D > > >> On Mar 12, 1:26 pm, Trevor Vaughan <tvaug...@onyxpoint.com> wrote: > > >> > So, it looks like 30 minutes is being taken up in the Package type and > >> > 19 in the File type. > > >> > The Package type probably won't eat up much CPU at all as it's just > >> > fetching and installing packages (unless they are some huge packages). > > >> > You seem to be trying to recursively manage *something* using the File > >> > type. > > >> > What happens is that Puppet creates an actual file object for each > >> > file and directory in the recursed path. Then, it takes the graph and > >> > applies the changes to each file that has been seen. I'm not certain, > >> > but I think that it builds this tree each time it runs to ensure that > >> > nothing has changed under the path. > > >> > This processing has to happen on the client since the server has no > >> > previous knowledge of the client's file structure. > > >> > That said, for deep directory/many file file statements, just spawn an > >> > exec until the internal Puppet logic can be optimized. > > >> > Trevor > > >> > On Fri, Mar 12, 2010 at 6:32 AM, DieterVDW <dieter...@gmail.com> wrote: > >> > > Some more information from the (undocumented) --summarize option I > >> > > just discovered: > > >> > > Changes: > >> > > Total: 4271 > >> > > Resources: > >> > > Applied: 4271 > >> > > Out of sync: 2138 > >> > > Scheduled: 4435 > >> > > Total: 115 > >> > > Time: > >> > > Config retrieval: 1.36 > >> > > Exec: 0.77 > >> > > File: 19.23 > >> > > Filebucket: 0.00 > >> > > Host: 0.00 > >> > > Package: 31.99 > >> > > Schedule: 0.00 > >> > > Service: 1.42 > >> > > User: 0.01 > >> > > Total: 54.78 > >> > > warning: Value of 'preferred_serialization_format' (pson) is invalid > >> > > for report, using default (marshal) > >> > > notice: Finished catalog run in 1877.06 seconds > > >> > > It seems to me the cause of the delays is not recorded in the time > >> > > overview? > > >> > > D > > >> > > On Mar 12, 12:30 pm, DieterVDW <dieter...@gmail.com> wrote: > >> > >> On Mar 12, 11:21 am, Patrick <kc7...@gmail.com> wrote: > > >> > >> > Puppet doesn't handle a folder with lots of files well. It handles > >> > >> > large files even worse. The standard advice is "Try putting the > >> > >> > files in a package and distributing them using apt." Another > >> > >> > common answer is to try combining exec and rsync. I ended up using > >> > >> > apt. Here are the tutorials I used: > > >> > >> The problem is, I -am- using apt! > >> > >> Those files are downloaded and installed using apt, I just want puppet > >> > >> to make sure they are owned by a certain user and group. > >> > >> That's the only thing puppet needs to do. > > >> > >> If I do the same in bash: > >> > >> find directory/ | while read file ; do chown user:group "$file" ; done > > >> > >> real 0m28.119s > >> > >> user 0m4.064s > >> > >> sys 0m12.725s > > >> > >> I can live with overhead from slow ruby, etc etc ... > >> > >> But apparently Puppet is 60x slower than bash for doing the same > >> > >> action! > > >> > >> During my investigation for this problem I've seen a lot of people > >> > >> saying things like: > >> > >> "Puppet doesn't handle a folder with lots of files well" > >> > >> 60x times slower isn't really "not handling well". It's crap. > >> > >> I'm a bit baffled by the defeatism I see in the Puppet community > >> > >> concerning Puppet CPU usage. > > >> > >> I can't really believe people would call what I am experiencing "not > >> > >> handling well", so I suppose I'm having another, worse, issue > >> > >> concerning my setup? > > >> > >> Also the usual suspect for puppet not handling large file collections > >> > >> well seems to be the checksumming. > >> > >> But with that turned of, what's keeping puppet busy? > > >> > >> Puppet eats up 30 minutes of CPU time, I see two options: > >> > >> - Puppet is doing something necessary for it's functioning during that > >> > >> time, in which case somebody should know what it is doing. Anybody? > >> > >> - Or the code is gravely flawed and needs to be fixed. > > >> > >> Is this a stroke of bad luck, or should I conclude that Puppet isn't > >> > >> production ready? > >> > >> I really can't have this on production machines... > > >> > > -- > >> > > You received this message because you are subscribed to the Google > >> > > Groups "Puppet Users" group. > >> > > To post to this group, send email to puppet-us...@googlegroups.com. > >> > > To unsubscribe from this group, send email to > >> > > puppet-users+unsubscr...@googlegroups.com. > >> > > For more options, visit this group > >> > > athttp://groups.google.com/group/puppet-users?hl=en. > > >> > -- > >> > Trevor Vaughan > >> > Vice President, Onyx Point, Inc > >> > (410) 541-6699 > >> > tvaug...@onyxpoint.com > > >> > -- This account not approved for unencrypted proprietary information -- > > > -- > > You received this message because you are subscribed to the Google Groups > > "Puppet Users" group. > > To post to this group, send email to puppet-us...@googlegroups.com. > > To unsubscribe from this group, send email to > > puppet-users+unsubscr...@googlegroups.com. > > For more options, visit this group > > athttp://groups.google.com/group/puppet-users?hl=en. -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.