Re: More upd-instroot speedups

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jeremy Katz wrote:
On Tue, 2007-10-09 at 16:00 -0600, Orion Poplawski wrote:
anaconda-nocpio.patch:
- Remove and old, unneeded duplication of the file lists adding "./" to
the paths. We no longer use cpio to copy files, so this just slows us down (a lot).

Indeed.  Although I'm surprised it makes a big difference


Well, running "find" is a large component of the time upd-instroot takes. Halving the number of times it runs helps. Running find "smarter" (with the find patch) also helps.


 >> anaconda-ldso.patch:
- This doesn't actually work yet, but it tries to do the following:
- Fixes the code to find and install shared library dependencies
- removes those libraries from being explicitly listed in the file lists.
- Other list cleanup
- This might actually slow us back down, but it does fix what appears to have been completely broken and makes adding new binaries easier.

Woohoo!  Someone else sat down to do this :-)  I noticed it was broken
right before test2, but we needed to get the test release out the door
and I said "I'll get back to it afterwards".  Which, of course, I
haven't.  If you get this, I definitely owe you beer.

Glad my effort wasn't in vain then. Will need to be more careful about what's in the filelists though as we're picking up lots of extra stuff now that we probably don't need. Also, perhaps it makes sense to only look for so deps if the file is in a "bin" has an ".so" in the name, or at least not if in "share"? Could speed things up again.

anaconda-noscripts.patch:
- Use "tsflags=nodocs noscripts notriggers" to avoid extra rpm transactions.

This one I'm less sure about -- I'd like to actually be able to get rid
of a lot of the other junk in upd-instroot that duplicates the working
being done by package scriptlets.  While it might cost us in build time,
the savings in maintenance seem like they're worth it.

Yeah, makes sense. And I'm less worried about yum times running on tmpfs and with the yumdir patch.


New timing runs with buildinstall tmpdir on tmpfs filesystem (which is how I usually run). Each test adds a new patch. I've split the find patch into to parts. findpath just limits the find to the path specified. findtest adds the non-wildcard case. The "bin" patch only looks for so deps of files in a "bin/" directory or with a ".so" in the filename, but apparently doesn't make a difference in this case. YMMV.

               orig   nocpio yumdir findpath findtest ldso   bin  noldso
yum text:       2:48s  2:29s  2:54s   2:27s    2:37s  2:36s 2:53s 2:27s
install text:  11:37s  9:23s  9:20s   7:09s    7:07s  1:46s 1:45s 0:57s
yum graph:      3:27s  3:55s  1:17s   1:15s    1:13s  1:15s 1:13s 1:13s
install graph: 29:07s 20:46s 20:41s  13:13s   12:48s  3:02s 3:03s 1:51s

So not only is the current so dep code broken, it's horribly slow. You might want to just remove the following:

--- anaconda-11.3.0.37/scripts/upd-instroot.noldso 2007-10-10 13:39:29.000000000 -0600 +++ anaconda-11.3.0.37/scripts/upd-instroot 2007-10-10 13:39:33.000000000 -0600
@@ -150,12 +150,6 @@
     else
        cp -aL $FILE $DESTROOT/`dirname $FILE`
     fi
-
-    get_dso_deps $(pwd) "$FILE"
-    local DEPS="$DSO_DEPS"
-    for x in $DEPS ; do
-      instFile $x $DESTROOT
-    done
 }

 expandPackageSet() {



from instFile() for the time being, since it makes no difference to the files installed in minstg2.img or stage2.img. That's the "noldso" column above.

--
Orion Poplawski
Technical Manager                     303-415-9701 x222
NWRA/CoRA Division                    FAX: 303-415-9702
3380 Mitchell Lane                  orion@xxxxxxxxxxxxx
Boulder, CO 80301              http://www.cora.nwra.com
--- anaconda-11.3.0.37/scripts/upd-instroot.bin	2007-10-10 10:52:53.000000000 -0600
+++ anaconda-11.3.0.37/scripts/upd-instroot	2007-10-10 11:00:21.000000000 -0600
@@ -153,11 +153,13 @@
 	cp -aL $FILE $DESTROOT/`dirname $FILE`
     fi
 
-    get_dso_deps $(pwd) "$FILE"
-    local DEPS="$DSO_DEPS"
-    for x in $DEPS ; do 
-      instFile ./$x $DESTROOT
-    done
+    if [ "$FILE" != "${FILE/bin\//}" -o "${FILE} != "${FILE/.so/} ]; then
+      get_dso_deps $(pwd) "$FILE"
+      local DEPS="$DSO_DEPS"
+      for x in $DEPS ; do 
+        instFile ./$x $DESTROOT
+      done
+    fi
 }
 
 expandPackageSet() {

[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux