11

How do I turn off write cache in Linux? More specifically, SUSE 11?

My problem is that heavy I/O kills the system even if the generating process is a user priority class, and the starved processes are RR/RT class. So my high availability system breaks with lots of timeouts.

I have / mounted on a flash drive, and a few mount points looking into a RAID controller. For the RAID, I want to try to turn the cache off, since it has a cache inside. But if it needs to be system-wide, fine.

So far I used sync option to mount, but it's not quite like turning off the cache.

Any ideas?

Peter Mortensen
  • 12,090
  • 23
  • 70
  • 90
n-alexander
  • 433
  • 2
  • 4
  • 8
  • General rule to be real-time is not to mix the workloads, especially batch and interactive tasks. If you want a service to be real-time, then put it on a dedicated server. Otherwise, it would be interesting to hear if ionice suggested below would help alleviate the problem. – Dummy00001 Jul 05 '10 at 22:48

4 Answers4

10

When mounting your hard drives use -o sync which will turn off write buffering for the drive.

You can also set it up in your fstab:

/dev/sda1    /    reiserfs        sync    0   0
amphetamachine
  • 1,668
  • 2
  • 12
  • 15
3

For a plain hard disk it would normally be

hdparm -W 0 /dev/sdX

but RAID controllers typically don't pass that through.

You'll have to check the configuration interface of your RAID controller for any options. It might not be possible.

Peter Eisentraut
  • 7,260
  • 2
  • 28
  • 28
1

Maybe drop_caches can help you. It does not seem to disable the cache, merely clear it.

Sjoerd
  • 1,193
  • 7
  • 16
0

please have a look here: https://superuser.com/a/464382/106740 With http://code.google.com/p/pagecache-mangagement/, you can disable file caches on a per-application level

Robert Metzger
  • 238
  • 2
  • 7