From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christer Weinigel Subject: Tuning for Compact Flash Date: Sat, 27 Sep 2008 14:54:56 +0200 Message-ID: <48DE2D20.1090703@csr.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit To: linux-fsdevel@vger.kernel.org Return-path: Received: from cluster-g.mailcontrol.com ([208.87.233.190]:45166 "EHLO cluster-g.mailcontrol.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752400AbYI0MzG (ORCPT ); Sat, 27 Sep 2008 08:55:06 -0400 Received: from CAMEUREXB02.EUROPE.ROOT.PRI ([193.128.72.68]) by rly13g.srv.mailcontrol.com (MailControl) with ESMTP id m8RCt2De008946 for ; Sat, 27 Sep 2008 13:55:03 +0100 Sender: linux-fsdevel-owner@vger.kernel.org List-ID: Hi all, I have a Thinkpad X40 that I'd like to replace the Hitachi hard drive on. The drive is 1"8 with a normal 2"5 PATA disk connector on the side and such disks are not manufactured any more, so I went out and bought a Compact Flash adapter and a Transcend 133X 32 GByte Compact Flash. I installed Fedora 9 on the Compact Flash, with a small boot partition and then one large encrypted LVM partition where I put the swap partition and an ext3 file system. This turned out to be bog slow, write speed to the ext3 file system seem to be about 1MByte/s which is just horrible. Since Transcend claims 45MByte/s read bandwidth and 16MByte/s write bandwidth, this seems much too low. So, I did some simple tests to see how the compact flash behaves. To measure write speed i did the following for different block sizes: dd oflag=direct if=/dev/zero of=/dev/sdd1 bs=$bs and to measure read speed I did the following: dd iflag=direct if=/dev/sdd1 of=/dev/null bs=$bs The results are: Transcend Flash Hitachi Hard Drive Block Size Write Read Write Read 4k 2.2 14.4 14.2 20.1 16k 10.8 23.2 15.7 20.5 32k 15.6 31.2 15.7 20.5 64k 17.2 37.1 15.7 20.5 128k 17.8 44.5 15.8 20.5 1M 18.0 45.8 18.0 20.5 16M 17.8 46.0 20.5 20.5 It seems that Transcend were actually a bit conservative, the max read and write speeds actually exceed their claims, but as transfer size goes down, performance suffers. (I ought to perform another test with non-transfer-size aligned transfers to see if that makes a difference, that could tell me some more about how the flash behaves internally.) So, is there any file system for Linux that would perform better than ext3 on a device like this? I need a file system with Posix semantics so that I can use it as my root file system, and it would be nice with a file system with some kind of journalling so that if the laptop powers off unexpectedly I don't have to run fsck. Or is there any tuning of kernel parameters I can do to make ext3 + lvm + crypto run faster? Has anyone looked at writing a file system especially targeted for this kind of flash devices? The same issues I have with this compact flash ought to show up with other flash devices such as USB drives (some web page mentioned that the Transcend flash uses a Silicon Motion flash controller; another Silicon Motion flash controller is used in a lot of USB drivers so probably behaves similarly). For the moment, I've put back the Hitachi hard drive in my laptop, but it is starting to become a bit noisy, so I'm afraid that it will fail soon and I'll have to switch to the flash drive despite its performance problems. But for now I can play around with the flash drive and try different things on it. /Christer