[ 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
1 / 2
To page
f@deepin
deepin
2023-12-25 08:14
#1

不用单独分个 ext 的boot 分区了 ?

这挺好

Reply View the author
neko
deepin
Ecological co-builder
2023-12-25 08:18
#2

建议用KDISKMARK测一下随机读写

Reply View the author
fslong
deepin beta test group
2023-12-25 08:24
#3
neko

建议用KDISKMARK测一下随机读写

ext4已经噶掉啦,没法测啦。

但以前看到过资料,ext4的随机读写不如xfs和btrfs,尤其是高并发的场景。

Reply View the author
Ziggy
deepin
2023-12-25 08:38
#4

btrfs核心玩法之一依然有子卷快照😃

Reply View the author
2023开始学习
deepin
2023-12-25 11:48
#5

性能差不太多的情况。子卷快照,多一种玩法已经够换了

Reply View the author
神末shenmo
deepin
Spark-App
2023-12-25 15:34
#6
Ziggy

btrfs核心玩法之一依然有子卷快照😃

还有cow!

Reply View the author
f@deepin
deepin
2023-12-25 15:51
#7

ext老矣,尚能饭否

Reply View the author
不知道用啥昵称
deepin
2023-12-25 16:39
#8
ok发展的好快啊。但操作不人性化的地方很多。
Reply View the author
Amz
deepin
2023-12-25 16:40
#9

我在论坛沉淀了很多自己的使用心得,

在深度这边我早已使用迁移文件,变更启动文件,变更挂载文件的方式使用btrfs,本质上不支持根目录只是安装器行为老旧造成的,内核和文件系统可以工作在根分区的

其次国内发行版没有一个推出完整btrfs体验方案,从安装器就应该支持子卷的规划,进入后要支持apt勾子,启动快照,支持grub高级选项输入密码后恢复某一时间快照,快照管理器,数据分区快照等等

Reply View the author
fslong
deepin beta test group
2023-12-25 16:48
#10
Amz

我在论坛沉淀了很多自己的使用心得,

在深度这边我早已使用迁移文件,变更启动文件,变更挂载文件的方式使用btrfs,本质上不支持根目录只是安装器行为老旧造成的,内核和文件系统可以工作在根分区的

其次国内发行版没有一个推出完整btrfs体验方案,从安装器就应该支持子卷的规划,进入后要支持apt勾子,启动快照,支持grub高级选项输入密码后恢复某一时间快照,快照管理器,数据分区快照等等

从测试和日常使用下来看,即使没一揽子解决方案,单纯当做一种普通文件系统,btrfs也已经很香了。

综合体验不输于ext4,真要把子卷什么的加上,那体验秒杀好多了。

Reply View the author
deepsh
deepin
2023-12-25 17:52
#11

对,btrfs好用。。

Reply View the author
MMHMM
deepin
2023-12-25 18:28
#12
Amz

我在论坛沉淀了很多自己的使用心得,

在深度这边我早已使用迁移文件,变更启动文件,变更挂载文件的方式使用btrfs,本质上不支持根目录只是安装器行为老旧造成的,内核和文件系统可以工作在根分区的

其次国内发行版没有一个推出完整btrfs体验方案,从安装器就应该支持子卷的规划,进入后要支持apt勾子,启动快照,支持grub高级选项输入密码后恢复某一时间快照,快照管理器,数据分区快照等等

你可以出个详细的规划路线,或者说实现步骤!发个单独的帖子,讲讲为啥你要这么做?这么做的优势以及后期更新版本的策略~

期待~

Reply View the author
MMHMM
deepin
2023-12-25 18:31
#13

btrfs 一开始被各大系统嫌弃,以至于打入冷宫,现在性能得到大规模提升和优化,但负面影响仍在! 如何去系统化的部署确实是个问题!

Reply View the author
f@deepin
deepin
2023-12-25 19:10
#14

不要想着一口吃个胖子,如何方便的把deepin安装到子卷上,先把这个解决了

可以魔改安装器(貌似未开源),也可以搞个脚本

手动方案太复杂了,光看步骤都头疼

Reply View the author
f@deepin
deepin
2023-12-25 21:14
#15

gparted有啥黑科技吗?咋分数高一截呢confused

Reply View the author
fslong
deepin beta test group
2023-12-25 21:21
#16
f@deepin

gparted有啥黑科技吗?咋分数高一截呢confused

格式化参数不太一样:

9c5c49b26c9efffc210e057ac8508e7.png

dd48facd59437fffd9adb7f9598f75c.png

Reply View the author
MMHMM
deepin
2023-12-27 18:47
#17
f@deepin

不要想着一口吃个胖子,如何方便的把deepin安装到子卷上,先把这个解决了

可以魔改安装器(貌似未开源),也可以搞个脚本

手动方案太复杂了,光看步骤都头疼

like

确实是需要先解决的!

Reply View the author
132******27
deepin
2023-12-31 02:12
#18

目前还是使用ext4,现实理由是,有时候电脑死机不得不要按热启动键,再开机会有磁盘报错需要自检,如果根分区是btrfs就恢复时间超过3分钟,而ext4就恢复在1分钟之内就完成了

Reply View the author
fslong
deepin beta test group
2023-12-31 04:48
#19
132******27

目前还是使用ext4,现实理由是,有时候电脑死机不得不要按热启动键,再开机会有磁盘报错需要自检,如果根分区是btrfs就恢复时间超过3分钟,而ext4就恢复在1分钟之内就完成了

哈哈哈,这个理由我给满分。

奇怪的是我好久都没见过这个磁盘开机自检了,以前总见。

Reply View the author
petegg
deepin
2024-01-03 01:24
#20

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

Reply View the author
1 / 2
To page