2个版本
使用旧的Rust 2015
0.1.2 | 2017年10月12日 |
---|---|
0.1.1 | 2017年10月10日 |
#713 in 操作系统
每月269次下载
用于 8 个crate(3 个直接使用)
25KB
465 行
简介
memadvise
是一个Rust库,可以向操作系统提供有关内存访问模式的提示。例如,如果用户使用 memadvise::advise()
并传入 Advice::Sequential
,则内核可能会从传入的内存块开始将内存页面移入RAM(如果它们在磁盘上)。
示例
extern crate memadvise;
extern crate page_size;
fn main() {
// Allocate block of memory in a system specific manner.
// Get portion of memory block (must be aligned to system page size).
let address: *mut () = ...
let length = 320000;
// Tell the OS to start loading this portion into RAM starting at the beginning.
memadvise::advise(address, length, Advice::Sequential).unwrap();
// Do something with this portion of memory
// Tell the OS we do not need this portion right now.
// That way, the OS can safely swap it out to disk.
memadvise::advise(address, length, Advice::DontNeed).unwrap();
// Do some other stuff.
// Be sure to free block of memory (system specific) at the end.
}
建议
memadvise
提供了五种不同的 '提示',用于告知系统程序将如何使用特定范围的内存。
-
Normal
- 没有特殊用法 -
Random
- 将使用范围,但顺序不确定;操作系统不应过多地读取前 -
WillNeed
- 将使用范围;操作系统应比Random
更多地预读 -
Sequential
- 将按顺序使用范围;操作系统应比WillNeed
更多地预读 -
DontNeed
- 现在不会使用范围;操作系统可以将其交换到磁盘
平台
memadvise
应该在Windows和任何POSIX兼容系统(Linux、Mac OSX等)上运行。
memadvise
在以下系统上持续进行测试
x86_64-unknown-linux-gnu
(Linux)i686-unknown-linux-gnu
x86_64-unknown-linux-musl
(Linux w/ MUSL)i686-unknown-linux-musl
x86_64-apple-darwin
(Mac OSX)i686-apple-darwin
x86_64-pc-windows-msvc
(Windows)i686-pc-windows-msvc
x86_64-pc-windows-gnu
i686-pc-windows-gnu
memadvise
持续交叉编译为
arm-unknown-linux-gnueabihf
aarch64-unknown-linux-gnu
mips-unknown-linux-gnu
aarch64-unknown-linux-musl
i686-linux-android
x86_64-linux-android
arm-linux-androideabi
aarch64-linux-android
i386-apple-ios
x86_64-apple-ios
i686-unknown-freebsd
x86_64-unknown-freebsd
x86_64-unknown-netbsd
asmjs-unknown-emscripten
依赖
~10–265KB