2013-10-23 06:12:11

by Artem S. Tashkinov

[permalink] [raw]
Subject: Disabling in-memory write cache for x86-64 in Linux 3.11

Hello,

On my x86-64 PC (Intel Core i5 2500, 16GB RAM), I have the same 3.11 kernel
built for the i686 (with PAE) and x86-64 architectures. What's really troubling me
is that the x86-64 kernel has the following problem:

When I copy large files to any storage device, be it my HDD with ext4 partitions
or flash drive with FAT32 partitions, the kernel first caches them in memory entirely
then flushes them some time later (quite unpredictably though) or immediately upon
running "sync".

How can I disable this memory cache altogether? When running the i686 kernel with
the same configuration I don't observe this effect - files get written out almost immediately
(for instance "sync" takes less than a second, whereas on x86-64 it can take a dozen of
_minutes_ depending on a file size and storage performance).

I'm _not_ talking about disabling write cache on my storage itself (hdparm -W 0 /dev/XXX)
- firstly this command is detrimental to the performance of my PC, secondly, it won't help
in this instance.

Swap is totally disabled, usually my memory is entirely free.

My kernel configuration can be fetched here: https://bugzilla.kernel.org/show_bug.cgi?id=63531

Please, advise.

Best regards,

Artem