fast compressed fs (was Re: -nice tree)

From: Pavel Machek
Date: Mon Mar 29 2004 - 08:07:29 EST


> > How?
> Run two parallel tasks: 1. write pages to disk by queuing the I/Os;
> 2. compress unqueued pages.
> The first task won't use much CPU because it's always waiting for disk
> DMAs to complete. While it sleeps, the second task runs.
> Alternatively this can be implemented using polling for I/O
> completions in the second task, if that's easier.
> The first task should keep the I/O queue full enough to sustain
> writing, but not much fuller than that. Either a fixed queue length
> will be fine, or it is easy to adjust the queue length dynamically by
> enlarging it if any I/O completions occur when the queue is empty.
> The second task consumes uncompressed pages and makes available
> compressed pages.
> When the first task wants to queue more pages for I/O, it first checks
> the compressed-page list. If there are any, they are queued,
> otherwise it consumes uncompressed pages.
> This will automatically converge on an optimal balance between
> compressed and uncompressed page writing, provided the disk is using
> DMA, which they do on all modern system.
> This is actually better than fully enabling or disabling compression.

Very clever. This even could be used for a filesystem to make writes faster...
Hmm, compressed fs and *faster* than normal... sounds good.

64 bytes from icmp_seq=28 ttl=51 time=448769.1 ms

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at