首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有办法强制单个进程将其大部分/全部内存交换到磁盘(非根进程)?

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

Server Fault用户
提问于 2018-11-02 20:35:54
回答 2查看 4.5K关注 0票数 4

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

我有一种理论认为,启动一个进程并完成我们通常需要做的所有初始化工作,可能比等待进程将其内存从磁盘加载更快。

为了检验这个理论,我想要强制一个进程交换到磁盘,并且我想知道在交换之后响应需要多长时间,并将它与一个新的进程启动进行比较,是否有一种方法可以强迫进程进行交换,而不修改替换设置或在内存中运行方框?

我没有根目录在这些框上,所以基本上我需要一种对内核执行/提示的方法来完成这个任务。

EN

回答 2

Server Fault用户

发布于 2018-11-02 22:42:37

假设这是Linux,您可能需要将swappiness变量设置为它的MAX值。这基本上告诉内存管理部门将当前未使用的所有可能的内容替换掉。此值将指导您的Linux内核将多少(以及多久)复制RAM内容以进行交换。

永久设置:

代码语言:javascript
运行
复制
 1.  Edit `/etc/sysconfig.conf`

 2.  add the following line to the file
      `vm.swappiness=100`

 3.  Reboot

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

代码语言:javascript
运行
复制
 1. Enter the command
    `sudo sysctl vm.swappiness=100`

这将允许您测试您的假设,您的工作组合。

票数 3
EN

Server Fault用户

发布于 2018-11-05 12:50:02

收集实际应用程序的响应时间数据,不管您做什么。记录用户响应时间、进程启动时间以及任何其他性能指标对您都很重要。

在Linux上,cgroup可以有一个内存限制,超过该组页面中进程的内存限制。systemd服务可以使用MemoryLimit指令设置这样的限制,请参阅手册页或拉赫尔资源管理指南。请记住,systemd单元可以是每个用户,不需要root特权。

不要花很多时间来模拟低内存状况,它不太可能像生产的工作负载那样执行。如果您可以将应用程序更改为延迟启动或加载过程,请在测试中这样做,然后在生产中执行。并测量结果。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/938431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档