Kernel Bug Tracker – Bug 63531
Disabling in-memory write cache for x86-64
Last modified: 2013-11-13 12:20:42 UTC
Created attachment 112021 [details]
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 a FAT32 partition, 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 in-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.
Not a support forum
A bug which causes serious stalls can hardly be called an attempt at turning a bugzilla into a support forum, Alan. The way you close bug reports is often user hostile to put it humbly.
At least, you could give a link to a discussion which spans over 50 messages right now, and where Linus himself admits that the way dirty buffers are set up on x86-64 is not exactly the right way given today's RAM sizes.
If anyone ever stumbles upon this bug report, please, read this discussion:
A quick sane solution is to set sysctl variables this way: