为什么即使系统有可用存储空间,Linux 在将大文件复制到某个地方时也会写入交换空间?

S.G*_*ami 5 swap

我注意到,如果我将文件复制到某些存储设备(系统的 HDD、SSD 或拇指驱动器),少量数据 (20 - 30 MB) 会写入交换空间 - 并且计数会增加。是的,甚至系统也有可用的 RAM。

写入交换空间会使设备变得非常慢。殴打是明显的情况。

如果我在复制之前关闭交换,文件就会被复制得很好!

这是一个屏幕截图:

在此输入图像描述

我正在将一个大文件复制到/dev/sda2。我有可用的 RAM,但有些数据总是写入交换区。这种行为在我拥有的所有设备以及我有时间使用的设备上都是相同的。

我尝试使用以下命令更改交换性:

sysctl vm.swappiness=n # n for a value from 0..100
Run Code Online (Sandbox Code Playgroud)

尝试将 swappiness 设置为 0,也尝试将 swappiness 设置为 100。行为没有改变。任何系统监视器都显示我有大量可用 RAM。它仍然将数据写入交换区。

LL3*_*LL3 4

一般来说,该行为取决于应用程序,取决于复制应用程序是否向内核提供有关它将如何读取它将复制的文件的正确指示。

\n\n

在你的情况下,我看到你的文件比你的整体内存稍大,所以你的 GUI\xe2\x80\x99s 文件管理器可能请求mmap文件的完整通用,而不是分块复制它。

\n\n

cp尝试从终端窗口复制它。\xc2\xa0命令cp努力向内核提供指示,并将文件复制到它检测到最适合系统的任何块中。您可能仍然会看到缓存填充了内存,但不应触发交换,如果不是由于内存压力激增而只是为了一堆字节的话。

\n