The Performance Of EXT4 Then & Now
Our next test focus was with the Threaded I/O Tester and we began with random reads of 16 threads of 64MB file sizes. Right away from the Linux 2.6.28 to 2.6.29 kernels there was a hefty performance hit that was recovered somewhat with the Linux 2.6.30 kernel. However, like the IOzone read results, a massive performance penalty was introduced with the Linux 2.6.31 kernel and has continued with the 2.6.32 and 2.6.33 cycles.
Like the IOzone write results, the random write testing in the Threaded I/O Tester did not take a big hit between the 2.6.30 and 2.6.31 kernels. However, there is a fair amount of fluctuation with the random write performance between kernel releases.
With PostgreSQL, the performance was great up through the Linux 2.6.31 kernel. In fact, PostgreSQL exhibited the best performance with the Linux 2.6.30 kernel and was then not impacted by the massive read performance regression introduced in the 2.6.31 cycle. Sadly though the PostgreSQL performance still is not shining since the Linux 2.6.32 kernel. PostgreSQL is now running at about 20% the speed that it was running with the Linux 2.6.31 kernel and earlier releases with the EXT4 file-system. This huge performance drop is known to EXT4 developers and is intended due to an fsync change, when we tracked down the lone commit that destroyed the SQL database performance for this popular file-system.