11.0 stuck on high network load
Slawa Olhovchenkov
slw at zxy.spb.ru
Thu Oct 13 14:38:36 UTC 2016
On Thu, Oct 13, 2016 at 01:56:21PM +0200, Julien Charbon wrote:
> >> Something like:
> >
> > Yes, thanks!
>
> Proposed changes added in the review:
>
> https://reviews.freebsd.org/D8211
>
> tell me when you have three days without issue with this change.
>
> >> tcp_detach() {
> >>
> >> ...
> >> if (inp->inp_flags & INP_TIMEWAIT) {
> >>
> >> ...
> >> if (inp->inp_flags & INP_DROPPED) {
> >>
> >> in_pcbdetach(inp);
> >> if (__predict_true(tp == NULL)) {
> >> in_pcbfree(inp);
> >> } else {
> >> #ifdef INVARIANTS
> >> panic("tcp_detach: tp != NULL, That's not good because 'blah'\n");
> >> #else
> >> log(LOG_ERR, "tcp_detach: tp != NULL, That's not good because
> >> 'blah'\n");
> >
> > May be some more info in log can help to detect root cause of issuse?
> > I am don't know what info, may be flags or number of references?
>
> For this kind of issue, the useful part is the stacktrace. INVARIANT
Like this?
#ifdef KDB
kdb_backtrace();
#endif
as found in sys/netgraph/ng_base.c
> will give you that trace in the core, and without INVARIANT then it is
> better to use dtrace:
>
> $ cat tcp-twstart-dropped.d
> fbt::tcp_twstart:entry
> /args[0]->t_inpcb->inp_flags & 0x04000000/
> {
> stack();
> printf("INP_DROPPED in tcp_twstart: %x", args[0]->t_inpcb->inp_flags);
> }
Same code may be insert there too, IMHO.
> --
> Julien
>
>
More information about the freebsd-stable
mailing list