Re: Fedora 31 System-Wide Change proposal: Switch RPMs to zstd compression

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

 



On Thu, May 30, 2019 at 11:44:23AM -0700, Samuel Sieb wrote:
> On 5/30/19 7:54 AM, Daniel Mach wrote:
> >>I think before approving such changes, owners need to do mass
> >>rebuilds on their own and provide a graph of changes in size
> >>between original compression format and new one(s).
> >Doing that equals to the mass rebuild.
> >I'd rather do an analysis and if the numbers look sane, I'd prefer
> >doing a mass rebuild in a side tag so we can use the builds if the
> >results are sane. Hammering koji with so many scratch builds
> >doesn't sound right to me.
> 
> Is it possible to just recompress the rpms instead of doing a full build?
+1, we can certainly get approximate statistics without rebuilding packages.

I did a somewhat unscientific test with 1GB of packages from a mock cache:

$ rm -rf zstd; mkdir zstd; for i in /var/cache/mock/fedora-rawhide-x86_64/dnf_cache/fedora-2d95c80a1fa0a67d/packages/*rpm; do rpm2cpio $i | zstd >zstd/$(basename $i .rpm).cpio.zstd -19 -;done
$ rm -rf xz; mkdir xz; for i in /var/cache/mock/fedora-rawhide-x86_64/dnf_cache/fedora-2d95c80a1fa0a67d/packages/*rpm; do rpm2cpio $i | xz >xz/$(basename $i .rpm).cpio.xz -2 -;done
$ rm -rf zstd20; mkdir zstd20; time for i in zstd/*; do zstdcat $i | zstd >zstd20/$(basename $i) --ultra -20 -;done

$ du -sh /var/cache/mock/fedora-rawhide-x86_64/dnf_cache/fedora-2d95c80a1fa0a67d/packages/ /tmp/{xz,zstd,zstd20}
1019M	 /var/cache/mock/fedora-rawhide-x86_64/dnf_cache/fedora-2d95c80a1fa0a67d/packages/
985M	 /tmp/xz
946M	 /tmp/zstd
930M	 /tmp/zstd20

$ time xzcat /tmp/xz/* >/dev/null
xzcat /tmp/xz/* > /dev/null  78.45s user 0.78s system 99% cpu 1:19.72 total
$ time zstdcat /tmp/zstd/* >/dev/null
zstdcat /tmp/zstd/* > /dev/null  9.19s user 0.44s system 98% cpu 9.751 total
$ time zstdcat /tmp/zstd20/* >/dev/null
zstdcat /tmp/zstd20/* > /dev/null  8.82s user 0.50s system 99% cpu 9.394 total

Notes:
- this is all single-threaded, since rpm doesn't do multithreading.
  I saw some discussion that multithreading is easier with zstd because it's
  reproducible with zstd, but not entirely with xz. Enabling multithreading
  would be very beneficial for compression.
- $ rpm -q zstd xz
  zstd-1.4.0-1.fc29.x86_64
  xz-5.2.4-3.fc29.x86_64
- machine:
  $ lscpu
  Architecture:        x86_64
  CPU(s):              12
  ...
  NUMA node(s):        2
  Model name:          Intel(R) Xeon(R) CPU           X5650  @ 2.67GHz

  /var/ is on spinning rust, /tmp is RAM.
- I'm not providing timings of compression, because I only did one run and
  this might not be reproducible. Unscientific impression was that zstd
  was quite a bit slower when compressing.

Zbyszek
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux