Introduce stalld v1.19.6 package

Introduce a new package to bundle the stalld program to facilitate the
inclusion of the stalld for monitoring and boosting tasks that may be
starved from real-time applications that have a higher scheduling
priority.

Release tarball:
https://gitlab.com/rt-linux-tools/stalld/-/releases/v1.19.6

- install location change for stalld config file
  /etc/sysconfig/stalld to /etc/default/stalld

- Add $CUSTOM stalld startup arguments

Test Plan:

1. Build the stalld package
   Verify downloader gets the correct tarball
   Verify build-pkgs -c -p stalld is successful

2. Build iso

3. AIO-SX : standard kernel install
            systemctl status stalld
   start the stalld service
            systemctl start stalld
            switch to lowlatency kernel and also
            start the stalld service

4. Verify content of
    - /etc/default/stalld
    - /usr/lib/systemd/system/stalld.service
   start and stop stalld service

Story: 2011378
Task: 52175

Change-Id: I1e29c999d31c6cb8c9402e0b3eda407b1801c4f5
Signed-off-by: Kyale, Eliud <Eliud.Kyale@windriver.com>
This commit is contained in:
Kyale, Eliud
2025-04-21 15:22:11 -04:00
parent e25eb24d6c
commit 677db554de
11 changed files with 208 additions and 0 deletions

21
base/stalld/PKG-INFO Normal file
View File

@ -0,0 +1,21 @@
Metadata-Version: 1.1
Name: stalld
Version: 1.19.6
Summary: stall daemon
Home-page: https://gitlab.com/rt-linux-tools/stalld
Author: RedHat
Author-email:
License: GPLv2
Description:
The stalld program (which stands for 'stall daemon') is a
mechanism to prevent the starvation of operating system threads in a
Linux system. The premise is to start up on a housekeeping cpu (one
that is not used for real-application purposes) and to periodically
monitor the state of each thread in the system, looking for a thread
that has been on a run queue (i.e. ready to run) for a specifed length
of time without being run. This condition is usually hit when the
thread is on the same cpu as a high-priority cpu-intensive task and
therefore is being given no opportunity to run.
Platform: UNKNOWN

View File

@ -0,0 +1,5 @@
stalld (1.19.6) UNRELEASED; urgency=low
* Initial patching of debian package
Eliud Kyale <Eliud.Kyale@windriver.com> Wed, 11 Dec 2024 00:00:00 +0000

View File

@ -0,0 +1,21 @@
Source: stalld
Section: admin
Priority: optional
Maintainer: Starlingx Developers <starlingx-discuss@lists.starlingx.io>
Build-Depends: debhelper-compat (= 13), bpftool, libbpf-dev, llvm, clang, gcc-multilib
Standards-Version: 4.5.1
Homepage: https://www.starlingx.io
Package: stalld
Architecture: any
Multi-Arch: foreign
Depends: ${misc:Depends}, ${shlibs:Depends}
Description: The stalld program (which stands for 'stall daemon') is a
mechanism to prevent the starvation of operating system threads in a
Linux system. The premise is to start up on a housekeeping cpu (one
that is not used for real-application purposes) and to periodically
monitor the state of each thread in the system, looking for a thread
that has been on a run queue (i.e. ready to run) for a specifed length
of time without being run. This condition is usually hit when the
thread is on the same cpu as a high-priority cpu-intensive task and
therefore is being given no opportunity to run.

View File

