From 0db7cae076e700a37d71c4eadbb54f1d46db7009 Mon Sep 17 00:00:00 2001 From: Markham Date: Sun, 31 Jul 2022 14:22:57 +0200 Subject: [PATCH] add target irqbalance and use it --- archive-patches/irqbalance/irqbalance.init | 25 +++++++++++++++++ make/applications.mk | 32 +++++++++++++++++++++- make/archives.mk | 3 ++ make/libraries.mk | 4 +-- make/neutrino.mk | 1 + make/versions.mk | 5 ++++ 6 files changed, 67 insertions(+), 3 deletions(-) create mode 100755 archive-patches/irqbalance/irqbalance.init diff --git a/archive-patches/irqbalance/irqbalance.init b/archive-patches/irqbalance/irqbalance.init new file mode 100755 index 0000000..3b2eec6 --- /dev/null +++ b/archive-patches/irqbalance/irqbalance.init @@ -0,0 +1,25 @@ +#!/bin/sh + + +irqbalance=$(which irqbalance || type -p irqbalance) +if [ -z ${irqbalance} ]; then + echo "irqbalance not found." + exit 1 +fi + +case $1 in + start) + ${irqbalance} + ;; + stop) + trap "" INT + kill -INT $(pidof irqbalance) + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "[$BASENAME] Usage: $0 {start|restart|stop}" + ;; +esac diff --git a/make/applications.mk b/make/applications.mk index bd4b6cb..63cb01c 100755 --- a/make/applications.mk +++ b/make/applications.mk @@ -245,6 +245,31 @@ $(D)/vsftpd: $(ARCHIVE)/vsftpd-$(VSFTPD_VER).tar.gz | $(TARGETPREFIX) $(REMOVE)/vsftpd-$(VSFTPD_VER) $(TOUCH) +# +# irqbalance +# +$(D)/irqbalance: $(ARCHIVE)/irqbalance-$(IRQBALANCE_VER).tar.gz | $(TARGETPREFIX) + $(REMOVE)/irqbalance-$(IRQBALANCE_VER) + $(START_BUILD) + $(UNTAR)/irqbalance-$(IRQBALANCE_VER).tar.gz + pushd $(BUILD_TMP)/irqbalance-$(IRQBALANCE_VER) && \ + autoreconf -fi && \ + $(CONFIGURE) \ + --prefix= \ + --mandir=/.remove \ + --without-irqbalance-ui; \ + $(MAKE) && \ + $(MAKE) install DESTDIR=$(TARGETPREFIX) + install -m 755 $(PATCHES)/irqbalance/irqbalance.init $(TARGETPREFIX)/etc/init.d/irqbalance + pushd $(TARGETPREFIX)/etc/init.d + ln -sf irqbalance $(TARGETPREFIX)/etc/init.d/S25irqbalance + ln -sf irqbalance $(TARGETPREFIX)/etc/init.d/K25irqbalance + $(REMOVE)/irqbalance-$(IRQBALANCE_VER) + $(TOUCH) + +# +# minidlna +# $(D)/minidlna: $(D)/zlib $(D)/sqlite $(D)/libexif $(D)/libjpeg $(D)/libid3tag $(D)/libogg $(D)/libvorbis $(D)/flac $(D)/ffmpeg $(ARCHIVE)/minidlna-$(MINIDLNA_VER).tar.gz | $(TARGETPREFIX) $(START_BUILD) $(UNTAR)/minidlna-$(MINIDLNA_VER).tar.gz @@ -808,7 +833,12 @@ $(D)/udpxy: $(ARCHIVE)/$(UDPXY_VER).tar.gz | $(TARGETPREFIX) pushd $(BUILD_TMP)/udpxy-$(UDPXY_VER); \ $(call apply_patches, $(addprefix udpxy/, $(UDPXY_PATCH))); \ pushd $(BUILD_TMP)/udpxy-$(UDPXY_VER)/chipmunk && \ - $(MAKE) NO_UDPXREC=yes PREFIX= CC=$(TARGET)-gcc CFLAGS=-Wno-error install DESTDIR=$(TARGETPREFIX); + $(MAKE) \ + MANPAGE_DIR=$(BUILD_TMP)/.remove \ + NO_UDPXREC=yes \ + PREFIX= \ + CC=$(TARGET)-gcc \ + CFLAGS=-Wno-error install DESTDIR=$(TARGETPREFIX); install -m 755 $(PATCHES)/udpxy/udpxy.init $(TARGETPREFIX)/etc/init.d/udpxy pushd $(TARGETPREFIX)/etc/init.d ln -sf udpxy $(TARGETPREFIX)/etc/init.d/S75udpxy diff --git a/make/archives.mk b/make/archives.mk index bbc7ce2..e7d4f9c 100755 --- a/make/archives.mk +++ b/make/archives.mk @@ -309,6 +309,9 @@ $(ARCHIVE)/$(UDPXY_VER).tar.gz: $(ARCHIVE)/inadyn-mt.v.$(INADYN_VER).tar.gz: $(WGET) https://sourceforge.net/projects/inadyn-mt/files/inadyn-mt/inadyn-mt.v.$(INADYN_VER)/$(notdir $@) +$(ARCHIVE)/irqbalance-$(IRQBALANCE_VER).tar.gz: + $(WGET) https://github.com/Irqbalance/irqbalance/archive/v$(IRQBALANCE_VER).tar.gz -O $(@) + $(ARCHIVE)/flac-$(FLAC_VER).tar.xz: $(WGET) https://ftp.osuosl.org/pub/xiph/releases/flac/flac-$(FLAC_VER).tar.xz diff --git a/make/libraries.mk b/make/libraries.mk index 13bb53a..98079ae 100755 --- a/make/libraries.mk +++ b/make/libraries.mk @@ -92,8 +92,8 @@ $(D)/libncurses: $(ARCHIVE)/ncurses-$(NCURSES_VER).tar.gz | ncurses-prereq $(TAR HOSTCCFLAGS="$(TARGET_CFLAGS) -DHAVE_CONFIG_H -I../ncurses -DNDEBUG -D_GNU_SOURCE -I../include" && \ $(MAKE) install.libs DESTDIR=$(TARGETPREFIX) rm -rf $(HOSTPREFIX)/bin/ncurses* - rm -rf $(TARGETLIB)/libform* $(TARGETLIB)/libmenu* $(TARGETLIB)/libpanel* - rm -rf $(PKG_CONFIG_PATH)/form.pc $(PKG_CONFIG_PATH)/menu.pc $(PKG_CONFIG_PATH)/panel.pc + rm -rf $(addprefix $(TARGETLIB)/,libform* libmenu* libpanel*) + rm -rf $(addprefix $(PKG_CONFIG_PATH)/,form.pc menu.pc panel.pc) mv $(TARGETPREFIX)/bin/ncurses6-config $(HOSTPREFIX)/bin $(REWRITE_PKGCONF) $(HOSTPREFIX)/bin/ncurses6-config $(REWRITE_PKGCONF) $(PKG_CONFIG_PATH)/ncurses.pc diff --git a/make/neutrino.mk b/make/neutrino.mk index 324acbb..353e868 100755 --- a/make/neutrino.mk +++ b/make/neutrino.mk @@ -88,6 +88,7 @@ ifeq ($(BOXSERIES), $(filter $(BOXSERIES), hd1 hd2 h7 hd51 bre2ze4k)) N_CONFIG_OPTS += --enable-pip endif ifeq ($(BOXSERIES), $(filter $(BOXSERIES), h7 hd51 bre2ze4k)) + NEUTRINO_DEPS += $(D)/irqbalance N_CONFIG_OPTS += #--enable-dynamicdemux endif ifeq ($(PLATFORM), $(filter $(PLATFORM), apollo kronos)) diff --git a/make/versions.mk b/make/versions.mk index d2d0700..5882d8d 100644 --- a/make/versions.mk +++ b/make/versions.mk @@ -98,6 +98,11 @@ HD_IDLE_VER=1.05 # inadyn-mt - dynamic DNS client, Multi-platform inadyn, inadyn-advanced DDNS client fork. INADYN_VER=02.28.10 +# Irqbalance is a daemon to help balance the cpu load generated by interrupts across all of a systems cpus. +# Irqbalance identifies the highest volume interrupt sources, and isolates each of them to a single unique cpu, +# so that load is spread as much as possible over an entire processor set, while minimizing cache miss rates for irq handlers. +IRQBALANCE_VER = 1.9.0 + # libjpeg-turbo; a derivative of libjpeg for x86 and x86-64 processors which uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression and decompression JPEG_TURBO2_VER = 2.1.2 -- 2.39.5