有没有办法强制单个进程将其大部分/全部内存交换到磁盘(非根)

cst*_*fel 6 linux swap

我们目前正在分析一些工作中的盒子的性能,我们发现我们有很多盒子正在交换,当这种情况开始发生时,事情就会开始爬行,因为我们使用的是旋转磁盘。

我有一个理论,即启动一个进程并进行我们通常必须做的所有初始化实际上可能比等待进程从磁盘加载内存更快。

为了测试这个理论,我想强制一个进程交换到磁盘,我想看看它被换出后需要多长时间才能响应,并将其与新进程启动进行比较,是否有一种强制进程的方法在不修改交换设置或运行盒子内存不足的情况下进行交换?

我在这些机器上没有 root 权限,所以基本上我需要一种非特权的方式来执行/提示内核来执行此操作。

mdp*_*dpc 3

假设这是 Linux,您可能需要将 swappiness 变量设置为其 MAX 值。这基本上告诉内存管理交换当前未使用的所有可能的东西。该值指导 Linux 内核将 RAM 内容复制到交换区的数量(以及频率)

永久设置:

  1. 编辑/etc/sysconfig.conf

  2. 将以下行添加到文件中 vm.swappiness=100

  3. 重启

或者暂时设置直到下次重新启动:

sudo sysctl vm.swappiness=100
Run Code Online (Sandbox Code Playgroud)

这将使您能够测试您对工作组合的假设。