Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Jun 2011 10:33:49 +0000 (UTC)
From:      Vadim Goncharov <vadim_nuclight@mail.ru>
To:        freebsd-performance@freebsd.org
Subject:   strange differencies: find -exec \+ vs find | xargs
Message-ID:  <slrnivh2kd.1g2d.vadim_nuclight@kernblitz.nuclight.avtf.net>

next in thread | raw e-mail | index | archive | help
Hi,

There was a flamewar in a local maillist about the fastest way to do chmod 644
on files and chmod 755 on directories in a sbubtree. It suddenly revealed the
strange thing: on the same subtree, find -type d -exec \+ on 76000 directories
has the same as find | xargs, but on 246000 files it was 4 times slower - while
there must be almost identical number of forks.

I've repeated the tests on deliberately old machine, a Pentium I 233 MHz with
80 Mb RAM, 7.4R UFS2. Subtree for tests was copy of /usr/src with several
categories from /usr/ports. The output is from ZSH's builtin 'time' (also
set up to automatically output if cmd was run more than 30 secs).

Below is the ooutput, first with 80K files, it doesn't differ, than added
several more /usr/ports categories and got slow result on 100K. Why is
the difference at all? This machine has maxvnodes about 4600 and too small
RAM for caches, if that's buffers, I'd expect the difference to begin on
mush slow number of files. But it runs the same 80K normally...

kernblitz:/home/vadim# find /warehouse/garbage -type f | wc -l; find /warehouse/garbage -type d | wc -l
   80208
find /warehouse/garbage -type f  5,01s user 53,12s system 53% cpu 1:48,52 total
wc -l  0,54s user 0,31s system 0% cpu 1:48,49 total
   13989
find /warehouse/garbage -type d  4,52s user 52,00s system 53% cpu 1:45,63 total
wc -l  0,11s user 0,06s system 0% cpu 1:45,61 total

kernblitz:/home/vadim# time chmod -R u+rwX,go+rX,go-w /warehouse/garbage
chmod -R u+rwX,go+rX,go-w /warehouse/garbage  4,39s user 54,94s system 53% cpu 1:50,73 total

kernblitz:/home/vadim# time find /warehouse/garbage -type f -exec chmod 644 {} \+
find /warehouse/garbage -type f -exec chmod 644 {} \+  7,29s user 100,30s system 65% cpu 2:43,29 total

kernblitz:/home/vadim# time find /warehouse/garbage -type d -exec chmod 755 {} \+
find /warehouse/garbage -type d -exec chmod 755 {} \+  5,04s user 58,91s system 54% cpu 1:58,05 total

kernblitz:/home/vadim# time find /warehouse/garbage -type f -print0 | xargs -0 chmod 644
 find /warehouse/garbage -type f -print0  4,78s user 55,14s system 37% cpu 2:40,27 total
xargs -0 chmod 644  3,26s user 46,70s system 30% cpu 2:41,26 total

kernblitz:/home/vadim# cp -r /usr/ports/[e-k]* /warehouse/garbage
cp -r /usr/ports/[e-k]* /warehouse/garbage  4,57s user 115,70s system 29% cpu 6:54,47 total

kernblitz:/home/vadim# find /warehouse/garbage -type f | wc -l; find /warehouse/garbage -type d | wc -l
  102014
find /warehouse/garbage -type f  6,46s user 69,75s system 48% cpu 2:38,31 total
wc -l  0,78s user 0,27s system 0% cpu 2:38,29 total
   19714
find /warehouse/garbage -type d  6,11s user 72,32s system 48% cpu 2:43,26 total
wc -l  0,13s user 0,09s system 0% cpu 2:43,24 total

kernblitz:/home/vadim# time chmod -R u+rwX,go+rX,go-w /warehouse/garbage
chmod -R u+rwX,go+rX,go-w /warehouse/garbage  5,59s user 69,97s system 48% cpu 2:36,53 total

kernblitz:/home/vadim# time find /warehouse/garbage -type d -exec chmod 755 {} \+
find /warehouse/garbage -type d -exec chmod 755 {} \+  6,72s user 83,05s system 23% cpu 6:15,22 total

kernblitz:/home/vadim# time find /warehouse/garbage -type f -exec chmod 644 {} \+
find /warehouse/garbage -type f -exec chmod 644 {} \+  10,49s user 138,30s system 20% cpu 12:14,49 total

kernblitz:/home/vadim# time find /warehouse/garbage -type f -print0 | xargs -0 chmod 644
find /warehouse/garbage -type f -print0  6,58s user 70,84s system 35% cpu 3:36,67 total
xargs -0 chmod 644  3,93s user 59,30s system 28% cpu 3:39,50 total

-- 
WBR, Vadim Goncharov. ICQ#166852181       mailto:vadim_nuclight@mail.ru
[Moderator of RU.ANTI-ECOLOGY][FreeBSD][http://antigreen.org][LJ:/nuclight]




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?slrnivh2kd.1g2d.vadim_nuclight>