Date: Thu, 16 Jul 2009 18:52:23 GMT From: Gabor Pali <pgj@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 166170 for review Message-ID: <200907161852.n6GIqN30016040@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=166170 Change 166170 by pgj@petymeg-current on 2009/07/16 18:51:51 Add support for mbuf(9) statistics: - Add mbuf_type ("memory buffer") and its accessors - Add netstat_mbuf() - Add libmemstat(3) as dependency Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/Makefile#10 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#25 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#24 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_mbuf.c#1 add .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#27 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/Makefile#10 (text+ko) ==== @@ -3,7 +3,7 @@ .include <bsd.own.mk> LIB= netstat -SRCS= netstat_socket.c netstat_util.c +SRCS= netstat_socket.c netstat_mbuf.c netstat_util.c INCS= netstat.h @@ -12,8 +12,8 @@ SHLIB_MAJOR= 1 -DPADD= ${LIBKVM} ${LIBUTIL} -LDADD= -lkvm -lutil +DPADD= ${LIBKVM} ${LIBMEMSTAT} ${LIBUTIL} +LDADD= -lkvm -lmemstat -lutil WARNS?= 3 ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#25 (text+ko) ==== @@ -50,6 +50,9 @@ #define NETSTAT_SOCKET_KVM 0x01 /* Use KVM. */ #define NETSTAT_SOCKET_ALL 0x02 /* Return all connections. */ +/* netstat_mbuf(): */ +#define NETSTAT_MBUF_KVM 0x01 + /* Enum for TCP states: */ enum tcp_state { tcps_Closed, @@ -74,6 +77,9 @@ struct addr_type; +struct mbuf_type; + + __BEGIN_DECLS const char *netstat_strerror(int); @@ -140,4 +146,36 @@ u_int32_t netstat_sbt_get_mbmax(const struct sockbuf_type *sbtp); __END_DECLS +/* "Memory buffers" */ +struct mbuf_type *netstat_mbt_alloc(void); +void netstat_mbt_free(struct mbuf_type *); +int netstat_mbt_geterror(const struct mbuf_type *); + +int netstat_mbuf(struct mbuf_type *stats, int flags, void *kvm_handle); + +const struct buffer_type *netstat_mbt_get_mbuf(const struct mbuf_type *); +const struct buffer_type *netstat_mbt_get_cluster(const struct mbuf_type *); +const struct buffer_type *netstat_mbt_get_packet(const struct mbuf_type *); +const struct buffer_type *netstat_mbt_get_tag(const struct mbuf_type *); +const struct buffer_type *netstat_mbt_get_jumbop(const struct mbuf_type *); +const struct buffer_type *netstat_mbt_get_jumbo9(const struct mbuf_type *); +const struct buffer_type *netstat_mbt_get_jumbo16(const struct mbuf_type *); +u_int64_t netstat_mbt_get_bytes_inuse(const struct mbuf_type *); +u_int64_t netstat_mbt_get_bytes_incache(const struct mbuf_type *); +u_int64_t netstat_mbt_get_bytes_total(const struct mbuf_type *); +u_int64_t netstat_mbt_get_drain(const struct mbuf_type *); +u_int64_t netstat_mbt_get_sf_bufs(const struct mbuf_type *); +u_int64_t netstat_mbt_get_sf_bufs_peak(const struct mbuf_type *); +u_int64_t netstat_mbt_get_sf_bufs_inuse(const struct mbuf_type *); +u_int64_t netstat_mbt_get_sf_iocnt(const struct mbuf_type *); +u_int64_t netstat_mbt_get_sf_allocfail(const struct mbuf_type *); +u_int64_t netstat_mbt_get_sf_allocwait(const struct mbuf_type *); + +u_int64_t netstat_bt_get_count(const struct buffer_type *); +u_int64_t netstat_bt_get_bytes(const struct buffer_type *); +u_int64_t netstat_bt_get_free(const struct buffer_type *); +u_int64_t netstat_bt_get_failures(const struct buffer_type *); +u_int64_t netstat_bt_get_size(const struct buffer_type *); +u_int64_t netstat_bt_get_limit(const struct buffer_type *); + #endif /* !_NETSTAT_H_ */ ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#24 (text+ko) ==== @@ -133,6 +133,42 @@ struct socket_type *sti_next; }; +struct buffer_type { + u_int64_t bt_count; + u_int64_t bt_bytes; + u_int64_t bt_free; + u_int64_t bt_failures; + u_int64_t bt_size; + u_int64_t bt_limit; +}; + +struct mbuf_type { + struct buffer_type mbt_mbuf; + struct buffer_type mbt_cluster; + struct buffer_type mbt_packet; + struct buffer_type mbt_tag; + struct buffer_type mbt_jumbop; + struct buffer_type mbt_jumbo9; + struct buffer_type mbt_jumbo16; + + u_int64_t mbt_bytes_inuse; + u_int64_t mbt_bytes_incache; + u_int64_t mbt_bytes_total; + + /* from mbstat */ + u_int64_t mbt_drain; /* times drained protocols for space */ + + /* Sendfile stats */ + u_int64_t mbt_sf_bufs; /* number of avail sf_bufs */ + u_int64_t mbt_sf_bufs_peak; /* peak usage */ + u_int64_t mbt_sf_bufs_inuse; /* in use */ + u_int64_t mbt_sf_iocnt; /* times sf had to do disk I/O */ + u_int64_t mbt_sf_allocfail; /* times sfbuf alloc failed */ + u_int64_t mbt_sf_allocwait; /* times sfbuf alloc waited */ + + int mbt_error; +}; + int kread_data(kvm_t *kvm, u_long kvm_pointer, void *address, size_t size); int kread_string(kvm_t *kvm, u_long kvm_pointer, char *buffer, int buflen); ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#27 (text+ko) ==== @@ -551,3 +551,168 @@ { return (sbtp->sbt_mbmax); } + +/* Memory buffer type */ +struct mbuf_type * +netstat_mbt_alloc(void) +{ + struct mbuf_type *mbtp; + + mbtp = malloc(sizeof(*mbtp)); + if (mbtp == NULL) + return (NULL); + + bzero(mbtp, sizeof(*mbtp)); + return (mbtp); +} + +void +netstat_mbt_free(struct mbuf_type *mbtp) +{ + free(mbtp); +} + +int +netstat_mbt_geterror(const struct mbuf_type *mbtp) +{ + return (mbtp->mbt_error); +} + +const struct buffer_type * +netstat_mbt_get_mbuf(const struct mbuf_type *mbtp) +{ + return (&mbtp->mbt_mbuf); +} + +const struct buffer_type * +netstat_mbt_get_cluster(const struct mbuf_type *mbtp) +{ + return (&mbtp->mbt_cluster); +} + +const struct buffer_type * +netstat_mbt_get_packet(const struct mbuf_type *mbtp) +{ + return (&mbtp->mbt_packet); +} + +const struct buffer_type * +netstat_mbt_get_tag(const struct mbuf_type *mbtp) +{ + return (&mbtp->mbt_tag); +} + +const struct buffer_type * +netstat_mbt_get_jumbop(const struct mbuf_type *mbtp) +{ + return (&mbtp->mbt_jumbop); +} + +const struct buffer_type * +netstat_mbt_get_jumbo9(const struct mbuf_type *mbtp) +{ + return (&mbtp->mbt_jumbo9); +} + +const struct buffer_type * +netstat_mbt_get_jumbo16(const struct mbuf_type *mbtp) +{ + return (&mbtp->mbt_jumbo16); +} + +u_int64_t +netstat_mbt_get_bytes_inuse(const struct mbuf_type *mbtp) +{ + return (mbtp->mbt_bytes_inuse); +} + +u_int64_t +netstat_mbt_get_bytes_incache(const struct mbuf_type *mbtp) +{ + return (mbtp->mbt_bytes_incache); +} + +u_int64_t +netstat_mbt_get_bytes_total(const struct mbuf_type *mbtp) +{ + return (mbtp->mbt_bytes_total); +} + +u_int64_t +netstat_mbt_get_drain(const struct mbuf_type *mbtp) +{ + return (mbtp->mbt_drain); +} + +u_int64_t +netstat_mbt_get_sf_bufs(const struct mbuf_type *mbtp) +{ + return (mbtp->mbt_sf_bufs); +} + +u_int64_t +netstat_mbt_get_sf_bufs_peak(const struct mbuf_type *mbtp) +{ + return (mbtp->mbt_sf_bufs_peak); +} + +u_int64_t +netstat_mbt_get_sf_bufs_inuse(const struct mbuf_type *mbtp) +{ + return (mbtp->mbt_sf_bufs_inuse); +} + +u_int64_t +netstat_mbt_get_sf_iocnt(const struct mbuf_type *mbtp) +{ + return (mbtp->mbt_sf_iocnt); +} + +u_int64_t +netstat_mbt_get_sf_allocfail(const struct mbuf_type *mbtp) +{ + return (mbtp->mbt_sf_allocfail); +} + +u_int64_t +netstat_mbt_get_sf_allocwait(const struct mbuf_type *mbtp) +{ + return (mbtp->mbt_sf_allocwait); +} + +/* Buffer type */ +u_int64_t +netstat_bt_get_count(const struct buffer_type *btp) +{ + return (btp->bt_count); +} + +u_int64_t +netstat_bt_get_bytes(const struct buffer_type *btp) +{ + return (btp->bt_bytes); +} + +u_int64_t +netstat_bt_get_free(const struct buffer_type *btp) +{ + return (btp->bt_free); +} + +u_int64_t +netstat_bt_get_failures(const struct buffer_type *btp) +{ + return (btp->bt_failures); +} + +u_int64_t +netstat_bt_get_size(const struct buffer_type *btp) +{ + return (btp->bt_size); +} + +u_int64_t +netstat_bt_get_limit(const struct buffer_type *btp) +{ + return (btp->bt_limit); +}
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907161852.n6GIqN30016040>