On Tue, Sep 26, 2023 at 11:09:44AM +0200, Pavel Hrdina wrote:
On Mon, Sep 25, 2023 at 08:58:24PM +0200, Andrea Bolognani wrote:
> Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
> ---
> src/ch/meson.build | 27 ++++++++++++++++++++----
> src/ch/virtchd.service.in | 44 ---------------------------------------
> 2 files changed, 23 insertions(+), 48 deletions(-)
> delete mode 100644 src/ch/virtchd.service.in
>
> diff --git a/src/ch/meson.build b/src/ch/meson.build
> index dc08069dcd..f6c443f3c6 100644
> --- a/src/ch/meson.build
> +++ b/src/ch/meson.build
> @@ -57,11 +57,30 @@ if conf.has('WITH_CH')
>
> virt_daemon_units += {
> 'service': 'virtchd',
> - 'service_in': files('virtchd.service.in'),
> 'name': 'Libvirt ch',
> - 'socket_in': libvirtd_socket_in,
> - 'socket_ro_in': libvirtd_socket_ro_in,
> - 'socket_admin_in': libvirtd_socket_admin_in,
> + 'service_unit_extra': [
> + 'Wants=systemd-machined.service',
> + 'After=systemd-machined.service',
> + 'After=remote-fs.target',
> + ],
> + 'service_service_extra': [
> + 'KillMode=process',
> + '# Raise hard limits to match behaviour of systemd >= 240.',
> + '# During startup, daemon will set soft limit to match hard limit',
> + '# per systemd recommendations',
> + 'LimitNOFILE=1024:524288',
> + '# The cgroups pids controller can limit the number of tasks started
by',
> + '# the daemon, which can limit the number of domains for some
hypervisors.',
> + '# A conservative default of 8 tasks per guest results in a TasksMax
of',
> + '# 32k to support 4096 guests.',
> + 'TasksMax=32768',
> + '# With cgroups v2 there is no devices controller anymore, we have to
use',
> + '# eBPF to control access to devices. In order to do that we create a
eBPF',
> + '# hash MAP which locks memory. The default map size for 64 devices
together',
> + '# with program takes 12k per guest. After rounding up we will get 64M
to',
> + '# support 4096 guests.',
> + 'LimitMEMLOCK=64M',
> + ],
This feels wrong to have it in meson.build file. In addition it is the
same as for virtlxcd and virtqemud so we are basically duplicating the
data and which makes it easy to make inconsistent changes not affecting
all places.
IMHO it would be better to have additional file that will be included
into the template for services where we need it.
I'm not sure about the `service_unit_extra` as well if we want to have
it in meson.build files as it is not strictly related to the build
process and there is more data compared to the old `deps`.
If anything I'd reverse the model. The 'virtchd.service.in' file
should be the primary template, the common bits the injected data.
ie
cat virtchd.service.in
[Unit]
Description=Virtualization Cloud-Hypervisor daemon
::common-unit::
Wants=systemd-machined.service
After=remote-fs.target
After=systemd-machined.service
Documentation=man:virtchd(8)
[Service]
::common-service::
KillMode=process
# Raise hard limits to match behaviour of systemd >= 240.
# During startup, daemon will set soft limit to match hard limit
# per systemd recommendations
LimitNOFILE=1024:524288
# The cgroups pids controller can limit the number of tasks started by
# the daemon, which can limit the number of domains for some hypervisors.
# A conservative default of 8 tasks per guest results in a TasksMax of
# 32k to support 4096 guests.
TasksMax=32768
# With cgroups v2 there is no devices controller anymore, we have to use
# eBPF to control access to devices. In order to do that we create a eBPF
# hash MAP which locks memory. The default map size for 64 devices together
# with program takes 12k per guest. After rounding up we will get 64M to
# support 4096 guests.
LimitMEMLOCK=64M
[Install]
::common-install::
arguably we don't even need the '::common-XXX::' lines in there. We can
simply see the headers [Unit], [Service], etc and inject the common
bits under each header.
With regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|