You are viewing paulmck

Previous Entry | Next Entry

A couple of Linaro-related LWN articles

In case you haven't yet seen them, there are a couple of Linaro-related articles on LWN. Arnd Bergmann takes a look at how to optimize uses of inexpensive Flash memory, including ways of making non-Flash-aware filesystems run efficiently on flash here. John Stultz describes patches that bring the real-time clock (RTC) found on typical PCs into the standard POSIX_CLOCK framework. The RTC has the ability to wake up a powered-down system, so John's patches have the potential to allow multiple applications that make use of RTC (for example, MythTV) to run on the same system. John's article may be found here.

Both of these articles show good examples of how technology designed for hand-held battery-powered embedded devices can benefit servers and desktop/laptop systems.


Mar. 5th, 2011 05:43 pm (UTC)
Flash memory and classic filesystems
Ah, I should have given more background. Please accept my apologies for failing to do so.

The reality is that flash usually performs poorly for filesystem and swap use because the resulting small writes cause write amplification. That said, flash does perform well for read-mostly workloads and also for workloads featuring large sequential writes. Furthermore, some flash manufacturers are adding hardware features to tolerate some patterns of random writes, for example, the directory updates for the VFAT filesystems commonly used on flash. However, the actual data written still needs to be large and sequential to get the most out of flash, even when using VFAT on a flash device optimized for VFAT use.

Therefore, people have tended to run special filesystems designed for flash. However, these filesystems often come with limitations, such as limited size, relative immaturity, and so on. So there really isn't yet a good solution for running a general-purpose workload on flash. Hence Arnd's work, which has the goal of transforming a small-random-write workload into a large-sequential-write workload through use of a mapping layer.