[ Content contribution] 3202年了btrfs和ext4性能还差多少呢?
Tofloor
poster avatar
fslong
deepin beta test group
2023-12-25 08:06
Author

ok2.0现在可以不用boot分区直接一根到底使用btrfs文件系统了。

所以今天重装了下ok,然后测试了下磁盘的io性能,以下测试均是在同一块sata接口的古老ssd硬盘上测试的。

一、测试结果

image.png


image.png

二、简要总结

  1. exfat毫无疑问性能是最差的
  2. ext4就比较有意思了,大部分时间还是比btrfs快,但其对dd命令分块大小比较敏感,分块变化时写入速度波动较大
  3. btrfs大部分时间比ext4慢,读速度差不了太多,但是写速度分块小的时候差别还是稍大的
  4. btrfs在分块很小的时候要比ext4快很多
  5. btrfs在分块大的时候不一定比ext4差了

三、跑分

image.png

image.png

image.png

image.png

image.png

image.png

四、个人愚见(轻喷)

  1. 个人认为如果作为系统分区,因为有成千上万的软件,这些软件作者不一样,在io的时候很可能分块大小什么的不一样,万一有些情况碰到恰好是ext4比较弱的分块,那么此时速度就会很慢,甚至系统卡顿。
  2. 操作系统有木桶效应,往往是否流畅取决于最短的那根木板,所以使用btrfs或xfs做根目录文件系统体验上要优于ext4。
  3. 即使我们不使用btrfs的高级性能,仅仅当作普通硬盘来使用,他对不同类型io操作的适应性显然要优于ext4。
  4. btrfs对ssd专门的优化对硬盘的寿命也有帮助,越好的硬盘其根etx4的差距越不容易感知。
  5. 综上,拥抱btrfs吧,ext4真的有点老了。

五、测速脚本

#!/usr/bin/env python3

import os

bs_list_K = [str(2**i) for i in range(13)]
bs_list_M = [str(i) for i in range(1, 9)]

sum = 1024
print(f"\n分块传输大小:1KB 到 {bs_list_K[-1]}KB")
print("测试中,请耐心等待...")
for bs in bs_list_K:
    count = int(sum*1024/int(bs))
    in_result = os.popen("dd if=/dev/zero of=test.dd oflag=direct bs=" +
                         str(bs)+"K count="+str(count)+" 2>&1").read()
    in_result = in_result.split("\n")[-2].split(",")[-1]
    out_result = os.popen("dd if=test.dd of=/dev/null iflag=direct bs=" +
                          str(bs)+"K count="+str(count)+" 2>&1").read()
    out_result = out_result.split("\n")[-2].split(",")[-1]
    print(bs+" KB\t"+"写入: "+in_result+"\t读取: "+out_result)

sum = 1024
print(f"\n分块总传输大小:1MB 到 {bs_list_M[-1]}MB")
print("测试中,请耐心等待...")
for bs in bs_list_M:
    count = int(sum/int(bs))
    in_result = os.popen("dd if=/dev/zero of=test.dd oflag=direct bs=" +
                         str(bs)+"M count="+str(count)+" 2>&1").read()
    in_result = in_result.split("\n")[-2].split(",")[-1]
    out_result = os.popen("dd if=test.dd of=/dev/null iflag=direct bs=" +
                          str(bs)+"M count="+str(count)+" 2>&1").read()
    out_result = out_result.split("\n")[-2].split(",")[-1]
    print(bs+" MB\t"+"写入: "+in_result+"\t读取: "+out_result)

os.system("rm test.dd")

Reply Favorite View the author
All Replies
2 / 2
To page
fslong
deepin beta test group
2024-01-03 01:27
#21
petegg

随机写入好像有点惨不忍睹

我昨天研究了下迁移,现在迁移到gparted格式化的分区里,舒服。

Reply View the author
petegg
deepin
2024-01-12 10:20
#22
fslong

我昨天研究了下迁移,现在迁移到gparted格式化的分区里,舒服。

单盘对比xfs有什么优势吗

Reply View the author
fslong
deepin beta test group
2024-01-12 12:33
#23
petegg

单盘对比xfs有什么优势吗

正常情况没啥优势,基本这几个都大差不差,感知不到。

Reply View the author
petegg
deepin
2024-01-12 13:23
#24
fslong

正常情况没啥优势,基本这几个都大差不差,感知不到。

谢谢分享经验applaud

Reply View the author
2 / 2
To page