Signed-off-by: Ira Weiny <wei...@llnl.gov> --- opensm/osm_perfmgr_db.c | 93 ++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 76 insertions(+), 17 deletions(-)
diff --git a/opensm/osm_perfmgr_db.c b/opensm/osm_perfmgr_db.c index 6f9c1ab..ea6fe19 100644 --- a/opensm/osm_perfmgr_db.c +++ b/opensm/osm_perfmgr_db.c @@ -699,6 +699,55 @@ static void dump_node_mr(db_node_t * node, FILE * fp) } } +static void dump_hr_dc(FILE *fp, uint64_t val64, int data) +{ + char *unit = ""; + uint64_t tmp = val64; + float val = 0.0; + int ui = 0; + int div = 1; + + tmp /= 1024; + while (tmp) { + ui++; + tmp /= 1024; + div *= 1024; + } + + val = (float)(val64); + if (data) { + val *= 4; + if (val/div > 1024) { + ui++; + div *= 1024; + } + } + val /= div; + + switch (ui) { + case 1: + unit = "K"; + break; + case 2: + unit = "M"; + break; + case 3: + unit = "G"; + break; + case 4: + unit = "T"; + break; + case 5: + unit = "P"; + break; + case 6: + unit = "E"; + break; + } + + fprintf(fp, " (%5.3f%s%s)\n", val, unit, data ? "B" : ""); +} + /********************************************************************** * Output a human readable output of the port counters **********************************************************************/ @@ -738,15 +787,7 @@ static void dump_node_hr(db_node_t * node, FILE * fp, char *port) " rcv_constraint_err : %" PRIu64 "\n" " link_integrity_err : %" PRIu64 "\n" " buf_overrun_err : %" PRIu64 "\n" - " vl15_dropped : %" PRIu64 "\n" - " xmit_data : %" PRIu64 "\n" - " rcv_data : %" PRIu64 "\n" - " xmit_pkts : %" PRIu64 "\n" - " rcv_pkts : %" PRIu64 "\n" - " unicast_xmit_pkts : %" PRIu64 "\n" - " unicast_rcv_pkts : %" PRIu64 "\n" - " multicast_xmit_pkts : %" PRIu64 "\n" - " multicast_rcv_pkts : %" PRIu64 "\n", + " vl15_dropped : %" PRIu64 "\n", node->node_name, node->node_guid, node->active ? "TRUE":"FALSE", @@ -763,15 +804,33 @@ static void dump_node_hr(db_node_t * node, FILE * fp, char *port) node->ports[i].err_total.rcv_constraint_err, node->ports[i].err_total.link_integrity, node->ports[i].err_total.buffer_overrun, - node->ports[i].err_total.vl15_dropped, - node->ports[i].dc_total.xmit_data, - node->ports[i].dc_total.rcv_data, - node->ports[i].dc_total.xmit_pkts, - node->ports[i].dc_total.rcv_pkts, - node->ports[i].dc_total.unicast_xmit_pkts, - node->ports[i].dc_total.unicast_rcv_pkts, - node->ports[i].dc_total.multicast_xmit_pkts, + node->ports[i].err_total.vl15_dropped); + + fprintf(fp, " xmit_data : %" PRIu64, + node->ports[i].dc_total.xmit_data); + dump_hr_dc(fp, node->ports[i].dc_total.xmit_data, 1); + fprintf(fp, " rcv_data : %" PRIu64, + node->ports[i].dc_total.rcv_data); + dump_hr_dc(fp, node->ports[i].dc_total.rcv_data, 1); + fprintf(fp, " xmit_pkts : %" PRIu64, + node->ports[i].dc_total.xmit_pkts); + dump_hr_dc(fp, node->ports[i].dc_total.xmit_pkts, 0); + fprintf(fp, " rcv_pkts : %" PRIu64, + node->ports[i].dc_total.rcv_pkts); + dump_hr_dc(fp, node->ports[i].dc_total.rcv_pkts, 0); + fprintf(fp, " unicast_xmit_pkts : %" PRIu64, + node->ports[i].dc_total.unicast_xmit_pkts); + dump_hr_dc(fp, node->ports[i].dc_total.unicast_xmit_pkts, 0); + fprintf(fp, " unicast_rcv_pkts : %" PRIu64, + node->ports[i].dc_total.unicast_rcv_pkts); + dump_hr_dc(fp, node->ports[i].dc_total.unicast_rcv_pkts, 0); + fprintf(fp, " multicast_xmit_pkts : %" PRIu64, + node->ports[i].dc_total.multicast_xmit_pkts); + dump_hr_dc(fp, node->ports[i].dc_total.multicast_xmit_pkts, 0); + fprintf(fp, " multicast_rcv_pkts : %" PRIu64, node->ports[i].dc_total.multicast_rcv_pkts); + dump_hr_dc(fp, node->ports[i].dc_total.multicast_rcv_pkts, 0); + } } -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html