void _gnix_dump_gni_res(uint8_t ptag) { int i; gni_return_t status; gni_dev_res_desc_t dev_res_desc; gni_job_res_desc_t job_res_desc; #define BUF_SZ 4096 char buf[BUF_SZ]; int size = BUF_SZ, written = 0; if (!fi_log_enabled(&gnix_prov, FI_LOG_WARN, FI_LOG_FABRIC)) return; written += snprintf(buf + written, size - written, "Device Resources:\n"); for (i = GNI_DEV_RES_FIRST+1; i < GNI_DEV_RES_LAST; i++) { status = GNI_GetDevResInfo(0, i, &dev_res_desc); if (status == GNI_RC_SUCCESS) { written += snprintf(buf + written, size - written, "dev res: %9s, avail: %lu res: %lu held: %lu total: %lu\n", gni_dev_res_to_str(i), dev_res_desc.available, dev_res_desc.reserved, dev_res_desc.held, dev_res_desc.total); } } GNIX_WARN(FI_LOG_FABRIC, "%s", buf); written = 0; written += snprintf(buf + written, size - written, "Job Resources:\n"); for (i = GNI_JOB_RES_FIRST+1; i < GNI_JOB_RES_LAST; i++) { status = GNI_GetJobResInfo(0, ptag, i, &job_res_desc); if (status == GNI_RC_SUCCESS) { written += snprintf(buf + written, size - written, "ptag[%d] job res: %9s used: %lu limit: %lu\n", ptag, gni_job_res_to_str(i), job_res_desc.used, job_res_desc.limit); } } GNIX_WARN(FI_LOG_FABRIC, "%s", buf); }
void fi_ibv_log_ep_conn(struct fi_ibv_xrc_ep *ep, char *desc) { struct sockaddr *addr; char buf[OFI_ADDRSTRLEN]; size_t len = sizeof(buf); if (!fi_log_enabled(&fi_ibv_prov, FI_LOG_INFO, FI_LOG_FABRIC)) return; VERBS_INFO(FI_LOG_FABRIC, "EP %p, %s\n", ep, desc); VERBS_INFO(FI_LOG_FABRIC, "EP %p, CM ID %p, TGT CM ID %p, SRQN %d Peer SRQN %d\n", ep, ep->base_ep.id, ep->tgt_id, ep->srqn, ep->peer_srqn); assert(ep->base_ep.id); addr = rdma_get_local_addr(ep->base_ep.id); if (addr) { ofi_straddr(buf, &len, ep->base_ep.info->addr_format, addr); VERBS_INFO(FI_LOG_FABRIC, "EP %p src_addr: %s\n", ep, buf); } addr = rdma_get_peer_addr(ep->base_ep.id); if (addr) { len = sizeof(buf); ofi_straddr(buf, &len, ep->base_ep.info->addr_format, addr); VERBS_INFO(FI_LOG_FABRIC, "EP %p dst_addr: %s\n", ep, buf); } if (ep->base_ep.ibv_qp) { VERBS_INFO(FI_LOG_FABRIC, "EP %p, INI QP Num %d\n", ep, ep->base_ep.ibv_qp->qp_num); VERBS_INFO(FI_LOG_FABRIC, "EP %p, Remote TGT QP Num %d\n", ep, ep->ini_conn->tgt_qpn); } if (ep->tgt_ibv_qp) VERBS_INFO(FI_LOG_FABRIC, "EP %p, TGT QP Num %d\n", ep, ep->tgt_ibv_qp->qp_num); if (ep->conn_setup && ep->conn_setup->rsvd_ini_qpn) VERBS_INFO(FI_LOG_FABRIC, "EP %p, Reserved INI QPN %d\n", ep, ep->conn_setup->rsvd_ini_qpn->qp_num); if (ep->conn_setup && ep->conn_setup->rsvd_tgt_qpn) VERBS_INFO(FI_LOG_FABRIC, "EP %p, Reserved TGT QPN %d\n", ep, ep->conn_setup->rsvd_tgt_qpn->qp_num); }
static int mlx_getinfo ( uint32_t version, const char *node, const char *service, uint64_t flags, const struct fi_info *hints, struct fi_info **info) { int status = -ENODATA; char *configfile_name = NULL; int inject_thresh = -1; mlx_descriptor.config = NULL; status = fi_param_get( &mlx_prov, "mlx_tinject_limit", &inject_thresh); if (!status) inject_thresh = FI_MLX_DEFAULT_INJECT_SIZE; FI_INFO( &mlx_prov, FI_LOG_CORE, "used inlect size = %d \n", inject_thresh); status = fi_param_get( &mlx_prov, "mlx_config", &configfile_name); if (!status) { configfile_name = NULL; } /* NS is disabled by default */ status = fi_param_get( &mlx_prov, "mlx_ns_enable", &mlx_descriptor.use_ns); if (!status) { mlx_descriptor.use_ns = 0; } status = fi_param_get( &mlx_prov, "mlx_ns_port", &mlx_descriptor.ns_port); if (!status) { mlx_descriptor.ns_port = FI_MLX_DEFAULT_NS_PORT; } status = ucp_config_read( NULL, status? NULL: configfile_name, &mlx_descriptor.config); if (status != UCS_OK) { FI_WARN( &mlx_prov, FI_LOG_CORE, "MLX error: invalid config file\n\t%d (%s)\n", status, ucs_status_string(status)); } /*Setup some presets*/ status = ucm_config_modify("MALLOC_HOOKS", "no"); if (status != UCS_OK) { FI_WARN( &mlx_prov, FI_LOG_CORE, "MLX error: failed to switch off UCM memory hooks:\t%d (%s)\n", status, ucs_status_string(status)); } FI_INFO( &mlx_prov, FI_LOG_CORE, "Loaded MLX version %s\n", ucp_get_version_string()); #if ENABLE_DEBUG if (mlx_descriptor.config && fi_log_enabled( &mlx_prov, FI_LOG_INFO, FI_LOG_CORE)) { ucp_config_print( mlx_descriptor.config, stderr, "Used MLX configuration", (1<<4)-1); } #endif *info = NULL; if (node || service) { FI_WARN(&mlx_prov, FI_LOG_CORE, "fi_getinfo with \"node != NULL \" or \"service != NULL \" is temporary not supported\n"); node = service = NULL; flags = 0; } /* Only Pure MLX address and IPv4 are supported */ if (hints->addr_format == FI_ADDR_MLX) { mlx_info.addr_format = FI_ADDR_MLX; } if (hints->addr_format <= FI_SOCKADDR_IN) { mlx_descriptor.use_ns = 1; mlx_info.addr_format = FI_SOCKADDR_IN; } status = util_getinfo( &mlx_util_prov, version, service, node, flags, hints, info); return status; }