Hi Paul, > 2) Other block I/O output (eg dd if=/dev/zero of=/dev/sdi bs=4M) also > run very slowly What do you notice when running "top" and doing the above? Does the "buff" value grow high (+700MB), with high CPU usage? If so, I think this might be down to nr_free_buffer_pages(). This function includes the pages in all zones (including the HIGHMEM zone) in its calculations, while only DMA and NORMAL zone pages are used for buffers. This upsets the result from balance_dirty_state() (fs/buffer.c), and as a result the required flushing of buffers is only done as a result of running v low of pages in the DMA and NORMAL zones. I've attached a "quick hack" I did for 2.4.0. It doesn't completely solve the problem, but moves it in the right direction. Please let me know if this helps. Mark