Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


On Tue, Jan 18, 2011 at 1:35 PM, Michael Meeks <michael.meeks@novell.com> wrote:
On Wed, 2011-01-12 at 10:47 -0600, Norbert Thiebaud wrote:
indeed it is a dog. it took 15h20.
conservatively at least 13 hours of it were in helcontent2, mostly I/O
bound creating temp files and copying things around over and over.
[..]

       A huge win. Personally, I find it hard to believe that the problem is
not I/O related

Well as I said above, it _IS_ I/O related, no doubt about that.

- ie. to do something -that- slow, a file-system has to
fsync (ie. physically move the disk heads) I imagine, I don't think much
else can explain it. Out of interest how fast is:

mkdir /tmp/small ; time for (( a=1; a<=10000; a++ )) do touch /tmp/small/$a; rm /tmp/small/$a; 
done

       for you ? I get 22 to 26 seconds (on my two test machines), one has
an SSD, the other a hard-disk, but you can see that neither write anything
to the disk in that time.

real    0m30.254s
user    0m5.720s
sys     0m25.907s
on my mac (note: doing this in a ram_disk give about the same result)

real    0m20.760s
user    0m2.974s
sys     0m18.205s
on my linux

but that does not measure much since

mkdir /tmp/small ; time for (( a=1; a<=10000; a++ )) do touch
/tmp/small/$a;  done

real    0m17.662s
user    0m3.012s
sys     0m15.115s

time cp -r /tmp/small /tmp/small2

real    0m2.508s
user    0m0.119s
sys     0m2.256s

n_th@tpamac ~ $time rm -fr /tmp/small2

real    0m1.000s
user    0m0.014s
sys     0m0.808s

So the test you give is more about measuring bash and fork speed than
anything else


       So - I'm simply surprised that a ramdisk makes much difference.

       I was suspicious of the database / lucene building piece - which may
well do fsyncs, and write a journal to try to ensure data integrity, I
can believe that is horribly slow.

That is a distinct possibility. but the speed-up is there even for the
part that are not running lucene. (based on the cpu-load - io/load
monitoring while building on regular disk or on ramdisk)

for info
time for (( a=1; a<=1000; a++ )) do touch
/Volumes/ccache_ramdisk/xx$a; sync; rm /Volumes/ccache_ramdisk/xx$a;
sync; done

real    6m37.891s
user    0m1.448s
sys     6m33.465s

note: is 1,000 not  10,000 and it is the same order of magnitude when
using 'real' disk


Note: I'm building is -P6 -- -P6, that may also have an impact. some
I/O pattern involved may dog badly in a heavy
multi-threaded/multi-processed environment...

(yeah, yeah... on paper that sound crazy high, but in practice 6/6
give me the best result on this machine)

Norbert



Note: that if you do not have enough memory to do that, you could at
least move the TMPDIR do a ramdisk. you don't need a big one (not sure
exactly how much, but I bet 500M should probably do)
there are some step in helpcontent2 that do a LOT of creation/delete on TMP.

       Right; I guess it might be nice to have an 'strace -f -ttt' log (or Mac
equivalent) of a few minutes of the build - to see what is going on.

       Thanks !

               Michael.

--
 michael.meeks@novell.com  <><, Pseudo Engineer, itinerant idiot



Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.