Re: Some analysis on the size of the minimal and Server installs of Fedora 23

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

 



On 17.11.2015 02:39, Stephen Gallagher wrote:
> (Please keep responses on the devel@ list; I've set it in the Reply-To.)
> 
> To jump right to the premise: The default Fedora Server install is Way
> Too Big(TM) and the minimal install (also available on the Fedora
> Server install media) is also Too Big.
> 
> I've been trying to do some quick-and-dirty analysis of what is in
> these default installations in order to figure out where we should be
> focusing our efforts. I'll point out that there are two goals that we
> need to keep in mind (and the reasons behind them) in order of
> increasing importance:
> 
> 1) Reduce disk space usage. While disk space on physical devices is
> becoming trivially cheap, disk space on Cloud deployments and rented
> virtual servers is still comparatively very expensive. We really want
> to minimize the amount of space that we use for Fedora so that users
> can fit their applications (the stuff they actually care about) into
> the remaining space without being forced to buy a larger storage
> allotment.
> 
> 2) Reduce maintenance efforts. Every additional piece of software on
> the system (referred to hereafter as "packages") increases the
> maintenance burden on an administrator. Universally, administrators
> prefer to have the smallest number of packages to maintain for a
> variety of reasons:
>  * Limiting update churn. The more packages on the system, the more
>    often that one will need to run updates.
>  * Limiting security exposure. Every package on the system is another
>    potential privilege-escalation point. Keeping this number under
>    control means a reduced likelihood of a catastrophic breach. (The
>    actual risk here is impossible to quantify, but it can be assumed
>    that less code == less potential vulnerabilities.
>  * Non-expert administrators do not always know what is installed on
>    their systems. This can lead to unintentional breaches as an
>    admin doesn't realize that one or more services needs to be limited
>    (such as in the firewall or via SELinux).
> 
> With these two goals in mind, the most obvious approach to improving
> this situation would be by reducing the number of packages installed
> by default on the Minimal and Fedora Server installs. As a specific
> goal of the Server Working Group, we want to aim for a world wherein
> administrators will no longer desire to install the Minimal install
> and instead will rely on the platform provided by the default Fedora
> Server install. They do not do this today because the Fedora Server
> installation is considerably larger. I postulate that this is due
> primarily to dependency bloat, which is where we should focus our
> efforts during the Fedora 24 timeframe. I postulate (but have not yet
> confirmed) that there are likely many places where we could replace
> Requires: with Recommends: (or even Suggests:) dependencies. In my
> ideal world, the difference between a Minimal and Server install would
> be identical to installing the same set of packages with Recommends:
> on or off.
> 
> 
> Some highlights of my initial research (with a lot of my raw data in
> the tarball attached to this email):
> 
> 
> == Minimal ==
> 
> === Disk Usage ===
> /boot: 79MB
> /:     755MB
> 
> 
> === Packages ===
> Total count: 270
> 
> ==== Largest 10 packages ====
> 14288083: coreutils
> 14486819: glibc
> 16648994: grub2
> 18024040: kernel-modules
> 27253403: systemd
> 28453336: python3-libs
> 36004297: grub2-tools
> 53295853: kernel-core
> 86298752: linux-firmware
> 125178630: glibc-common
> 
> ==== 10 Longest dependency chains ====
> b'kbd': 116
> b'dnf-plugins-core': 117
> b'plymouth-scripts': 121
> b'plymouth': 121
> b'firewalld': 122
> b'grub2-tools': 125
> b'grub2': 131
> b'NetworkManager': 138
> b'dnf': 144
> b'dnf-yum': 145
> 
> 
> 
> 
> 
> 
> 
> 
> == Server ==
> 
> == Disk Usage ==
> /boot: 97MB [1]
> /:     1.2GB
> 
> 
> === Packages ===
> Total count: 603
> 
> ==== Largest 10 packages ====
> 18590064: samba-client-libs
> 22484896: docker
> 25209005: python-libs
> 27253403: systemd
> 28453336: python3-libs
> 30242477: libicu
> 36004297: grub2-tools
> 53295853: kernel-core
> 86298752: linux-firmware
> 125178630: glibc-common
> 
> ==== 10 Longest dependency chains ====
> b'abrt-addon-python3': 170
> b'abrt-retrace-client': 171
> b'abrt-addon-pstoreoops': 171
> b'abrt-addon-ccpp': 183
> b'abrt-addon-vmcore': 190
> b'rolekit': 196
> b'abrt-cli': 214
> b'cockpit': 216
> b'freeipa-client': 249
> b'fedora-release-server': 252
> 
> 
> ==== Additional Package Groups ====
> (These are the package groups we include above and beyond "Minimal
> Install")[2]
> 
> I'm not including package sizes here since most of the space comes
> from their dependencies.
> 
> * server-product
>  - fedora-release-server: dependency chain length: 252
>    - cockpit: see below
>    - rolekit: see below
>    - systemd: chain 104
>  - chrony: 468KiB, chain 111
> * server-hardware-support
>  - lm_sensors: chain 139
>  - openhpi: chain 108
>  - smp_utils: chain 19
> * headless-management
>  - cockpit: chain 216
>  - PackageKit: chain 137
>  - rolekit: chain 196
>  - tog-pegasus: chain 51
> * container-management
>  - docker: chain 148
> * domain-client
>  - adcli: chain 51
>  - freeipa-client: chain 249
>  - oddjob-mkhomedir: chain 107
>  - realmd: chain 112
>  - samba-winbind: chain 131
>  - sssd: chain 157
>  - samba-common-tools: chain 129

These dependencies are really hard to read. A much more clear approach
would be to see how many unique dependencies each top level feature
brings in. More on that below.

> == Notes ==
> [1] The initramfs files are larger on Server.
> [2] Actually, we have a difference here; Minimal Install forcibly
> includes the "guest-agents" group; this is only optional on Server.
> 
> Some specific observations I can make:
> * The largest difference in the Fedora Server install vs. the minimal
> install is due to the FreeIPA and Samba packages requiring the
> inclusion of the Python 2 stack; focusing on eliminating this
> requirement in Fedora 24 would have the largest impact on both the
> number of packages and the space on disk.
> 
> * The largest individual package in both deployments is the
> glibc-common package. This is primarily due to the 106MiB
> locale-archive. I'd really like to hear from glibc folks if there is
> something we can do to break this up into smaller pieces contained in
> different sub-packages with Suggests: dependencies.

Some notes about cockpit:

Cockpit itself isn't very big, and most of the dependencies seen above
are the system services that it can configure (ie: docker,
NetworkManager, systemd, storaged).

'cockpit' is a meta-package depending on 'cockpit-xxx' subpackages.
These subpackages like cockpit-docker or cockpit-networkmanager depend
on things like docker or NetworkManager respectively.

If the subpackages that the Fedora 'cockpit' meta-package depend on do
not match what system services Fedora Server wants to ship, then we
should adjust the meta-package.

All that to say, the Cockpit dependencies are actually very light on top
of what's already being shipped.

Cockpit itself has the following dependencies.

 - glibc
 - glib2
 - glib-networking
 - polkit
 - polkit-libs (*)
 - grep
 - keyutils-libs (*)
 - systemd-libs (*)
 - pam
 - json-glib (*)
 - libpwquality
 - shadow-utils
 - bash
 - krb5-libs
 - openssl

The dependencies that I've noted with a star, can be theoretically
removed by copying and pasting some code from those libraries into
Cockpit. This seems counterproductive and counter to Fedora's posture,
but it is nonetheless possible.

A dependency on openssl (used for generating self-signed certificates,
when none are available) could be removed by using gnutls. But not sure
that would win us anything as far as disk space.

Cheers,

Stef

Attachment: signature.asc
Description: OpenPGP digital signature

-- 
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [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