我在Ubuntu12.10的冬眠中遇到了问题,它在12.04的时候运行得很好。当我尝试和hibernate时,它有时会显示hibernate抛出一个错误并将我返回到桌面。我得到的错误是:
PM: Creating hibernation image:
PM: Need to copy 375021 pages
PM: Normal pages needed: 117957 + 1024, available pages: 110205
PM: Not enough free memory
PM: Error -12 creating hibernation image现在我明白了错误的含义,但这是没有意义的。我的交换文件是5GB,很少使用,因为我有4GB的RAM。我知道建议使用比RAM等多1.5倍的交换空间,但是空间似乎不是问题,尽管有错误。
例如,我很少使用超过25%-30%的内存,但仍然存在上述问题。
此外,在一个新的启动和登录,没有程序打开和使用大约12%的RAM,我可以得到上述错误-但在其他时候,我可以冬眠,而使用我的内存25%。
另外,如果我继续尝试hibernate,在抛出上面的错误四五次之后,它最终还是会这样做的。一个成功的冬眠过程如下:
PM: Creating hibernation image:
PM: Need to copy 295511 pages
PM: Normal pages needed: 95534 + 1024, available pages: 132627有什么设置是我需要调整的,还是在冬眠前我需要做些什么来避免这个问题?
我想这个问题可以更好地解释为:是否有办法在休眠前安全地刷新缓冲区和缓存?除了尝试冬眠几次,直到它成功!
提前谢谢。
发布于 2012-11-03 12:50:55
我相信我找到了一个局部解。如果我输入命令:
sudo sync && sudo sysctl -w vm.drop_caches=3
在尝试冬眠之前,我不再有问题,它第一次冬眠,每次。这似乎是空缓存,因此留下足够的内存(RAM)自由创建图像。
我不是程序员,但Ubuntu在冬眠之前不这么做似乎不合逻辑?显然,它所做的类似于多次冬眠尝试,最终的结果是相同的,但很明显,它在尝试hibernate之前并没有这样做。当然,当休眠时,也将所有缓冲区和缓存写到磁盘上也是效率低下的,因为它们也必须在简历上重新加载,即使它们不再需要。当然,如果Ubuntu在休眠之前转储缓存,或者至少有一些部分已经被使用了,那么它会更高效吗?
事实上它没有做到这一点,这可能是建议将RAM的两倍大小用于交换空间的原因;特别是在SSD的时代,如果您有16 HD的RAM,那么交换文件就会丢失32 HD(可能是HD空间的一半)的空间,而这个交换文件只是用来休眠的。
随着内存的不断增加,我想说这是一个需要研究的领域。HD空间可能很便宜,但这并不是因为效率低下而浪费它的借口。
发布于 2012-11-07 00:50:16
我发现,我的问题可能与其他事情有关,而不是缓冲区和缓存已满的事实。
在我上一篇文章发表几天后,我无法在没有磁盘检查的情况下启动,但是磁盘检查挂起,从未完成。我最终成功地手工完成了磁盘检查,它发现了许多错误,然后修复了这些错误。
出于一时兴起,我再次尝试在没有下面命令的情况下冬眠来清空缓存,结果是成功的。我一直第一次冬眠,从没有问题,甚至有时使用30-40%的RAM,不需要首先清除缓存,它总是成功的。
因此,似乎最初的错误与磁盘上的错误有关,而根本没有释放内存,一旦这些错误被修复,问题就消失了。因此,如果收到上述错误,您可能希望在尝试其他任何操作之前检查所有分区的错误。
希望这对某人有用。
https://askubuntu.com/questions/209871
复制相似问题