有时内核似乎有意将 firefox 保持在交换中,即使有足够的物理内存可用并且我正在使用 firefox:
robert@rm:~> free -m
total used free shared buffers cached
Mem: 3009 1904 1104 0 109 679
-/+ buffers/cache: 1116 1892
Swap: 4102 885 3216
Run Code Online (Sandbox Code Playgroud)
是否有命令指示内核删除交换空间并使用可用的空闲内存?
更新:虽然在短期内我使用了 swapon/swapoff,但我现在设置
sudo sysctl vm.swappiness=30
Run Code Online (Sandbox Code Playgroud)
正如另一个回复中所建议的那样,并获得非常好的结果。
当我将外部 USB 2TB 硬盘驱动器插入我的 Windows 7 盒子时,我的 RAM 使用量攀升至所有 4 Gig(但在任务管理器中它显示所有进程都很小)并且硬盘驱动器像疯了一样搅动。我的 CPU 只使用了大约 20%
我能想到的就是有一个病毒扫描程序或一个疯狂运行的索引器。我试图杀死所有病毒扫描程序(AVG 和 Windows Security Essentials),但它仍然继续运行。
我的电脑完全无法使用,因为一切都在不断交换。
我已经尝试让它开着 2 天,但它仍然没有完成它正在做的任何事情。
有任何想法吗?
为什么建议交换分区大小是 RAM 大小的两倍?
具体来说,为什么我需要将存储在 RAM 中的数据存储两次?
我的机器上安装了 Ubuntu 10.04 和 Windows 7,由于某些原因,我需要再安装一个 Ubuntu 副本。新 Ubuntu 是否可能使用与前一个相同的交换空间?
介绍
让我们想象一些速度不是一个因素的环境。就我而言,我将一台非常旧的计算机用作“服务器”,其中包含很多愚蠢的东西(个人实验室)。更重要的是资源的数量,而不是它们的速度。
我们可以在哪些硬件上使用它
我的“服务器”是 4 GB RAM DDR2 800Mhz 和 Intel Pentium CPU x86_64(有两个内核)。所以主板不支持超过 4 GB 的 RAM。
控制“交换”
它是一个 Linux“服务器”,上面安装了 docker,因此每个应用程序都运行到具有 RAM 和 Swap 限制的容器中。
还有一个神奇的变量:
vm.swappiness
Run Code Online (Sandbox Code Playgroud)
swappiness 参数配置您的系统将数据从 RAM 交换到交换空间的频率。
题?
HDD 和 SSD 有生命周期。如果我们将它用于“交换”,则它是一种高读/写操作。当然,它不是生产“服务器”,但也不是台式机/个人电脑。无论如何,打破硬件对每个人来说都是一个糟糕的情况,特别是当它已经老了并且他们生命中的大部分时间都结束了。
那么哪个更好呢?HDD 真的会很慢而且没用,或者 SSD 的寿命会比 HDD 短吗?
在我中,Vagrantfile
我定义了以下提供者:
摘自 Vagrantfile:
Run Code Online (Sandbox Code Playgroud)config.vm.provider :virtualbox do |vb| vb.gui = false vb.customize ["modifyvm", :id, "--memory", "4096"] end
当我free -m
在创建的 VM 中运行时,我看到以下报告:
total used free shared buffers cached
Mem: 3953 337 3615 0 18 119
-/+ buffers/cache: 199 3753
Swap: 0 0 0
Run Code Online (Sandbox Code Playgroud)
是否可以在构建和配置 VM 时分配 swappiness?
我已经尝试设置vm.swappiness
中/etc/sysctl.conf
并重新启动虚拟机,但我没有看到添加交换空间的VM的任何影响。
为什么需要交换空间?我宁愿根本不处理交换空间并在内存中运行所有内容。但是,对于某些应用程序(例如 PHP 的 Composer 项目),在某些情况下会因使用大量内存而臭名昭著。如果没有交换空间,我必须非常自由地分配给 VM 的内存量,如果我有交换空间——尽管它可能效率不高——理论上我会遇到更少的问题。
我的笔记本电脑有足够的内存和 SSD。为了不磨损 SSD,我不想一直使用交换。如果一个进程使用了太多的 RAM 以至于它不得不开始使用交换,那么它显然是行为不端,应该被内核杀死。但我也希望能够休眠或混合睡眠我的笔记本电脑。目前似乎很难让这样的设置工作。以下是一些注意事项:
swappiness
如果应用程序请求太多内存,即使设置为 0 也将允许使用交换。似乎没有办法启用交换但阻止内核将其用作交换空间(从而将其效用减少到休眠图像的空间)systemctl hibernate
错误输出之类的命令Failed to hibernate system via logind: Sleep verb not supported
systemctl hibernate
是不够的)我现在正在寻找实现这一目标的正确方法。一种方法可能是通常禁用我的交换分区,然后swapon
通过 systemd 在正确的点(以及swapoff
在系统唤醒后)。但我不知道如何实现这一目标。
另一种方法是使用交换文件,但与使用交换分区相比,这似乎增加了额外的复杂性。尤其是因为我正在使用全盘加密,而且uswsusp
似乎只是我现有交换分区已有的另一层。但也许我遗漏了一些东西,为此目的使用交换文件确实总体上更容易。
有什么方法可以“重置”或“清除”系统管理的窗口分页文件大小?就我而言,我安装了 16 场内存,并且所有分页文件设置都设置为自动。在某个时间点发生了内存泄漏,我的 ~2 gb 页面文件的大小增加到 16 GB。如何强制 Windows 将其大小重置为原始大小?我试过完全禁用它并重新启用,将自定义大小设置为 2 GB,然后将其设置回自动 - 在返回自动时它总是变回 16 GB。
当我在程序之间切换时,我的工作计算机(Windows 7 64 位)花费大量时间交换内存。这让我感到惊讶,因为我有 4 GB 的 RAM,而且我使用的程序并不是特别需要 RAM(Outlook、Emacs、p4win、Firefox、各种构建工具)。我下载了RAMMap,它显示了“元文件”使用的超过 1 GB 的内存。
图元文件是系统缓存的一部分,由 NTFS 元数据组成。NTFS 元数据包括 MFT 以及其他各种 NTFS 元数据文件。... 在 MFT 中,每个文件属性记录需要 1k,并且每个文件至少有一个属性记录。将其他 NTFS 元数据文件添加到其中,您就会明白为什么元文件类别在具有大量文件的服务器上会变得非常大。
所以我理解“元文件”数据是什么......我处理包含数十万个文件的大型构建(没有那么大,但它们加起来有几个千兆字节)。我的问题是如何减少“元文件”使用的内存量?我没有立即使用所有这些文件,那么为什么 Windows 需要将信息保存在 RAM 中?每次同步新版本时都重新启动我的机器真的很烦人。
我正在使用 ubuntu 10.10。我的 RAM 是 3GB,交换内存是 2GB。使用我的系统几个小时后,我所有的交换内存都用完了。有什么办法可以清理交换内存吗?
swap ×10
linux ×5
memory ×5
ssd ×2
ubuntu ×2
windows-7 ×2
hard-drive ×1
hibernate ×1
pagefile ×1
performance ×1
systemd ×1
ubuntu-10.04 ×1
unix ×1
vagrant ×1
virtualbox ×1
windows ×1