[−][src]Struct context_allocator::memory_sources::mmap::MemoryMapSource
This NUMA-aware memory source allocates memory-mapped data, optionally using NUMA policy to allocate on a memory node closest to the current thread.
It is slow and uses system calls.
On Android, DragonFlyBSD, FreeBSD, Linux and OpenBSD mappings are omitted from core dumps for data privacy.
When dropped, any memory obtained with this allocator is NOT freed.
However, it is appropriate as a 'backing store' for other memory sources.
Methods
impl MemoryMapSource
[src]
pub fn new(
lock: bool,
prefault: bool,
do_not_reserve_swap_space: bool,
allocate_within_first_32Gb: bool,
huge_page_size: HugePageSize,
numa_settings: Option<NumaSettings>
) -> Self
[src]
lock: bool,
prefault: bool,
do_not_reserve_swap_space: bool,
allocate_within_first_32Gb: bool,
huge_page_size: HugePageSize,
numa_settings: Option<NumaSettings>
) -> Self
Create a new instance.
lock
: Should allocated memory be locked (through a process equivalent tomlock()
), thereby making out-of-memory fail fast. This setting will cause failures ifrlimit()
has not been increased.prefault
: Should allocated memory be pre-faulted, ie all pages loaded and made resident in RAM when allocation occurs? This slows down allocation but make subsequent accesses faster. Only on Android, FreeBSD and Linux.do_not_reserve_swap_space
: Do not reserve swap space for the mapping. Only on Android, Linux and NetBSD.allocate_within_first_32Gb
: Useful for stacks and creating executable code. Only on Android, FreeBSD and Linux on 64-bit CPUs.huge_page_size
: Huge page size to use with Transparent Huge Pages (THP). On operating systems other than Android and Linux, specifying a huge page size has no effect.numa_settings
: NUMA policy settings for optimizing memory allocations to the nearest node. On operating systems other than Android and Linux, specifying a value has no effect.
Trait Implementations
impl MemorySource for MemoryMapSource
[src]
fn obtain(&self, non_zero_size: NonZeroUsize) -> Result<MemoryAddress, AllocErr>
[src]
fn release(&self, non_zero_size: NonZeroUsize, current_memory: MemoryAddress)
[src]
impl Eq for MemoryMapSource
[src]
impl PartialOrd<MemoryMapSource> for MemoryMapSource
[src]
fn partial_cmp(&self, other: &MemoryMapSource) -> Option<Ordering>
[src]
fn lt(&self, other: &MemoryMapSource) -> bool
[src]
fn le(&self, other: &MemoryMapSource) -> bool
[src]
fn gt(&self, other: &MemoryMapSource) -> bool
[src]
fn ge(&self, other: &MemoryMapSource) -> bool
[src]
impl PartialEq<MemoryMapSource> for MemoryMapSource
[src]
fn eq(&self, other: &MemoryMapSource) -> bool
[src]
fn ne(&self, other: &MemoryMapSource) -> bool
[src]
impl Clone for MemoryMapSource
[src]
fn clone(&self) -> MemoryMapSource
[src]
default fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl Default for MemoryMapSource
[src]
impl Ord for MemoryMapSource
[src]
fn cmp(&self, other: &MemoryMapSource) -> Ordering
[src]
default fn max(self, other: Self) -> Self
1.21.0[src]
Compares and returns the maximum of two values. Read more
default fn min(self, other: Self) -> Self
1.21.0[src]
Compares and returns the minimum of two values. Read more
default fn clamp(self, min: Self, max: Self) -> Self
[src]
🔬 This is a nightly-only experimental API. (
clamp
)Restrict a value to a certain interval. Read more
impl Debug for MemoryMapSource
[src]
impl Hash for MemoryMapSource
[src]
Auto Trait Implementations
impl Send for MemoryMapSource
impl Sync for MemoryMapSource
Blanket Implementations
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
impl<T> From for T
[src]
impl<T, U> Into for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T> Borrow for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,