add -z flag to intrctl list, which elides all-zero rows.
This commit is contained in:
parent
2f5074a348
commit
be571cf8e9
|
@ -1,4 +1,4 @@
|
||||||
.\" $NetBSD: intrctl.8,v 1.5 2019/09/23 09:17:19 mrg Exp $
|
.\" $NetBSD: intrctl.8,v 1.6 2019/09/23 20:15:31 mrg Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright (c) 2015 Internet Initiative Japan Inc.
|
.\" Copyright (c) 2015 Internet Initiative Japan Inc.
|
||||||
.\" All rights reserved.
|
.\" All rights reserved.
|
||||||
|
@ -24,7 +24,7 @@
|
||||||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
.\" POSSIBILITY OF SUCH DAMAGE.
|
.\" POSSIBILITY OF SUCH DAMAGE.
|
||||||
.\"
|
.\"
|
||||||
.Dd September 22, 2019
|
.Dd September 23, 2019
|
||||||
.Dt INTRCTL 8
|
.Dt INTRCTL 8
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
|
@ -56,7 +56,7 @@ enable to set an interrupt's affinity to
|
||||||
If
|
If
|
||||||
.Ar cpu_index
|
.Ar cpu_index
|
||||||
is already enabled, this command has no effect.
|
is already enabled, this command has no effect.
|
||||||
.It list Oo Fl c Oc Op Fl w Ar wait
|
.It list Oo Fl c Oc Oo Fl w Ar wait Oc Op Fl z
|
||||||
for each intrid in the system, display interrupt counts per CPU.
|
for each intrid in the system, display interrupt counts per CPU.
|
||||||
The intrid is an interrupt name such as "ioapic0 pin 22" for x86.
|
The intrid is an interrupt name such as "ioapic0 pin 22" for x86.
|
||||||
.Pp
|
.Pp
|
||||||
|
@ -72,6 +72,10 @@ is specified then
|
||||||
display the data continuously with a
|
display the data continuously with a
|
||||||
.Ar wait
|
.Ar wait
|
||||||
seconds delay between each iteration.
|
seconds delay between each iteration.
|
||||||
|
.Pp
|
||||||
|
If
|
||||||
|
.Fl z
|
||||||
|
is specified then rows with all CPUs having zero interrupts will be skipped.
|
||||||
.It nointr Fl c Ar cpu_index
|
.It nointr Fl c Ar cpu_index
|
||||||
disable to set an interrupt's affinity to
|
disable to set an interrupt's affinity to
|
||||||
.Ar cpu_index .
|
.Ar cpu_index .
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: intrctl.c,v 1.9 2019/09/23 09:17:19 mrg Exp $ */
|
/* $NetBSD: intrctl.c,v 1.10 2019/09/23 20:15:31 mrg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015 Internet Initiative Japan Inc.
|
* Copyright (c) 2015 Internet Initiative Japan Inc.
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__RCSID("$NetBSD: intrctl.c,v 1.9 2019/09/23 09:17:19 mrg Exp $");
|
__RCSID("$NetBSD: intrctl.c,v 1.10 2019/09/23 20:15:31 mrg Exp $");
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/sysctl.h>
|
#include <sys/sysctl.h>
|
||||||
|
@ -99,8 +99,9 @@ usage(void)
|
||||||
{
|
{
|
||||||
const char *progname = getprogname();
|
const char *progname = getprogname();
|
||||||
|
|
||||||
fprintf(stderr, "usage: %s list [-c] [-w secs]\n", progname);
|
fprintf(stderr, "usage: %s list [-c] [-w secs] [-z]\n", progname);
|
||||||
fprintf(stderr, " %s affinity -i interrupt_name -c cpu_index\n", progname);
|
fprintf(stderr, " %s affinity -i interrupt_name -c cpu_index\n",
|
||||||
|
progname);
|
||||||
fprintf(stderr, " %s intr -c cpu_index\n", progname);
|
fprintf(stderr, " %s intr -c cpu_index\n", progname);
|
||||||
fprintf(stderr, " %s nointr -c cpu_index\n", progname);
|
fprintf(stderr, " %s nointr -c cpu_index\n", progname);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
|
@ -110,7 +111,7 @@ usage(void)
|
||||||
static int intrctl_io_alloc_retry_count = 4;
|
static int intrctl_io_alloc_retry_count = 4;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
intrctl_list_one(int compact)
|
intrctl_list_one(bool compact, bool skipzero)
|
||||||
{
|
{
|
||||||
char buf[64];
|
char buf[64];
|
||||||
struct intrio_list_line *illine;
|
struct intrio_list_line *illine;
|
||||||
|
@ -169,6 +170,20 @@ intrctl_list_one(int compact)
|
||||||
illine = intrctl_io_nextline(handle, illine)) {
|
illine = intrctl_io_nextline(handle, illine)) {
|
||||||
struct intrio_list_line_cpu *illc;
|
struct intrio_list_line_cpu *illc;
|
||||||
|
|
||||||
|
if (skipzero) {
|
||||||
|
bool is_zero = true;
|
||||||
|
|
||||||
|
for (i = 0; i < ncpus; i++) {
|
||||||
|
illc = &illine->ill_cpu[i];
|
||||||
|
if (illc->illc_count != 0) {
|
||||||
|
is_zero = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (is_zero)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
printf("%-*s ", (int)intridlen, illine->ill_intrid);
|
printf("%-*s ", (int)intridlen, illine->ill_intrid);
|
||||||
if (compact) {
|
if (compact) {
|
||||||
uint64_t total = 0;
|
uint64_t total = 0;
|
||||||
|
@ -209,13 +224,17 @@ intrctl_list(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int seconds = 0;
|
int seconds = 0;
|
||||||
bool compact = false;
|
bool compact = false;
|
||||||
|
bool skipzero = false;
|
||||||
int ch;
|
int ch;
|
||||||
|
|
||||||
while ((ch = getopt(argc, argv, "cw:")) != -1) {
|
while ((ch = getopt(argc, argv, "cw:z")) != -1) {
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case 'c':
|
case 'c':
|
||||||
compact = true;
|
compact = true;
|
||||||
break;
|
break;
|
||||||
|
case 'z':
|
||||||
|
skipzero = true;
|
||||||
|
break;
|
||||||
case 'w':
|
case 'w':
|
||||||
seconds = atoi(optarg);
|
seconds = atoi(optarg);
|
||||||
if (seconds < 0)
|
if (seconds < 0)
|
||||||
|
@ -226,10 +245,12 @@ intrctl_list(int argc, char **argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
do {
|
for (;;) {
|
||||||
intrctl_list_one(compact);
|
intrctl_list_one(compact, skipzero);
|
||||||
|
if (seconds == 0)
|
||||||
|
break;
|
||||||
sleep(seconds);
|
sleep(seconds);
|
||||||
} while (seconds);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in New Issue