還有一篇相關介紹:http://www.phoronix.com/scan.php?page=article&item=ext4_benchmarks&num=2html
另外一篇:http://tetralet.luna.com.tw/index.php?op=ViewArticle&articleId=214&blogId=1node
我這裏只摘抄核心的圖例哈。linux
1:單字節寫入性能對比數據庫
A:因爲硬盤式塊設備因此對於這種測試硬盤式不擅長的緩存
B:btrfs系統只有200K/SEC,xfs表現的性能比較平衡。安全
2:塊寫入性能對比(因爲硬盤是塊設備這種對比來的更有意義)數據結構
A:性能上差很少,可是效率上(CPU佔用率上)來講最好的是xfs接下來依次是EXT4,EXT3,BTRFS工具
3:直接塊順序讀寫(關掉任何的系統和文件緩存)性能
A:繞過系統和文件緩衝的話(例如:視頻錄製,一些虛擬機軟件,ECC),EXT3/ 4是最好的選擇,其次是BTRFS,最後是XFS。
B:沒有一種文件系統能夠適用於全部環境
4:隨機尋道
A:BTRFS系能最差,不到20 seeks/sec
B:EXT3性能最好,若是軟件大量的隨機尋址的話這個文件系統性能更好
5:建立和刪除大量文件(文件量必定)
BTRFS系統性能最差,下面是去掉該系統其它3種的對比
A:EXT4是更高效高性能的系統,接下來依次是XFS,EXT3
6:順序讀寫吞吐量【沒有fsync的是100 writes/one fsync(),有的是1 writes/one fsync()】
A:100 writes/one fsync()各個性能差很少
B:1 writes/one fsync()時EXT3性能最好,接下來依次是XFS,EXT4,BTRFS
C:write + fsync()在BTRFS下對讀性能產生影響
7:隨機讀寫吞吐量
A:100 seeks/sec每一個塊16 KB,咱們得出最大的讀取速度是1600 KB/sec,XFS,BTRFS大於了這個數值(可能數據不能隨機也可能緩衝影響告終果)
B:EXT3隨機寫入性能是最好的,適用於數據庫,高容量的記錄程序和虛擬機系統
8:向PostgreSQL 中寫入10萬行數據
A:BTRFS 性能是最好的,EXT4和XFS很低的cpu使用率可是性能太差
9:讀測試
A:10萬次的讀測試,性能差異不大
10:複雜的讀寫以及事務測試
A:EXT3性能最好
因此,數據庫最好是EXT3系統,除非EXT4解決了所謂的迴歸問題。
11:Linux kernel 2.6.36下的解包操做
A:該操做最好的文件系統是EXT4
此次操做會受到緩存和延時分配的影響,咱們強制同步看看效果
A:XFS是較慢的FS,EXT3慢於EXT4和BTRFS
12:cat操做
A:該操做比較有效率的系統是XFS
B:該執行最快CPU佔用最高的系統是BTRFS,,說明該系統有複雜的元數據操做
13:解壓linux核心(會產生32000 files)
A:EXT3這個惟一沒有延時分配能力的系統是最差的
14:順序建立128個文件,每一個長16 MB(共2 GB)各類系統產生的碎片狀況
A:BTRFS系統碎片是個嚴重的問題(這也解釋了先前的這種系統讀性能低下的緣由)
出去BTRFS系統後的圖
A:EXT4,XFS這種有延時分配機制的系統產生的碎片少於EXT3(即便one write/one fsync())
15:隨機建立128個文件,每一個長16 MB(共2 GB)各類系統產生的碎片狀況
A:隨機寫入在任何系統下都會產生碎片,即便有延時分配也沒用
Linux kernel 自 2.6.28
開 始正式支持新的文件系統 Ext4。 Ext4 是 Ext3 的改進版,修改了 Ext3 中部分重要的數據結構,而不只僅像 Ext3 對
Ext2 那樣,只是增長了一個日誌功能而已。Ext4 能夠提供更佳的性能和可靠性,還有更爲豐富的功能:
1. 與 Ext3 兼容。執行若干條命令,就能從 Ext3 在線遷移到 Ext4,而無須從新格式化磁盤或從新安裝系統。原有 Ext3 數據結構照樣保留,Ext4 做用於新數據,固然,整個文件系統所以也就得到了 Ext4 所支持的更大容量。
2. 更大的文件系統和更大的文件。較之 Ext3 目前所支持的最大 16TB 文件系統和最大 2TB 文件,Ext4 分別支持 1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的文件系統,以及 16TB 的文件。
3. 無限數量的子目錄。Ext3 目前只支持 32,000 個子目錄,而 Ext4 支持無限數量的子目錄。
4. Extents。Ext3 採
用間接塊映射,當操做大文件時,效率極其低下。好比一個 100MB 大小的文件,在 Ext3 中要創建 25,600 個數據塊(每一個數據塊大小
爲 4KB)的映射表。而 Ext4 引入了現代文件系統中流行的 extents 概念,每一個 extent
爲一組連續的數據塊,上述文件則表示爲「 該文件數據保存在接下來的 25,600 個數據塊中」,提升了很多效率。
5. 多塊分配。當
寫 入數據到 Ext3 文件系統中時,Ext3 的數據塊分配器每次只能分配一個 4KB 的塊,寫一個 100MB 文件就要調用 25,600
次數據 塊分配器,而 Ext4 的多塊分配器「multiblock allocator」(mballoc) 支持一次調用分配多個數據塊。
6. 延遲分配。Ext3 的數據塊分配策略是儘快分配,而 Ext4 和其它現代文件操做系統的策略是儘量地延遲分配,直到文件在 cache 中寫完纔開始分配數據塊並寫入磁盤,這樣就能優化整個文件的數據塊分配,與前兩種特性搭配起來能夠顯著提高性能。
7. 快速 fsck。之前執行 fsck 第一步就會很慢,由於它要檢查全部的 inode,如今 Ext4 給每一個組的 inode 表中都添加了一份未使用 inode 的列表,從此 fsck Ext4 文件系統就能夠跳過它們而只去檢查那些在用的 inode 了。
8. 日誌校驗。日誌是最經常使用的部分,也極易致使磁盤硬件故障,而從損壞的日誌中恢復數據會致使更多的數據損壞。Ext4 的日誌校驗功能能夠很方便地判斷日誌數據是否損壞,並且它將 Ext3 的兩階段日誌機制合併成一個階段,在增長安全性的同時提升了性能。
9. 「無日誌」(No Journaling)模式。日誌總歸有一些開銷,Ext4 容許關閉日誌,以便某些有特殊需求的用戶能夠藉此提高性能。
10. 在線碎片整理。儘管延遲分配、多塊分配和 extents 能有效減小文件系統碎片,但碎片仍是不可避免會產生。Ext4 支持在線碎片整理,並將提供 e4defrag 工具進行個別文件或整個文件系統的碎片整理。
11. inode 相關特性。Ext4 支
持更大的 inode,較之 Ext3 默認的 inode 大小 128 字節,Ext4 爲了在 inode 中容納更多的擴展屬性(如納秒時間戳
或 inode 版本),默認 inode 大小爲 256 字節。Ext4 還支持快速擴展屬性(fast extended
attributes) 和 inode 保留(inodes reservation)。
12. 持久預分配(Persistent preallocation)。P2P 軟
件爲了保證下載文件有足夠的空間存放,經常會預先建立一個與所下載文件大小相同的空文件,以避免將來的數小時或數天以內磁盤空間不足致使下載失 敗。
Ext4 在文件系統層面實現了持久預分配並提供相應的 API(libc 中的 posix_fallocate()),比應用軟件本身實現更有
效率。
13. 默認啓用 barrier。磁
盤 上配有內部緩存,以便從新調整批量數據的寫操做順序,優化寫入性能,所以文件系統必須在日誌數據寫入磁盤以後才能寫 commit 記錄, 若
commit 記錄寫入在先,而日誌有可能損壞,那麼就會影響數據完整性。Ext4 默認啓用 barrier,只有當 barrier 以前的數據
所有寫入磁盤,才能寫 barrier 以後的數據。(可經過 "mount -o barrier=0" 命令禁用該特性。)