plt*_*rdy 7 memory-usage ram 16.04
我在 Ubuntu 上看到了很多与内存相关的问题,老实说,我真的无法理解如何仍然可以解决这些问题。
我有 8GB 内存。我已经尝试使用/不使用交换而没有太大区别。
问题是我经常(每天最多一次)不得不硬重启我的笔记本电脑,因为它完全被冻结了(等待无济于事)。这很可能与我的网络浏览器的 RAM 使用有关。除此之外,笔记本电脑上没有运行高要求的进程。
为了实验/复制:
我的观察是:
MemoryError.我不明白:
我知道交换需要 CPU,所以它可能会挂起系统一段时间。这就是我禁用它的原因,所以我认为内核会迅速决定杀死一个进程。
我无法理解最近使用 8GB RAM 的操作系统如何使用这种基本用法(使用浏览器)。我是否需要调整我的系统以获得可靠的系统?
感谢您提供任何有帮助的建议/解释/技巧。
小智 5
我已经使用内存/CPU 观察程序脚本解决了类似的问题,并让它杀死它看到的具有超过 x ram 或 y 内存且持续时间超过 t 秒的任何进程。这并不能解决为操作系统保留 CPU/Mem 的问题,但它是一种解决方法,直到您找到更好的答案(当您找到更好的答案时,请与我分享,因为我来这里寻找同样的东西)
#!/bin/bash
# Kill POS if we're doing stupid shit.
HOG_COUNTER=0
while true; do
# This is pulling CPU, change the awk column from 9 to something
# that you want to check against.
HOG=$(top -b -n 1 | grep pos2 | awk '$9 > 90 {print $1}')
# If the hog variable is not empty, add some counter info - we don't
# want to catch periodic spikes, we want to catch consistent offenders.
if [ ! -z "$HOG" ]; then
counter_time=$(date)
HOG_COUNTER=$(expr ${HOG_COUNTER} + 1)
echo "$counter_time - Found a hog: $HOG - ${HOG_COUNTER} counters." >> high_mem_kill_log
else
HOG_COUNTER=0
fi
# If we have more than 2 counters (3 or more) then we kill the process
# that's doing it.
if [ $HOG_COUNTER -gt 2 ]; then
kill_time=$(date)
echo "$kill_time - Found a hog: $HOG. $HOG_COUNTER counters. Killing $HOG." >> high_mem_kill_log
kill $HOG
fi
sleep 30s
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3152 次 |
| 最近记录: |