Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 25 Mar 2018 14:36:23 -0400 (EDT)
From:      AN <andy@neu.net>
To:        John Baldwin <jhb@freebsd.org>
Cc:        freebsd-current@freebsd.org, "markj@FreeBSD.org" <markj@freebsd.org>, "<rstone@freebsd.org>" <rstone@freebsd.org>
Subject:   Re: problem with [intr{swi4: clock (0)}]
Message-ID:  <alpine.BSF.2.21.1803251429060.47705@mail.neu.net>
In-Reply-To: <1901802.BMbLzLVd8F@ralph.baldwin.cx>
References:  <alpine.BSF.2.21.1803211112520.46515@mail.neu.net> <1901802.BMbLzLVd8F@ralph.baldwin.cx>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi:


On Fri, 23 Mar 2018, John Baldwin wrote:

> Date: Fri, 23 Mar 2018 12:11:03 -0700
> From: John Baldwin <jhb@freebsd.org>
> To: freebsd-current@freebsd.org
> Cc: AN <andy@neu.net>, "markj@FreeBSD.org" <markj@freebsd.org>,
>     "<rstone@freebsd.org>" <rstone@freebsd.org>
> Subject: Re: problem with [intr{swi4: clock (0)}]
> 
> On Wednesday, March 21, 2018 11:36:48 AM AN wrote:
>> Hi:
>>
>> I would appreciate any help with this issue, this is a new machine built
>> in the last week and if it is a hardware issue I want to return it.  The
>> problem seems to have started in the last 24 hours or so.  I am seeing a
>> really high cpu utilization for [intr{swi4: clock (0)}].  I have tried a
>> couple things to troubleshoot:
>
> I would try using dtrace to figure out which functions are running in the
> callout thread.  I've cc'd a couple of folks in case they already have dtrace
> scripts to do this.  You would probably want a script that watched
> callout_execute::callout-start and callout_execute::callout-end events.  You
> would want to save the start time in callout-start and then report a delta
> along with the values of 'c->c_func' (the last argument to these probes is
> 'c').  You might be able to just store the time delta in an aggregate that is
> keyed on the function.  Actually, I've gone ahead and written a little
> script:
>
> ----
> callout_execute:::callout-start
> {
> 	self->start = timestamp;
> 	self->func = args[0]->c_func;
> 	@funcs[self->func] = count();
> }
>
> callout_execute:::callout-end
> {
> 	@functimes[self->func] = sum(timestamp - self->start);
> }
>
> END
> {
> 	printf("\n\nCallout function counts:\n");
> 	printa("%@8u %a\n", @funcs);
> 	printf("\nCallout function runtime:\n");
> 	printa("%@d %a\n", @functimes);
> }
> ----
>
> Store this in a file named 'callout.d' and then run 'dtrace -s callout.d'.
> Let it run for a second or two and then use Ctrl-C to stop it.
>
> The first table it will output is a histogram showing how many times
> different functions were invoked.   The second table will count how much
> total time was spent in each function:
>
> CPU     ID                    FUNCTION:NAME
>  4      2                             :END
>
> Callout function counts:
>       2 kernel`kbdmux_kbd_intr_timo
>       2 kernel`usb_power_wdog
>       2 kernel`ipport_tick
>       2 kernel`tcp_timer_delack
>       2 kernel`nd6_timer
>       2 kernel`key_timehandler
>       2 dtrace.ko`dtrace_state_deadman
>       4 kernel`newnfs_timer
>       4 kernel`pfslowtimo
>      10 kernel`logtimeout
>      10 kernel`pffasttimo
>      18 kernel`lim_cb
>      32 kernel`iflib_timer
>      84 kernel`sleepq_timeout
>     224 dtrace.ko`dtrace_state_clean
>
> Callout function runtime:
> 2080 kernel`logtimeout
> 2198 kernel`kbdmux_kbd_intr_timo
> 2890 kernel`ipport_tick
> 3550 kernel`iflib_timer
> 3672 kernel`lim_cb
> 3936 kernel`pffasttimo
> 4023 dtrace.ko`dtrace_state_clean
> 4224 kernel`newnfs_timer
> 4751 kernel`key_timehandler
> 5286 kernel`nd6_timer
> 6700 kernel`usb_power_wdog
> 7341 kernel`pfslowtimo
> 19607 kernel`tcp_timer_delack
> 20273 dtrace.ko`dtrace_state_deadman
> 32262 kernel`sleepq_timeout
>
> You can use this to figure out which timer events are using CPU in the
> softclock thread/process.
>
>

To John and others who responded thanks for your time.  I have to 
apologize though for wasting your spare cpu cycles.  It turns out the root 
cause was a malfunctioning USB keyboard with a stuck key.  Removed and 
replaced, now everything is working normally.  Thanks again and sorry 
for the noise.

Best regards,

Andy



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.2.21.1803251429060.47705>