使用交换空间而不是 RAM 会大大降低PC 的速度。
那么为什么当我有足够多的可用 RAM 时,我的 Linux 系统 (Arch) 会使用交换区吗?
在下面查看我的 conky 输出:

另外,这可能是我遇到的速度和系统响应问题的原因吗?
的输出free -m:
$ free -m
total used free shared buffers cached
Mem: 1257 1004 252 0 51 778
-/+ buffers/cache: 174 1082
Swap: 502 144 357
Run Code Online (Sandbox Code Playgroud) 我刚刚在 Linux 上阅读了一些关于 swappiness 的东西。我不明白为什么默认设置为 60。
根据我的说法,这个参数应该设置为 10 以减少交换。交换在我的硬盘上,所以它比我的记忆慢得多。
他们为什么要这样配置内核?
不知何故,我碰巧换掉了 14 GB 的内存。杀了罪魁祸首后,我又有了大量的空闲内存,所以我想我可以再把重要的数据带进来。因此,使用了 32 GB 中的 5 GB 和使用了 14 GB 的交换空间,我跑了swapoff -a…… 4 小时后,大约一半的工作完成了。
这意味着少于 1 MB/s,而我可以轻松复制 200 MB/s。我的交换是加密的,但所有普通分区也是如此,使用aes-ni它不会导致明显的 CPU 负载(填充交换空间只需要几分钟)。我看到优化没有特殊原因swapoff,但是我想知道它怎么会变慢?
只需添加更多数据:我的主内存是 32 GB,我在 4 个硬盘中的每一个上都有 32 GB 的交换空间(当然是矫枉过正,但谁在乎?)。整个交换空间可以在不到 5 分钟的时间内被(解密和)读取:
time -p sudo sh -c 'for i in /dev/mapper/cryptswap?; do md5sum $i & done; wait'
014a2b7ef300e11094134785e1d882af /dev/mapper/cryptswap1
a6d8ef09203c1d8d459109ff93b6627c /dev/mapper/cryptswap4
05aff81f8d276ddf07cf26619726a405 /dev/mapper/cryptswap3
e7f606449327b9a016e88d46049c0c9a /dev/mapper/cryptswap2
real 264.27
Run Code Online (Sandbox Code Playgroud)
读取分区的一部分不会比读取全部更慢。然而,阅读大约 1/10 的时间需要大约 100 倍的时间。
我观察到,在swapoffCPU 大部分时间都处于空闲状态(可能是一个内核的 10%),磁盘也是如此(由 LED“测量”)。我还看到交换空间一个接一个关闭。
据我了解,Linux 中交换分区的目的是从 RAM 中释放一些“不经常访问”的信息,并将其移动到硬盘驱动器上的特定分区(代价是读取或写入速度变慢)到),本质上允许主动应用程序更多的“高速内存”。
这非常适合当您使用的是 RAM 量较小的机器并且不想在用完时遇到问题时。但是,如果您的系统有16 GB或32 GB的 RAM,并且假设您没有为 StackExchange 运行 MySQL 数据库或在 Linux 中编辑 1080p 全长电影,是否应该使用交换分区?
我买了一个 SSD,我打算用全新的 Linux 安装来设置我的桌面系统。
众所周知,SSD 速度很快,但它们有一个缺点:写入次数(每个块?)是有限的。
所以我在考虑哪些数据应该放在 SSD 上,哪些应该放在 HDD 驱动器上。一般我认为经常变化的数据应该放在HDD上,不经常变化的数据可以放在SSD上。
现在我用类似的场景阅读了这个问题。答案中写道:“SSD 驱动器非常适合交换空间......”
为什么 SSD 非常适合交换空间?好的,我认为提高系统性能的潜力很大,但不会频繁交换数据更改,因此会在 SSD 上进行多次写入,从而导致 SSD 寿命较短?
/var 目录呢?它的内容不是也经常变化吗?把它放在硬盘上不是一个好主意吗?
是否还有其他不应位于 SSD 上的数据?
我在我的 SSD 驱动器上安装了带有默认分区的 Debian Jessie。我当前的磁盘分区如下所示:
由于我有 16GB 的 RAM,我假设我不需要swap。但是由于我有其他磁盘驱动器,因此我可能会在其他驱动器之一上创建交换文件。
你能告诉我我应该采取什么步骤来正确和永久地删除交换分区以使其不占用磁盘空间吗?我希望删除交换分区,因为我目前只有 128GB SSD。
这是我每次尝试并重新启动的内容;这些步骤中的每一个都不是永久性的,或者没有做任何事情:
使用该swapoff实用程序:
swapoff --all
Run Code Online (Sandbox Code Playgroud)使用GParted实用程序:
右键单击交换分区并单击交换。
/etc/fstab
Run Code Online (Sandbox Code Playgroud)/etc/initramfs-tools/conf.d/resume
Run Code Online (Sandbox Code Playgroud)最后运行这些命令(按此顺序和相反顺序):
update-grub
update-initramfs -u
Run Code Online (Sandbox Code Playgroud)所以我正在按照教程安装 OTRS,它是开源票务请求系统。所以为了安装,它需要: 4GB 的 Swap 空间。这是我使用的命令:
[root@ip-10-0-7-41 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 50G 14G 37G 27% /
devtmpfs 478M 0 478M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 13M 484M 3% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
tmpfs 100M 0 100M 0% /run/user/1000
[root@ip-10-0-7-41 ~]# fallocate -l 4G /myswap
[root@ip-10-0-7-41 ~]# ls -lh /myswap
-rw-r--r--. 1 root root 4.0G Jul 8 08:44 /myswap
[root@ip-10-0-7-41 ~]# chmod 600 /myswap
[root@ip-10-0-7-41 ~]# …Run Code Online (Sandbox Code Playgroud) 为了节省磁盘空间,我想让两个操作系统安装共享一个交换分区(双引导)。这是一个好主意吗?
我有一台带有8 GB RAM 和 16 GB 交换的 Debian (Buster) 笔记本电脑。我正在运行一个很长的运行任务。这意味着我的笔记本电脑在过去六天里一直处于运转状态。
这样做时,我需要定期将笔记本电脑用作笔记本电脑。这应该不是问题;长时间运行的任务受 I/O 限制,处理 USB 硬盘上的内容,并且不占用太多 RAM (<200 MB) 或 CPU (<4%)。
问题是当我在几个小时后回到我的笔记本电脑时,它会非常缓慢,可能需要 30 分钟才能恢复正常。这太糟糕了,以至于崩溃监视器将它们各自的应用程序标记为已冻结(尤其是浏览器窗口),并且事情开始错误地崩溃。
查看系统监视器,大约一半使用的 2.5 GB 被转移到交换中。我已经通过删除交换空间 ( swapoff /dev/sda8) 来确认这是问题所在。如果我在没有交换空间的情况下离开它,即使在 24 小时后它也几乎立即恢复生机。使用交换,前五分钟实际上是一块砖,只剩下六个小时。我已经确认即使我不在时内存使用量也不会超过3 GB。
我尝试将swappiness(另见:维基百科)减少到10和的值0,但问题仍然存在。似乎在一天不活动后,内核认为不再需要整个 GUI 并将其从 RAM 中擦除(将其交换到磁盘)。长时间运行的任务是读取庞大的文件树并读取每个文件。因此,内核可能会误以为缓存会有所帮助。但是在一次扫描具有约 10 亿个文件名的 2 TB USB 硬盘时,额外的 GB RAM 不会对性能有太大帮助。这是一款价格低廉的笔记本电脑,硬盘速度很慢。它根本无法足够快地将数据加载回 RAM。
如何告诉 Linux 仅在紧急情况下使用交换空间?我不想在没有交换的情况下运行。如果发生意外情况,并且操作系统突然需要额外的几 GB,那么我不希望任务被杀死,而是希望开始使用交换。但目前,如果我启用交换,我的笔记本电脑就无法在需要时使用。
“紧急情况”的确切定义可能是一个有争议的问题。但要澄清我的意思:紧急情况是系统除了交换或终止进程之外别无选择。
什么是紧急情况?-你真的要问吗?...我希望你永远不会发现自己在燃烧的建筑物中!
我不可能在这个问题中定义可能构成紧急情况的所有内容。但是,例如,紧急情况可能是当内核被如此推入内存以至于它开始使用OOM Killer杀死进程时。当内核认为它可以通过使用交换来提高性能时,不是紧急情况。
最终编辑: 我已经接受了一个答案,该答案正是我在操作系统级别所要求的。未来的读者还应该注意提供应用程序级解决方案的答案。
swap ×10
linux ×3
memory ×2
partition ×2
centos ×1
debian ×1
dual-boot ×1
filesystems ×1
flash-memory ×1
hard-disk ×1
kernel ×1
performance ×1
ssd ×1