我们目前正在分析我们工作中的一些盒子的性能,我们发现我们有很多交换的盒子,当这种情况开始发生的时候,东西就开始爬行,因为我们使用的是尖尖的磁盘。
我有一种理论认为,启动一个进程并完成我们通常需要做的所有初始化工作,可能比等待进程将其内存从磁盘加载更快。
为了检验这个理论,我想要强制一个进程交换到磁盘,并且我想知道在交换之后响应需要多长时间,并将它与一个新的进程启动进行比较,是否有一种方法可以强迫进程进行交换,而不修改替换设置或在内存中运行方框?
我没有根目录在这些框上,所以基本上我需要一种对内核执行/提示的方法来完成这个任务。
发布于 2018-11-02 14:42:37
假设这是Linux,您可能需要将swappiness变量设置为它的MAX值。这基本上告诉内存管理部门将当前未使用的所有可能的内容替换掉。此值将指导您的Linux内核将多少(以及多久)复制RAM内容以进行交换。
永久设置:
1. Edit `/etc/sysconfig.conf`
2. add the following line to the file
`vm.swappiness=100`
3. Reboot
或者暂时设置到下一次重新启动:
1. Enter the command
`sudo sysctl vm.swappiness=100`
这将允许您测试您的假设,您的工作组合。
发布于 2018-11-05 04:50:02
收集实际应用程序的响应时间数据,不管您做什么。记录用户响应时间、进程启动时间以及任何其他性能指标对您都很重要。
在Linux上,cgroup可以有一个内存限制,超过该组页面中进程的内存限制。systemd服务可以使用MemoryLimit
指令设置这样的限制,请参阅手册页或拉赫尔资源管理指南。请记住,systemd单元可以是每个用户,不需要root特权。
不要花很多时间来模拟低内存状况,它不太可能像生产的工作负载那样执行。如果您可以将应用程序更改为延迟启动或加载过程,请在测试中这样做,然后在生产中执行。并测量结果。
https://serverfault.com/questions/938431
复制相似问题