Example #1
0
/*
 * Initialize all available memory monitors
 */
void ofi_monitor_init(void)
{
	fastlock_init(&uffd_monitor->lock);
	dlist_init(&uffd_monitor->list);

	fi_param_define(NULL, "mr_cache_max_size", FI_PARAM_SIZE_T,
			"Defines the total number of bytes for all memory"
			" regions that may be tracked by the MR cache."
			" Setting this will reduce the amount of memory"
			" not actively in use that may be registered."
			" (default: 0 no limit is enforced)");
	fi_param_define(NULL, "mr_cache_max_count", FI_PARAM_SIZE_T,
			"Defines the total number of memory regions that"
			" may be store in the cache.  Setting this will"
			" reduce the number of registered regions, regardless"
			" of their size, stored in the cache.  Setting this"
			" to zero will disable MR caching.  (default: 1024)");
	fi_param_define(NULL, "mr_cache_merge_regions", FI_PARAM_BOOL,
			"If set to true, overlapping or adjacent memory"
			" regions will be combined into a single, larger"
			" region.  Merging regions can reduce the cache"
			" memory footprint, but can negatively impact"
			" performance in some situations.  (default: false)");

	fi_param_get_size_t(NULL, "mr_cache_max_size", &cache_params.max_size);
	fi_param_get_size_t(NULL, "mr_cache_max_count", &cache_params.max_cnt);
	fi_param_get_bool(NULL, "mr_cache_merge_regions",
			  &cache_params.merge_regions);

	if (!cache_params.max_size)
		cache_params.max_size = SIZE_MAX;
}
Example #2
0
static int efa_get_param_size_t(char *param_name, char *param_str,
				size_t *param_default)
{
	size_t len, ret_len, param;
	int ret = FI_SUCCESS;
	char *param_help;

	len = strlen(param_str) + 50;
	param_help = calloc(1, len);
	if (!param_help)
		return -FI_ENOMEM;

	ret_len = snprintf(param_help, len, "%s", param_str);
	if (ret_len >= len) {
		EFA_WARN(FI_LOG_EP_DATA,
			 "param_help string size insufficient!\n");
		assert(0);
		ret = -FI_ETOOSMALL;
		goto out;
	}

	fi_param_define(&efa_prov, param_name, FI_PARAM_INT, param_help);

	if (!fi_param_get_size_t(&efa_prov, param_name, &param))
		*param_default = param;

out:
	free(param_help);
	return ret;
}
Example #3
0
static int rxm_init_info(void)
{
	size_t param;

	if (!fi_param_get_size_t(&rxm_prov, "buffer_size", &param)) {
		if (param > sizeof(struct rxm_pkt)) {
			rxm_info.tx_attr->inject_size = param;
		} else {
			FI_WARN(&rxm_prov, FI_LOG_CORE,
				"Requested buffer size too small\n");
			return -FI_EINVAL;
		}
	} else {
		rxm_info.tx_attr->inject_size = RXM_BUF_SIZE;
	}
	rxm_info.tx_attr->inject_size -= sizeof(struct rxm_pkt);
	rxm_util_prov.info = &rxm_info;
	return 0;
}