Add user interface to configuration and build, document socket API in man page

The user interface can be run with `irqbalance-ui` command.

Signed-off-by: Veronika Kabatova <vkabatov@redhat.com>
This commit is contained in:
Veronika Kabatova 2016-12-31 18:04:37 +01:00 committed by Neil Horman
parent 76d1c9d739
commit bf9297132d
3 changed files with 38 additions and 3 deletions

View file

@ -24,14 +24,18 @@ AUTOMAKE_OPTIONS = no-dependencies
ACLOCAL_AMFLAGS = -I m4
EXTRA_DIST = COPYING autogen.sh misc/irqbalance.service misc/irqbalance.env
UI_DIR = ui
AM_CFLAGS = $(LIBCAP_NG_CFLAGS) $(GLIB_CFLAGS)
AM_CPPFLAGS = -I${top_srcdir} -W -Wall -Wshadow -Wformat -Wundef -D_GNU_SOURCE
noinst_HEADERS = bitmap.h constants.h cpumask.h irqbalance.h non-atomic.h \
types.h
sbin_PROGRAMS = irqbalance
types.h $(UI_DIR)/helpers.h $(UI_DIR)/irqbalance-ui.h $(UI_DIR)/ui.h
sbin_PROGRAMS = irqbalance irqbalance-ui
irqbalance_SOURCES = activate.c bitmap.c classify.c cputree.c irqbalance.c \
irqlist.c numa.c placement.c procinterrupts.c
irqbalance_LDADD = $(LIBCAP_NG_LIBS) $(GLIB_LIBS)
irqbalance_ui_SOURCES = $(UI_DIR)/helpers.c $(UI_DIR)/irqbalance-ui.c \
$(UI_DIR)/ui.c
irqbalance_ui_LDADD = $(GLIB_LIBS) $(CURSES_LIBS)
dist_man_MANS = irqbalance.1
CONFIG_CLEAN_FILES = debug*.list config/*

View file

@ -3,7 +3,7 @@ AC_PREREQ(2.12)dnl
AM_CONFIG_HEADER(config.h)
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([foreign])
AM_INIT_AUTOMAKE([foreign] [subdir-objects])
AM_PROG_LIBTOOL
AC_SUBST(LIBTOOL_DEPS)
@ -26,6 +26,8 @@ AC_CHECK_FUNCS(getopt_long)
AC_CHECK_LIB(numa, numa_available)
AC_CHECK_LIB(m, floor)
AC_CHECK_LIB(curses, mvprintw)
AC_C_CONST
AC_C_INLINE
AM_PROG_CC_C_O

View file

@ -133,6 +133,35 @@ Provides a mask of CPUs which irqbalance should ignore and never assign interrup
.B SIGHUP
Forces a rescan of the available IRQs and system topology.
.SH "API"
irqbalance is able to communicate via socket and return it's current assignment
tree and setup, as well as set new settings based on sent values. Socket is abstract,
with a name in form of
.B irqbalance<PID>.sock
, where <PID> is the process ID of irqbalance instance to communicate with.
Possible values to send:
.TP
.B stats
Retrieve assignment tree of IRQs to CPUs, in recursive manner. For each CPU node
in tree, it's type, number, load and whether the save mode is active are sent. For
each assigned IRQ type, it's number, load, number of IRQs since last rebalancing
and it's class are sent. Refer to types.h file for explanation of defines.
.TP
.B setup
Get the current value of sleep interval, mask of banned CPUs and and list of banned IRQs.
.TP
.B settings sleep <s>
Set new value of sleep interval, <s> >= 1.
.TP
.B settings cpus <cpu_number1> <cpu_number2> ...
Ban listed CPUs from IRQ handling, all old values of banned CPUs are forgotten.
.TP
.B settings ban irqs <irq1> <irq2> ...
Ban listed IRQs from being balanced, all old values of banned IRQs are forgotten.
.PP
irqbalance checks SCM_CREDENTIALS of sender (only root user is allowed to interact).
Based on chosen tools, ancillary message with credentials needs to be sent with request.
.SH "Homepage"
https://github.com/Irqbalance/irqbalance