一个关于限制进程内存的点子
Tofloor
poster avatar
司南
deepin
2019-11-15 01:25
Author
输入法总是内存溢出,我不知道怎么办,或许只有研究fcitx的大牛才能修复这个BUG。
但是我们能不能设计一个机制,提前检测到进程异常,然后在它吃光所有资源前就把它kill掉?
下面是我想到的步骤:

1、预先设定进程的最大内存使用量和cpu占用率:
process_name:fcitx
max_cpu_use:0.1
max_memery_use(MB):400

2、终端中“ps”得到进程的PID,“top”命令检测该PID的内存/CPU使用量

3、每3-5秒检测一次,记录最后一次的数据(now)和倒数第二次的数据(last)

4、now和last在处理器占用和内存占用两个维度的斜率是一个参数,
当前的内存和处理器占用是另外两个参数
这三个参数综合起来考虑是否杀死进程
Reply Favorite View the author
All Replies
avatar
justforlxz
deepin
2019-11-15 01:43
#1
cgroups就是做这个限制的,但是并不是kill掉就能解决的… 因为kill了以后可能会导致输入法彻底无法使用
Reply View the author
avatar
司南
deepin
2019-11-15 05:10
#2
kirigaya 发表于 2019-11-14 17:43
cgroups就是做这个限制的,但是并不是kill掉就能解决的… 因为kill了以后可能会导致输入法彻底无法使用 ...

输入法。导致系统卡死的问题,究竟是什么原因呢?是搜狗输入法的问题。还是fcitx的问题。
Reply View the author
avatar
魔法师
deepin
2019-11-15 05:19
#3
wbpy+搜狗2.2[sogou-qimpanel]这狗东西【内存泄漏罪魁祸首】只要定时killall sogou-qimpanel再开就行了。会点py很容易的。当然再写个开机服务(shell)也行
Reply View the author