Replies: 3 comments 14 replies
-
I would start by defining how ODP is being used. I believe the verbs provider enables it through an environment variable because having it enabled gives lower performance than some alternatives. For buffers that are only accessible locally (e.g. send and receive buffers), ODP could eliminate any MR cache. The FI_MR_LOCAL bit could be cleared for this use case, with memory registration hidden from the app completely. If we consider remotely accessed buffers (e.g. remote RMA read/write), I agree ODP aligns with FI_MR_ALLOCATED. This also ties into the MR cache and invalidating entries. I would like to leave it up to the provider to determine whether enabling ODP provides better performance, versus using a MR cache. I don't think we get away from having some sort of environment variable to specify whether using ODP and/or the MR cache is acceptable from a security standpoint. |
Beta Was this translation helpful? Give feedback.
-
ODP presentation for OFIWG.pdf |
Beta Was this translation helpful? Give feedback.
-
I have opened up #10062 for this. |
Beta Was this translation helpful? Give feedback.
-
While the FI_MR_ALLOCATED mode bit indicates that the provider requires that registered memory regions must be backed by physical memory pages at the time the registration call is made, it is not clear to me in libfabric man pages how ODP optional usage should be indicated for a provider that supports it. For instance, if a provider performs RDMA and can be configured to support ODP, how should this be selected by the application in a libfabric common way. My assumption is that the application and provider can let the presence of the FI_MR_ALLOCATED mr_mode bit select whether ODP is desired or not. To support this case the provider may export multiple fi_info per domain, one with FI_MR_ALLOCATED MR mode bit set and one without it set. The application would select the correct fi_info based on their mr_mode hints they provide.
It appears the existing Verbs provider code requires that an undocumented environment variable "FI_VERBS_USE_ODP" be set to enable ODP, that the verbs extended query capabilities API is supported, that the verbs hardware supports ODP, and that the registration is for system memory. If this is true it will pass the appropriate attribute to the rdma-core. Independent of these settings it still requires FI_MR_ALLOCATED mr_mode bit.
@shefty - Thoughts on the correct usage and/or the best way an application can select that it wants to use ODP with an RDMA provider that supports ODP?
Beta Was this translation helpful? Give feedback.
All reactions