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]

 



Dne 17.11.2015 v 11:00 Stef Walter napsal(a):
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.

Then the should use Recommends, shouldn't they?


Vít



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




-- 
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