@ -0,0 +1,42 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: stalld
Upstream-Contact: https://gitlab.com/rt-linux-tools
Source: https://gitlab.com/rt-linux-tools/stalld
Files: *
Copyright: Copyright (C) 2020 Red Hat Inc
License: GPL-2.0+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
.
On Debian systems, the complete text of the GNU General Public License
Version 2 can be found in `/usr/share/common-licenses/GPL-2'.
Files: debian/*
Copyright: (c) 2025 Wind River Systems, Inc.
License: Apache-2
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. The ASF licenses this
file to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.

View File

@ -0,0 +1,10 @@
#!/usr/bin/make -f
#export DH_VERBOSE = 1
DEBIAN_DESTDIR := $(CURDIR)/debian/tmp
%:
dh $@
override_dh_auto_install:
dh_auto_install -- prefix=/usr mandir=/usr/share/man

View File

@ -0,0 +1 @@
3.0 (native)

View File

@ -0,0 +1,10 @@
---
debname: stalld
debver: 1.19.6
dl_path:
name: stalld-v1.19.6.tar.gz
url: https://gitlab.com/rt-linux-tools/stalld/-/archive/v1.19.6/stalld-v1.19.6.tar.gz
sha256sum: a185756f5d4ea239120322aa8b4f2a37c76653e41295f69e7eb37dcd26313bd0
revision:
dist: $STX_DIST
PKG_GITREVCOUNT: true

View File

@ -0,0 +1,93 @@
From f0811a7de61bbf1599aebb0815644d4733a3ebbf Mon Sep 17 00:00:00 2001
From: "Kyale, Eliud" <Eliud.Kyale@windriver.com>
Date: Fri, 28 Mar 2025 13:07:51 -0400
Subject: [PATCH] Build and compatibility for StarlingX.
Disable BPF compiler flag in MakeFile
Disable redhat specific headers in Makefile
Change Environment config to /etc/default/stalld
Add $CUSTOM enviroment variable to stalld startup arguments
Signed-off-by: Kyale, Eliud <Eliud.Kyale@windriver.com>
---
Makefile | 4 ++--
systemd/Makefile | 8 ++++----
systemd/stalld.service | 5 +++--
3 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/Makefile b/Makefile
index 5875e0d..95f228c 100644
--- a/Makefile
+++ b/Makefile
@@ -9,7 +9,7 @@ ARCH=$(shell uname -m)
endif
$(info ARCH=$(ARCH))
-USE_BPF := 1
+USE_BPF := 0
FCF_PROTECTION := -fcf-protection
MTUNE := -mtune=generic
M64 := -m64
@@ -48,7 +48,7 @@ MOPTS := $(strip $(MTUNE)) $(strip $(M64)) -mno-omit-leaf-frame-pointer
WOPTS := -Wall -Werror=format-security
-SOPTS := -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1
+# SOPTS := -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1
DEFS := -DUSE_BPF=$(USE_BPF) -D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS
diff --git a/systemd/Makefile b/systemd/Makefile
index 393e64b..3a0cb1a 100644
--- a/systemd/Makefile
+++ b/systemd/Makefile
@@ -1,17 +1,17 @@
# SPDX-License-Identifier: GPL-2.0-or-later
-# Red Hat specific Makefile
+# Debian specific Makefile
INSTALL := install
UNITDIR := /usr/lib/systemd/system
install:
- $(INSTALL) -m 755 -d $(DESTDIR)/etc/sysconfig
- $(INSTALL) stalld.conf -m 644 $(DESTDIR)/etc/sysconfig/stalld
+ $(INSTALL) -m 755 -d $(DESTDIR)/etc/default
+ $(INSTALL) stalld.conf -m 644 $(DESTDIR)/etc/default/stalld
$(INSTALL) -m 755 -d $(DESTDIR)$(UNITDIR)
$(INSTALL) stalld.service -m 644 $(DESTDIR)$(UNITDIR)
uninstall:
- rm -f $(DESTDIR)/etc/sysconfig/stalld
+ rm -f $(DESTDIR)/etc/default/stalld
rm -f 644 $(DESTDIR)$(UNITDIR)/stalld.service
clean:
@rm -rf *~
diff --git a/systemd/stalld.service b/systemd/stalld.service
index 4d788c8..2411926 100644
--- a/systemd/stalld.service
+++ b/systemd/stalld.service
@@ -5,17 +5,18 @@ Description=Stall Monitor
[Service]
Type=simple
# Type=forking
-EnvironmentFile=/etc/sysconfig/stalld
+EnvironmentFile=/etc/default/stalld
ExecStartPre=/usr/bin/throttlectl off
ExecStartPre=/usr/bin/mkdir -p /run/stalld
# In case the regex passed to IT or IP includes C escape sequences,
# use ${IT} or ${IP} instead of $IT or $IP
-ExecStart=/usr/bin/stalld --systemd $CLIST $AGGR $BP $BR $BD $THRESH $LOGGING $FG $PF $IT $IP $BE
+ExecStart=/usr/bin/stalld --systemd $CLIST $AGGR $BP $BR $BD $THRESH $LOGGING $FG $PF $IT $IP $BE $CUSTOM
ExecStopPost=/usr/bin/throttlectl on
CPUSchedulingPolicy=fifo
CPUSchedulingPriority=10
Restart=always
+
[Install]
WantedBy=multi-user.target
--
2.34.1

View File

@ -0,0 +1 @@
0001-Build-and-compatibility-for-StarlingX.patch

View File

@ -410,6 +410,9 @@ runc
shim-helpers-amd64-signed-template
shim-unsigned
#stalld
stalld
#synce4l
synce4l

View File

@ -11,6 +11,7 @@ base/lsb
base/openssl
base/ca-certificates
base/pf-bb-config
base/stalld
base/synce4l
base/systemd
base/systemd-presets