会产生寻道/旋转成本的文件系统操作

会产生寻道/旋转成本的文件系统操作

我正在寻找生成一个工作负载的方法,它将在文件系统上执行操作,从而使磁盘访问具有旋转或寻道成本。

环境详细信息:

分区大小:30 G。文件系统:ext4。

我基本上是想设计一个糟糕的文件访问工作负载(即性能应该很糟糕)。

这是我迄今为止尝试过的:

创建了一个文件,称为“X”(大小 ~400 MB)。该文件是在块组 45 上创建的(实际上它跨越了多个组)。我的分区有 241 个块组。我又创建了一个文件,碰巧它创建在组号 100 中(我们将其称为 D1)。我又创建了一个文件,同样是碰巧,它被分配到组 45(我们将其称为 D2。我在用一些大文本填充 X 之前创建了该文件)。

我尝试运行一个脚本,将数据从 X 复制到 D1 和 D2。我认为这两个副本的性能应该非常不同。但不幸的是事实并非如此。我无法理解为什么会发生这种情况。

我怎样才能让 FS 在性能方面表现不佳?

答案1

最有可能的是,所有这些操作都缓存在 RAM 中,因此您根本不与磁盘交互。读取操作从 RAM 完成,写入操作缓存在 RAM 中,并且您的命令在实际写入磁盘之前完成。

要解决此问题,请使用以下命令启动每个测试:

sync
echo 3 > /proc/sys/vm/drop_caches

最后结束如下:

sync

sync将所有写入刷新到磁盘。该echo命令将丢弃缓存,以便以后的读取将从磁盘读取。这必须以 root 身份运行。

为了让您的生活更轻松,而不是创建文件并尝试将它们放在正确的位置,为什么不直接从磁盘的开发文件中进行读取呢?例如/dev/sda

相关内容