当我的 Linux 系统接近分页时(即,在我的情况下,16GB ram 几乎已满,16GB 交换完全空),如果新进程 X 尝试分配一些内存,系统将完全锁定。也就是说,直到不成比例的页面数量(与 X 的内存分配请求的总大小和速率)被换出。请注意,不仅 gui 变得完全没有响应,而且甚至像 sshd 这样的基本服务也完全被阻止。
这是我用来以更“科学”的方式触发这种行为的两段代码(诚然粗糙)。第一个从命令行获取两个数字 x,y 并继续分配和初始化多个 y 字节块,直到分配的总字节数超过 x 为止。然后无限期地睡觉。这将用于使系统处于寻呼的边缘。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char** argv) {
long int max = -1;
int mb = 0;
long int size = 0;
long int total = 0;
char* buffer;
if(argc > 1)
{
max = atol(argv[1]);
size = atol(argv[2]);
}
printf("Max: %lu bytes\n", max);
while((buffer=malloc(size)) != NULL && total < max) {
memset(buffer, …
Run Code Online (Sandbox Code Playgroud) 有没有办法指示(Linux)内核在系统睡眠/唤醒周期后不要唤醒辅助硬盘?我之所以这么问是因为在我的笔记本电脑中,我有一个 SSD 作为主驱动器,其中包含系统根目录和一个辅助 HDD,我在其中保存备份系统和偶尔访问的文件。由于笔记本电脑通常会经历许多天的日常睡眠/唤醒周期(我的意思是挂起到 RAM,而不是休眠),我想手动将辅助硬盘置于睡眠状态并指示内核在系统睡眠期间保持睡眠状态/ 唤醒周期。