比较 ext4 和 NTFS 的性能
Comparing performance of ext4 and NTFS
作为 class 项目的一部分,我正在使用 ext4 和 NTFS 的 C(分别在 RHEL 和 Windows 7 上)进行基准测试。
我正在尝试为基准进行实验,但对应该做什么以及我的想法是否有意义感到非常困惑(我的教授缺席了 2 周,class没有助教)。以下是粗体问题的详细信息:
比较顺序读取速度:我计划有几个不同大小的文件,并对这些文件执行顺序读取,每次读取的大小都是一个块(在两个文件系统上都是 4K)。 我应该对不同大小的文件还是对同一个文件执行此操作?此外,以块大小的倍数读取是否有意义? 当然,对于超过第一个缓存的读取将发挥作用。
比较随机读取速度:运行 在不同的文件偏移处读取(再次读取块大小)。 同样,同样的问题。
比较写入速度:禁用两者的写入缓存并以块大小写入。
我主要关心的是我 运行 我测试的文件大小以及每个操作使用的大小 (read/write)。
对于我可以在我的实验中包含的内容以及我的方法所需的任何其他更改的任何其他指示,将不胜感激。
我还计划比较元数据操作,但我正在处理这些操作,如果需要,稍后可能会 post 提问。
作为文件系统的基准,它们将是无效的。变数太多了。假设您将使用相同的硬件,您的变量是...
- 文件系统(ext4 与 NTFS)
- 操作系统(Redhat 对比 Windows)
- C 编译器(gcc/clang 与 Visual C++(我猜))
你在做基准测试 Redhat + 他们的 C 编译器 + ext4 vs Windows + 他们的编译器 + NTFS。 不能从中得出关于文件系统的一般性陈述只能得出关于组合的信息。你可能想指出作业中的这个缺陷以获得加分,或者它可能只会惹恼助教。你来电。
Redhat 确实有 NTFS 实现,因此您可以通过对 Redhat 上的所有内容进行基准测试来消除变量,但随后您将对 Redhat 的 NTFS 实现与 Redhat 的 ext4 实现进行基准测试。这对 Windows 的 NTFS 实现没有影响。
您可以进行额外的测试以消除编译器和操作系统变量,但我不知道它们是什么。
先不说,因为这是作业,你问的是什么场景运行。答案是全部。基准应该反映现实世界的使用情况,在现实世界中,您读取和写入不同大小和不同缓存状态的文件。将它们放在一个大矩阵中 运行 所有组合。
通常,文件大小范围应从块大小一直到 4 gig(模拟视频文件)。增量越多越好。 1024 的幂将是一个好的开始,三个是一条曲线。所以 4K、4M、4G。
您应该在启用和不启用缓存的情况下进行基准测试,以测试文件系统在读取未缓存文件和读取缓存文件时的工作情况。两者都代表了现实世界的场景。
作为 class 项目的一部分,我正在使用 ext4 和 NTFS 的 C(分别在 RHEL 和 Windows 7 上)进行基准测试。
我正在尝试为基准进行实验,但对应该做什么以及我的想法是否有意义感到非常困惑(我的教授缺席了 2 周,class没有助教)。以下是粗体问题的详细信息:
比较顺序读取速度:我计划有几个不同大小的文件,并对这些文件执行顺序读取,每次读取的大小都是一个块(在两个文件系统上都是 4K)。 我应该对不同大小的文件还是对同一个文件执行此操作?此外,以块大小的倍数读取是否有意义? 当然,对于超过第一个缓存的读取将发挥作用。
比较随机读取速度:运行 在不同的文件偏移处读取(再次读取块大小)。 同样,同样的问题。
比较写入速度:禁用两者的写入缓存并以块大小写入。
我主要关心的是我 运行 我测试的文件大小以及每个操作使用的大小 (read/write)。
对于我可以在我的实验中包含的内容以及我的方法所需的任何其他更改的任何其他指示,将不胜感激。
我还计划比较元数据操作,但我正在处理这些操作,如果需要,稍后可能会 post 提问。
作为文件系统的基准,它们将是无效的。变数太多了。假设您将使用相同的硬件,您的变量是...
- 文件系统(ext4 与 NTFS)
- 操作系统(Redhat 对比 Windows)
- C 编译器(gcc/clang 与 Visual C++(我猜))
你在做基准测试 Redhat + 他们的 C 编译器 + ext4 vs Windows + 他们的编译器 + NTFS。 不能从中得出关于文件系统的一般性陈述只能得出关于组合的信息。你可能想指出作业中的这个缺陷以获得加分,或者它可能只会惹恼助教。你来电。
Redhat 确实有 NTFS 实现,因此您可以通过对 Redhat 上的所有内容进行基准测试来消除变量,但随后您将对 Redhat 的 NTFS 实现与 Redhat 的 ext4 实现进行基准测试。这对 Windows 的 NTFS 实现没有影响。
您可以进行额外的测试以消除编译器和操作系统变量,但我不知道它们是什么。
先不说,因为这是作业,你问的是什么场景运行。答案是全部。基准应该反映现实世界的使用情况,在现实世界中,您读取和写入不同大小和不同缓存状态的文件。将它们放在一个大矩阵中 运行 所有组合。
通常,文件大小范围应从块大小一直到 4 gig(模拟视频文件)。增量越多越好。 1024 的幂将是一个好的开始,三个是一条曲线。所以 4K、4M、4G。
您应该在启用和不启用缓存的情况下进行基准测试,以测试文件系统在读取未缓存文件和读取缓存文件时的工作情况。两者都代表了现实世界的场景。