/* * 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; }
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, ¶m)) *param_default = param; out: free(param_help); return ret; }
static int rxm_init_info(void) { size_t param; if (!fi_param_get_size_t(&rxm_prov, "buffer_size", ¶m)) { 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; }