Answers:
我建议允许在实际使用的事物中进行常规的Linux内存控制交换,因为它们已经被使用。
我唯一能想到的就是先关闭交换,然后再重新打开
sudo swapoff -a
sudo swapon -a
假设您有足够的备用物理内存来包含交换中的所有内容...
swapoff
在内存不足时杀死它:在这种情况下,交换空间将保持功能:)
您可以将其回音为0到100之间的某个数字进行调整/proc/sys/vm/swappiness
。
该控件用于定义内核将交换内存页面的积极程度。较高的值将增加攻击性,较低的值将减少交换量。值0指示内核在空闲和文件支持的页面数量小于区域中的高水位标记之前不要启动交换。
默认值为60。
sysctl
命令。在这种情况下为sysctl vm.swappiness=x
。
sysctl
为用户交互提供了更高级别的命令。最终结果是相同的,但是通常首选高层接口,以便用户直接进行交互。Kinda喜欢通过短路点火线(较低的水平)而不是仅仅转动钥匙(较高的水平)来启动发动机。
Linux在管理内存方面做得很好,您不应该阻挠它。vm.swappiness设置(前面已经提到)没有问题。您更有可能在其他任何方式上遇到奇怪的问题。
您是从什么时候开始推出的,如此耗费内存?可以调整吗?如果没有它自己的内存限制指令,您也可以查看ulimit。
convert -density 200 file.pdf jpegs/file.jpg
。由于某种原因,它占用了大量内存,但是您是对的:可以对其进行调整。无论如何,任何应用程序都可能出现这种情况:)
convert
有-limit
参数来控制其内存与磁盘使用情况,因此您应该仔细阅读它们。设置-limit memory 512MB
或类似条件会很好。指定一个显式的MAGICK_TEMPORARY_PATH并在执行完命令后清理它也可能会很好。
如果您有所有应用程序可用的内存,则可以将swappiness设置为0,这样就不会发生交换。例如,qemu-kvm是要被VMM换出的大目标,因为qemu-kvm在大多数情况下“似乎”处于空闲状态。我已经看到qemu-kvm内存的多达80%的内存被写入交换。在qemu-kvm中运行的VM几乎没有响应,因为它们的交换用完了(尽管来宾不知道这种情况正在发生)。来宾VM会认为它的性能最出色,尽管实际上它正在拖累。当我一堆VM“醒来”并开始工作时,即使在具有足够快速内存和磁盘的企业级硬件上,它也可能使平均负载达到30级以上。我想这是开箱即用的qemu-kvm设计中的失败。
希望这对某人有帮助。
如果您能够重新引导应该执行的系统(并且可能比尝试任何其他解决方案花费的时间少得多)。
从这个问题复制我的一些答案。
使您知道交换可调参数的工作方式。这是通过告诉VM子系统在映射到进程页表的内存的百分比+ swappiness值大于100时查找要交换的页来实现的。因此,设置为60会使系统开始从进程页表中调出陈旧的页当它使用系统内存的40%以上时。如果要允许程序使用更多内存以牺牲缓存为代价,则需要降低swappiness值。
我相信没有任何真正好的方法来强制Linux将数据从磁盘交换到内存。如果交换/交换是可行的解决方案,但它很脏,很容易使您的系统不稳定。对于交换中的数据多于可用内存的情况,很难想象Linux可以采用哪种有效的策略来决定哪些数据块移入内存以及哪些数据保留在磁盘上。
简介:请让Linux以正常方式逐渐恢复其性能。它的VM子系统的组织方式使其努力并不断地达到某种理想的平衡状态。
如果您想清空它们,可以使用此命令链。
$ free && sync && echo 3 > /proc/sys/vm/drop_caches && free
total used free shared buffers cached
Mem: 1018916 980832 38084 0 46924 355764
-/+ buffers/cache: 578144 440772
Swap: 2064376 128 2064248
total used free shared buffers cached
Mem: 1018916 685008 333908 0 224 108252
-/+ buffers/cache: 576532 442384
Swap: 2064376 128 2064248
您可以通过将上面的数字参数更改为Linux内核发出丢弃缓存项各个方面的信号。
注意:清理内存中不必要的内容(内核2.6.16或更高版本)。始终确保首先运行同步,以将有用的内容刷新到磁盘上!!!
要释放页面缓存:
$ echo 1 > /proc/sys/vm/drop_caches
要释放牙齿和索引节点:
$ echo 2 > /proc/sys/vm/drop_caches
要释放页面缓存,牙科和索引节点:
$ echo 3 > /proc/sys/vm/drop_caches
以上内容旨在作为root用户运行。如果您尝试使用sudo进行操作,则需要将语法稍作更改,如下所示:
$ sudo sh -c 'echo 1 >/proc/sys/vm/drop_caches'
$ sudo sh -c 'echo 2 >/proc/sys/vm/drop_caches'
$ sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'