我有一台带有 4GB 内存的核心 2 笔记本电脑。我用这台机器浏览、上网和简单的编程。(我偶尔使用这台机器来托管一个小型的 ftp 和 web 服务器。)
拥有交换分区有什么好处吗?我的理解是,有了这么多内存,我的平庸使用就不需要交换了。其实内核会强制使用我的ram,这样会更快。
这样对吗?
我的服务器有 8Gigs 的 RAM 和 8Gigs 配置用于交换文件。我正在运行内存密集型应用程序。这些应用程序具有峰值负载,在此期间我们发现交换使用量增加。使用了大约 1 GIG 的交换。
我有另一台带有 4G 内存和 8 Gb 交换的服务器以及类似的内存密集型应用程序在其上运行。但是在这里交换使用非常可以忽略不计。大约 100 MB。
我想知道Linux 将 RAM 中的进程内存交换到交换文件的确切条件或粗略公式是什么。我知道它基于交换因子。它还有什么依据?交换文件大小?任何指向解释这一点的 Linux 内核内部文档/源代码的指针都会很棒。
我确定这是一个非常基本的问题,但我只是想了解运行基于 Rails 的站点的 Ubuntu Hardy 服务器发生了什么。似乎我有可用内存,但系统报告它仍在交换内存(除非我读错了?)。
这是free -m输出
total used free shared buffers cached
Mem: 1024 905 118 0 33 409
-/+ buffers/cache: 462 561
Swap: 2047 95 1952
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我解释一些可能的原因,即它始终保持 95MB 的交换空间(它永远不会更少)?我只是在寻找一些关于我可以检查的内容的线索,这些线索会向我确切地解释 Linux 中如何利用内存。
很多人说,如果你有 2GB 的 RAM,你应该配置一个 2GB 或更多的交换。FWIK 休眠可能需要相同大小的交换来在断电时保持内存,但一般来说,如果你有一个大内存,你甚至根本不需要交换,不是吗?
对于 Linux 用户,当你在没有交换的情况下安装 Linux 时,安装程序会警告你没有交换安装。不,我只是不需要它,因为我的 RAM 足够大,对吗?
当我搜索 RAID1 安装时,似乎管理员倾向于将他们的交换分区放在 RAID1 下。
对我来说,有两个磁盘更直观,每个磁盘都有一个大分区供 RAID1 和系统分区使用,还有一个较小的分区用于交换,位于 RAID 阵列之外。
如果在系统运行时丢失了一个磁盘和一半的交换空间,最坏的情况是什么?
在镜像交换卷与在 RAID 之外拥有两个单独的交换卷时,我是否应该期望看到性能提高或降低?
如果交换应该被镜像,给交换提供自己的 RAID1 阵列更有意义,还是使用 LVM 对一个大的 RAID1 阵列进行分区更有意义?
(注/4。我不确定 mdX 是否可以在没有 LVM 的情况下进行分区,但是 debian 安装程序让我相信它不能)
我在我的 Linux (2.6.37) 安装之一上遇到了 OOM 杀手的问题。计算机有 4GB 的内存,我有时会充分利用它。在这些情况下,我希望 OOM 处理程序通过杀死一两个进程来完成它的工作。而不是这样做,或者可能在尝试这样做时,系统会锁定,像没有明天一样进行磁盘 I/O。事情是这样的:我没有启用任何交换。出于某种原因,我的无交换系统仍然被大量磁盘 I/O 锁定,即使适当的行动方案是杀死一两个进程。想法?
整个问题让我怀疑 Linux 是否需要以某种我不知道的方式交换。对是否是这种情况以及原因的解释将不胜感激。我在概念级别(即虚拟内存、分页、过量使用)上熟悉交换的想法,但我想知道是否有任何我可能遗漏的实现细节。
在具有 32 演出内存的机器上运行 MySQL。Swap 已满 99%,还有大约 200 MB 的可用 RAM。MySQL当然是罪魁祸首。当 RAM 和交换区都被完全填满时会发生什么?谢谢!
在 Ubuntu 14.04 上,当内存和交换使用率达到 100% 时,必须增加交换文件。
在实时生产服务器上,是否可以在对服务造成最小中断的情况下增加交换?
的输出free -h:
total used free shared buffers cached
Mem: 3.9G 3.4G 435M 24K 1.2M 7.5M
-/+ buffers/cache: 3.4G 443M
Swap: 8.0G 6.6G 1.4G
Run Code Online (Sandbox Code Playgroud) 如何使用盐堆栈创建和启用永久的 1GB 交换文件,该文件将在重新启动后起作用?salt.states.mount.swap不允许定义交换大小。此外,我需要定义swappiness。目前我这样做echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf
我们目前正在分析一些工作中的盒子的性能,我们发现我们有很多盒子正在交换,当这种情况开始发生时,事情就会开始爬行,因为我们使用的是旋转磁盘。
我有一个理论,即启动一个进程并进行我们通常必须做的所有初始化实际上可能比等待进程从磁盘加载内存更快。
为了测试这个理论,我想强制一个进程交换到磁盘,我想看看它被换出后需要多长时间才能响应,并将其与新进程启动进行比较,是否有一种强制进程的方法在不修改交换设置或运行盒子内存不足的情况下进行交换?
我在这些机器上没有 root 权限,所以基本上我需要一种非特权的方式来执行/提示内核来执行此操作。