Crates.io | hugepage-rs |
lib.rs | hugepage-rs |
version | 0.1.0 |
source | src |
created_at | 2023-09-05 09:56:20.645702 |
updated_at | 2023-09-05 09:56:20.645702 |
description | wrapped allocator for linux hugepage |
homepage | |
repository | https://github.com/cppcoffee/hugepage-rs |
max_upload_size | |
id | 964117 |
size | 10,512 |
hugepage-rs wrapped allocator for linux hugepage.
Hugepage allocator provides two interfaces for operation, hugepage_rs::alloc and hugepage_rs::dealloc, allocate and free hugepage memory.
The hugepage_rs::alloc() function allocates size bytes and returns a pointer to the allocated memory. The memory is not initialized. returns std::ptr::null_mut() if allocation fails, otherwise returns a pointer.
use hugepage_rs;
use std::alloc::Layout;
use std::{mem, ptr};
fn main() {
let layout = Layout::array::<char>(2048).unwrap();
let dst = hugepage_rs::alloc(layout);
let src = String::from("hello");
let len = src.len();
unsafe {
ptr::copy_nonoverlapping(src.as_ptr(), dst, len);
let s = String::from_raw_parts(dst, len, len);
assert_eq!(s, src);
mem::forget(s);
}
hugepage_rs::dealloc(dst, layout);
}
Simple Box
use hugepage_rs;
fn main() {
let mut v = hugepage_rs::Box::new(5);
*v += 42;
assert_eq!(*v, 47);
}
System need to enable hugepage.
Huge pages part 1 (Introduction)
Huge pages part 3: Administration
Huge pages part 4: benchmarking with huge pages
Huge pages part 5: A deeper look at TLBs and costs