Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
0
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;
}