Disabling ZIL (Intent Log)
Before actually investing in some kind of Solid State Device, it would be nice to actually quantify how much improvement in write performance is possible. That is if I separate the ZIL to a dedicated, fast, transactional device.
A quick and clean test would be to run a similar IOzone benchmark on the iSCSI device and turning off the Intent Log completely from the ZFS file system. This should give me the extreme best case as it would take away the entire overhead of ZIL.
Note: Keeping the ZIL disabled is not at all recommended in any production system as it could severely damage the file system. And the file system is prone to corruption in the event of any crash.
In order to turn off the ZIL dynamically the following command can be executed. I personally feel it’s a nice idea to restart the machine after making such change, especially if I am benchmarking. But I am too lazy so I followed the following steps:
Step I: Disable the ZFS Intent Log
# echo zil_disable/W0t1 | mdb -kw
Step II: Unmount the ZFS file system in the concerned pool
# zfs unmount /tank
Step III: Export the zpool
# zpool export tank
Step IV: Import the zpool back, which would also mount all the file systems
# zpool import tank
Step V: Execute the benchmarking applications
# iozone -ac -s8G -i0 -i1 -y4k -q1M
Results
The results were very interesting, as thought there was a big improvement in writes. But I didn’t expect the performance to increase by 26x on average. The following graph shows the numbers that I got after turning off the ZIL.

Also notice that the Read performance also increased big time, ~110MB/s which is an improvement of around 12%. But it’s hard to say that the bottleneck is the back-end (solaris/zfs/iscsi) or the network itself since the performance is near-wire speed. The results from the perevious tests are mentioned in this entry
Summary
Summarizing all the pervious tests the following graphs shows the improvement I achieved with the two changes:


- Moving the file system block size from 8k to 128k
- Running the tests with ZFS intent log disabled (case for SSD)
There is still a lot to work on getting a perfect working system. The next step would be to insert a USB Flash Disk and see where does the performance lands (esp. on writes)