From: Dilip Daya <dilip.daya@hp.com>
To: linux-sctp@vger.kernel.org
Subject: Re: [PATCH] sctp: Add buffer utilization fields to /proc/net/sctp/assocs
Date: Thu, 11 Apr 2013 17:04:59 +0000 [thread overview]
Message-ID: <1365699899.2781.8.camel@pro6455b.example.com> (raw)
In-Reply-To: <4BC2A2E3B1AB5441B4415258B8908D4D10DBD103@G2W2530.americas.hpqcorp.net>
Hi Neil,
On Thu, 2013-04-11 at 09:28 -0400, Neil Horman wrote:
> On Wed, Apr 10, 2013 at 09:02:19PM +0000, Daya, Dilip (Telco Linux) wrote:
> > From: Dilip Daya <dilip.daya@hp.com>
> >
> > This patch adds the following fields to /proc/net/sctp/assocs output:
> >
> > - sk->sk_wmem_alloc (transmit queue bytes committed)
> > - sk->sk_wmem_queued (persistent queue size)
> > - sk->sk_sndbuf (size of send buffer in bytes)
> > - sk->sk_rcvbuf (size of receive buffer in bytes)
> >
> > When small DATA chunks containing 136 bytes data are sent the TX_QUEUE
> > (assoc->sndbuf_used) reaches a maximum of 40.9% of sk_sndbuf value when
> > peer.rwnd = 0. This was diagnosed from sk_wmem_alloc value reaching maximum
> > value of sk_sndbuf.
> >
> > TX_QUEUE (assoc->sndbuf_used), sk_wmem_alloc and sk_wmem_queued values are
> > incremented in sctp_set_owner_w() for outgoing data chunks. Having access to
> > the above values in /proc/net/sctp/assocs will provide a better understanding
> > of SCTP buffer management.
> >
> > With patch applied, example output when peer.rwnd = 0
> >
> > where:
> > ASSOC ffff880132298000 is sender
> > ffff880125343000 is receiver
> >
> > # cat /proc/net/sctp/assocs
> > ASSOC SOCK STY SST ST HBKT ASSOC-ID TX_QUEUE RX_QUEUE \
> > ffff880132298000 ffff880124a0a0c0 2 1 3 29325 1 214656 0 \
> > ffff880125343000 ffff8801237d7700 2 1 3 36210 2 0 524520 \
> >
> > UID INODE LPORT RPORT LADDRS <-> RADDRS HBINT INS OUTS \
> > 0 25108 3455 3456 *10.4.8.3 <-> *10.5.8.3 7500 2 2 \
> > 0 27819 3456 3455 *10.5.8.3 <-> *10.4.8.3 7500 2 2 \
> >
> > MAXRT T1X T2X RTXC sk_wmem_alloc sk_wmem_queued sk_sndbuf sk_rcvbuf
> > 4 0 0 72 525633 440320 524288 524288
> > 4 0 0 0 1 0 524288 524288
> >
> >
> >
> > Signed-off-by: Dilip Daya <dilip.daya@hp.com>
> > ---
> > net/sctp/proc.c | 20 +++++++++++++-------
> > 1 files changed, 13 insertions(+), 7 deletions(-)
> >
> > diff --git a/net/sctp/proc.c b/net/sctp/proc.c
> > index 7923164..56636db 100644
> > --- a/net/sctp/proc.c
> > +++ b/net/sctp/proc.c
> > @@ -293,10 +293,11 @@ static void * sctp_assocs_seq_start(struct seq_file *seq, loff_t *pos)
> > *pos = 0;
> >
> > if (*pos = 0)
> > - seq_printf(seq, " ASSOC SOCK STY SST ST HBKT "
> > - "ASSOC-ID TX_QUEUE RX_QUEUE UID INODE LPORT "
> > - "RPORT LADDRS <-> RADDRS "
> > - "HBINT INS OUTS MAXRT T1X T2X RTXC\n");
> > + seq_printf(seq, " ASSOC SOCK STY SST ST HBKT "
> > + "ASSOC-ID TX_QUEUE RX_QUEUE UID INODE LPORT RPORT "
> > + "LADDRS <-> RADDRS HBINT INS OUTS MAXRT T1X"
> > + " T2X RTXC sk_wmem_alloc sk_wmem_queued sk_sndbuf"
> > + " sk_rcvbuf\n");
> >
> I'm a bit leery of changing the spacing between the fields in the file like
> you've done above. I know it would look better, but changing things like that
> can change the behavior of user space parsers, which we need to be careful of.
>
> Also, can't you get this information via ss -m?
For TCP connections, 'yes', not for SCTP associations.
Thank you for reviewing this.
So, here is v2 of the patch with the fields spacing taken care of:
---
From: Dilip Daya <dilip.daya@hp.com>
This patch adds the following fields to /proc/net/sctp/assocs output:
- sk->sk_wmem_alloc (transmit queue bytes committed)
- sk->sk_wmem_queued (persistent queue size)
- sk->sk_sndbuf (size of send buffer in bytes)
- sk->sk_rcvbuf (size of receive buffer in bytes)
When small DATA chunks containing 136 bytes data are sent the TX_QUEUE
(assoc->sndbuf_used) reaches a maximum of 40.9% of sk_sndbuf value when
peer.rwnd = 0. This was diagnosed from sk_wmem_alloc value reaching
maximum value of sk_sndbuf.
TX_QUEUE (assoc->sndbuf_used), sk_wmem_alloc and sk_wmem_queued values
are incremented in sctp_set_owner_w() for outgoing data chunks. Having
access to the above values in /proc/net/sctp/assocs will provide a
better understanding of SCTP buffer management.
With patch applied, example output when peer.rwnd = 0
where:
ASSOC ffff880132298000 is sender
ffff880125343000 is receiver
ASSOC SOCK STY SST ST HBKT ASSOC-ID TX_QUEUE
RX_QUEUE \
ffff880132298000 ffff880124a0a0c0 2 1 3 29325 1 214656
0 \
ffff880125343000 ffff8801237d7700 2 1 3 36210 2 0
524520 \
UID INODE LPORT RPORT LADDRS <-> RADDRS HBINT INS OUTS \
0 25108 3455 3456 *10.4.8.3 <-> *10.5.8.3 7500 2 2 \
0 27819 3456 3455 *10.5.8.3 <-> *10.4.8.3 7500 2 2 \
MAXRT T1X T2X RTXC sk_wmem_alloc sk_wmem_queued sk_sndbuf sk_rcvbuf
4 0 0 72 525633 440320 524288 524288
4 0 0 0 1 0 524288 524288
Signed-off-by: Dilip Daya <dilip.daya@hp.com>
---
net/sctp/proc.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/net/sctp/proc.c b/net/sctp/proc.c
index 8c19e97..763abb3 100644
--- a/net/sctp/proc.c
+++ b/net/sctp/proc.c
@@ -296,7 +296,8 @@ static void * sctp_assocs_seq_start(struct seq_file
*seq, loff_t *pos)
seq_printf(seq, " ASSOC SOCK STY SST ST HBKT "
"ASSOC-ID TX_QUEUE RX_QUEUE UID INODE LPORT "
"RPORT LADDRS <-> RADDRS "
- "HBINT INS OUTS MAXRT T1X T2X RTXC\n");
+ "HBINT INS OUTS MAXRT T1X T2X RTXC "
+ "sk_wmem_alloc sk_wmem_queued sk_sndbuf sk_rcvbuf\n");
return (void *)pos;
}
@@ -351,11 +352,16 @@ static int sctp_assocs_seq_show(struct seq_file
*seq, void *v)
sctp_seq_dump_local_addrs(seq, epb);
seq_printf(seq, "<-> ");
sctp_seq_dump_remote_addrs(seq, assoc);
- seq_printf(seq, "\t%8lu %5d %5d %4d %4d %4d %8d ",
+ seq_printf(seq, "\t%8lu %5d %5d %4d %4d %4d %8d "
+ "%8d %8d %8d %8d",
assoc->hbinterval, assoc->c.sinit_max_instreams,
assoc->c.sinit_num_ostreams, assoc->max_retrans,
assoc->init_retries, assoc->shutdown_retries,
- assoc->rtx_data_chunks);
+ assoc->rtx_data_chunks,
+ atomic_read(&sk->sk_wmem_alloc),
+ sk->sk_wmem_queued,
+ sk->sk_sndbuf,
+ sk->sk_rcvbuf);
seq_printf(seq, "\n");
}
read_unlock(&head->lock);
--
1.5.6.5
next prev parent reply other threads:[~2013-04-11 17:04 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-10 21:02 [PATCH] sctp: Add buffer utilization fields to /proc/net/sctp/assocs Daya, Dilip (Telco Linux)
2013-04-11 13:28 ` Neil Horman
2013-04-11 17:04 ` Dilip Daya [this message]
2013-04-11 17:30 ` Neil Horman
2013-04-11 18:44 ` Daniel Borkmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1365699899.2781.8.camel@pro6455b.example.com \
--to=dilip.daya@hp.com \
--cc=linux-sctp@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.