如何强制用户程序阻止 16GB 的物理 RAM
How to force a user program to block 16GB of physical RAM?
我有一台 32GB 的内存机器,我想模拟尝试一个用户进程在 16GB 的机器内运行。一种方法是运行一个小用户进程并阻止 16GB 物理内存,然后进入睡眠状态,然后让这个以前的用户进程在可用系统中运行。
问题是,当我将程序写入malloc 16GB内存时,大部分内存被虚拟内存阻塞,只有大约64MB的物理RAM被阻塞。有没有办法强制阻止物理RAM?
Linux 有一个内核参数来忽略超过一定大小的内存:
max_addr=[KMG] [KNL,BOOT,ia64] All physical memory greater than or
equal to this physical address is ignored.
所以你可以使用它。或者看看mlock
您可以使用
MAP_ANONYMOUS
和MAP_LOCKED
使用mmap
(第一个标志只是为了避免需要文件来创建mmap
,fd
和offset
参数被忽略)。如果size_t
不是 64 位,则需要执行多次mmap
调用才能达到 16 GB。
相关文章:
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- 当需要超过16GB的连续内存时,内存分配失败
- 为什么我的 2d 数组的第二行从 RAM 中获取随机值?
- 使用有限的 RAM 运行 c++ 程序
- 使用指向类的指针时 RAM 使用错误
- 如何找到目标文件 *.o 的 ram rom 使用情况(.bss .text .rodata .data)?
- 为什么这个C++矢量使用这么多 RAM?
- 我在 IDA 或 dbg 或 olly 上看到的内存是否与我在 RAM 上实时加载的内存相同?
- 将图像位发送到嵌入在 FPGA 中的 HDL 生成的 RAM 块
- RAM高效C++属性
- 如何为QImage检测足够的格式(数据类型)以消耗最少的RAM
- 在 QLayout 中创建和删除自定义 QWidgets 时出现 RAM 问题
- 为什么小型和大型加载的神经网络占用相同数量的 RAM?
- STM32F4 - 在运行时将函数从闪存复制到RAM
- 为什么我的C 代码在Linux上运行,而在Windows上不运行,是否有RAM内存的问题
- 直接从 RAM 发送原始数据
- RAM 在 MPI 中的进程之间如何分布?
- 将数据预加载到RAM中进行快速交易
- 如何强制用户程序阻止 16GB 的物理 RAM
- 如何在windows7有限内存的电脑上读取大文件?文件大小为25GB,但RAM容量只有16GB