>>-Как уменьшить размер буферного кэша?
>
>Это делать крайне не рекомендуется, современные linux ядра 2.4 умеют динамически выделять
>память для буферизации, в зависимости от нагрузки на систему и объема
>свободной, неиспользуемой в данный момент, памяти.
Да вот похоже, что не очень-то и умеет. Если /proc (соответственно free, top) не врет. А это он может см. shared. И это не единственный пример.
free
total used free shared buffers cached
Mem: 2064756 2047084 17672 0 8640 1721664
-/+ buffers/cache: 316780 1747976
Swap: 2096440 36012 2060428
ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0xad7b3360 65536 oracle 640 831725568 86
0x00000000 32769 root 777 1205 2
Попробую объяснить, зачем это нужно (гарантировано уменьшить буфер).
На Linux работает СУБД Oracle. Принцип работы этой СУБД полностью дублирует работу журналируемой фс и буфера фаловой системы. Отказатся от журн. ф.с. просто, а вот как уменьшить буфер(дисковый кэш), чтобы система попросту не дублировала работу Oracle?
Судя по free(см. выше), имеем дисковый кэш размерои в 300М! Если это правда, то он не нужен такой большой, т.к. в Oracle под это дело отводится часть Shared Memory, а именно 600М из 831725568.
Получается ситуация, когда buffers/cache=316780Kb и не уменишается, а только увеличивается(до 700М!!!). А в это время другие процессы нуждаются в памяти! и дисковый кэш, похоже, не уменьшается(см. free) для того чтобы предоставить память процессам(как это говорится в документации), возможно это происходит из-за того что постоянно читаются\пишутся большие объемы данных в больше файлы. Как результат - свопинг(до 800М!).
Покрайней мере, поробую покопать в указанном направлении.
Спасибо за ответ. Может чего еще подскажите :)