Closed sincorchetes closed 2 months ago
I'm not sure what problem you are describing here. I see you have 6 irqs that could not have their affinity set, which stems from an I/O error returned from the kernel when their smp_affinity proc files are written. I can't tell you why those irqs return errors when writing, but I suspect the APIC doesn't allow affinity to be set for those for some reason.
can you manually set the affinity for those irqs? If not, then this is either a kernel issue, or working as designed based on what the hardware is using those irqs for
If the issue is that systemctl says inactive (dead)
, that's because of the --oneshot
parameter. Not because of the IO errors, which are apparently normal.
right, but, as you said, thats an artifact of the --oneshot argument provided, which I presume was added to the irqbalance unit file in the clear linux distribution (the sample service file included in this repo doesn't add that option). systemd handles services that exit after running differently, I think based on the Type field of the unit file. As such, I would think that they should have also added Type=oneshot or some such to the unit file as well to report its status correctly.
So, is it normal behavior then?
This is the service file.
[Unit]
Description=irqbalance daemon
Documentation=man:irqbalance(1)
Documentation=https://github.com/Irqbalance/irqbalance
ConditionVirtualization=!container
ConditionCPUs=>1
[Service]
EnvironmentFile=-/usr/lib/irqbalance/defaults.env
EnvironmentFile=-/path/to/irqbalance.env
ExecStart=/usr/sbin/irqbalance --oneshot
Type=oneshot
ReadOnlyPaths=/
ReadWritePaths=/proc/irq
RestrictAddressFamilies=AF_UNIX AF_NETLINK
RuntimeDirectory=irqbalance/
[Install]
WantedBy=multi-user.target
This directory/file is not exists:
EnvironmentFile=-/usr/lib/irqbalance/defaults.env
EnvironmentFile=-/path/to/irqbalance.env
well, I don't 100% know, its really a question for systemd people.
From the standpoint of what irqbalance is doing, yes, its absolutely correct. --oneshot as an argument tells irqbalance to make a pass over all the irqs, assign affinity to cpus/packages/nodes/etc according to whatever policy you have configured, and exit, which appears to be what its doing.
From a systemd perspective, a oneshot type of unit should understand that the execed application should be forked, allowed to run, and then exit, which is what appears to be happening
As for what systemd reports as the status of such a unit, I would have thought it would have a status other than inactive/dead, but I could be wrong about that, you would have to ask systemd developers what the expected behavior is there.
It is normal behavior. For the oneshot service, the status after the execution is inactive (dead), which does not mean that the startup fails.
Distribution: Clear Linux with the latest patches irqbalance version: 1.9.3 kernel: 6.8.10-1434.native systemd: systemd opts: +PAM +AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP +GCRYPT +GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 -IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK -PCRE2 +PWQUALITY +P11KIT -QRENCODE +TPM2 +BZIP2 -LZ4 -XZ +ZLIB +ZSTD -BPF_FRAMEWORK +XKBCOMMON +UTMP -SYSVINIT default-hierarchy=hybrid
Log of journalctl
lscpu