Re: [PATCH] systemd units rework

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

 



Hi Jaromir,

Sorry for the late reply. I seem to recall we discussed this briefly
over IRC, but let me write down my updated views here so that the can be
discussed.

On Fri, 24 Jan 2014 08:56:16 -0500 (EST), Jaromir Capik wrote:
> The attached patch fixes several things our users complained about.

I get complaints on my side as well, that's even why I remembered this
old thread:
https://bugzilla.novell.com/show_bug.cgi?id=882719
https://bugzilla.novell.com/show_bug.cgi?id=882720

> The patch introduces 3 wrappers for the service files and example
> /etc/sysconfig/* configuration files
> 
> The lm_sensors-modprobe*wrapper scriptlets change the way how
> the modprobe failures look like as the users had no idea that
> the failures are caused by missing configuration and that
> led to frequent bug reports. The wrapper checks whether the
> modprobe is called with any arguments and leaves a hint
> message when no modules are passed to the modprobe.

I see which problem you are trying to solve with that. However I do not
like wrappers much. One of the key design goals of systemd was to avoid
running scripts every now and then, because scripts are slow. I am not
necessarily a big fan of systemd, but if you switch to it, you have to
do it right, otherwise you get the pain without the benefits.

Also, some hwmon drivers are loaded automatically. At this time these
are mostly CPU and GPU sensors, but I hope that in the future some
mainboard sensors drivers can be loaded automatically too. This means
that running sensors-detect will become optional (it already is on some
machines, laptops in particular.) The lack of configuration file should
thus not be a problem and should not prevent the service from starting.
It should also not spam the logs forever, which your wrappers scripts
are doing.

My plan to solve this specific issue is to have sensors-detect write a
file to /etc/modules-load.d instead of /etc/sysconfig. Systemd has a
service to load modules, I want to use that instead of doing it on my
own. Then the lm_sensors service itself would simply depend on
systemd-modules-load.service, and its only task would be to call
"sensors -s". I think this is elegant and it requires no wrapper script.

The only issue which my approach does not solve is that the user gets
no clue that running sensors-detect may get him/her additional sensor
values. I'm not sure that writing that message to the system log is the
best way anyway, both because of a lack of visibility and because it
keeps filling the system log. Mentioning it in sensors(1), sensord(8)
and as a comment in lm_sensors.Service itself might be more
appropriate. It can also be explained better on the lm-sensors wiki and
in distribution documentation pages / wiki.

> Te sensord-service-wrapper enhances the sensord service so that
> it supports all relevant switches needed by the users which
> were previously omitted and thus unsupported.

We (openSUSE) don't really have a need for that at the moment because we
only support two options: $INTERVAL (-i) and $LOG_INTERVAL (-l). Same
as the upstream service file supports, actually. These options can be
passed to sensord unconditionally, so all I had to do it put default
values in a template sysconfig file (which I agree is missing upstream,
I'll add it.)

If we ever decide to support extra options in openSUSE, then I think I
would rather add a generic variable EXTRA_OPTIONS
in /etc/sysconfig/sensord and let the user pass everything he/she needs
there. This way, no wrapper script is needed, and you don't have to
change anything if sensord gets new options added. In fact I would
question why things where not implemented that way from the beginning.

Anyway, before this happens, I think we want to clean the rrd-related
code in sensord a lot. It's way too fragile the way it is right now, any
change in the sensors setup will break the rrd logging. On my own
systems I am running separate instances of sensord for each sensor chip
to workaround this weakness, but I do not expect all users to do that,
and that can't be easily integrated in a generic way anyway. There must
be a better way to make sensord rrd databases handle device additions
or removal. I have been willing to tackle that issue for a long time
but I can never find the time to actually look into it :(

> The service files now contain a placeholder for the target
> wrapper directory and distribution build scripts can do
> the substitution easily with two sed calls ...
> 
> Example for RPM based distributions:
> sed -i "s|\@WRAPPER_DIR\@|%{_libexecdir}/%{name}|" sensord.service
> sed -i "s|\@WRAPPER_DIR\@|%{_libexecdir}/%{name}|" lm_sensors.service
> 
> The patch is applicable on the latest trunk.
> Please, check it and apply if you find it worthy.

I don't really want to apply it, sorry. This is one way of handling the
existing issues, but there are others, and I don't think that your
approach is the best one. I'm not saying mine is perfect either, they
are just different.

-- 
Jean Delvare
SUSE L3 Support

_______________________________________________
lm-sensors mailing list
lm-sensors@xxxxxxxxxxxxxx
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors




[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux