Message ID | 1366112347.7478.10.camel@pro6455b.example.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Dilip Daya <dilip.daya@hp.com> Date: Tue, 16 Apr 2013 07:39:07 -0400 > From: Dilip Daya <dilip.daya@hp.com> > > sctp: Add buffer utilization fields to /proc/net/sctp/assocs > > This patch adds the following fields to /proc/net/sctp/assocs output: > > - sk->sk_wmem_alloc as "wmema" (transmit queue bytes committed) > - sk->sk_wmem_queued as "wmemq" (persistent queue size) > - sk->sk_sndbuf as "sndbuf" (size of send buffer in bytes) > - sk->sk_rcvbuf as "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. ... > Signed-off-by: Dilip Daya <dilip.daya@hp.com> > Acked-by: Neil Horman <nhorman@tuxdriver.com> Applied. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/sctp/proc.c b/net/sctp/proc.c index ab3bba8..4e45ee3 100644 --- a/net/sctp/proc.c +++ b/net/sctp/proc.c @@ -295,7 +295,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 " + "wmema wmemq sndbuf rcvbuf\n"); return (void *)pos; } @@ -349,11 +350,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);