LINUX.ORG.RU
ФорумAdmin

Возможность ограничения размера файлового кеша в Linux?


0

0

ОС RHEL4 на ней крутится сервер БД (FireBird) физической памяти 14GB, но в моменты пиковой нагрузки ее периодически не хватает и тогда начинает активно использоваться файл-подкачки (swap увеличивается ненамного - до 1-2GB, но при этом очень много IOPs-ов), хотя при этом до 10GB памяти занято под кеш ОС(!), который мне совершенно не нужен (согласно показаниям NMON Cached=10000MB, примерно) Есть ли возможность заставить Linux не использовать под кеш более чем ... % или МБ ОЗУ? Или хотя бы активнее освобождать кеш, когда приложения запрашивают память? пытался реализовать последнее, изменяя через sysctl, такие переменные как vm.swappiness vm.dirty_expire_centisecs эффект - нулевой...

anonymous

pagecache полностью вытесняемый, нет смысла его ограничивать. Если линух свопится значит из-за фрагментации или по другим причинам он не может использовать "реальную" память.

В какое значение ставил vm.swappiness, что говорит top, vmstat -s, vmstat -m?

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

менял vm.swappiness с дефолтного =60
и на 0 и на 100 - какие либо изменения при этом отсутствуют

>top
Mem:  14551316k total, 14087920k used,   463396k free,    79796k buffers
Swap:  8192632k total,   324412k used,  7868220k free, 11482436k cached
смущает что 11482436k cached

>vmstat -s
     14551316  total memory
     14520496  used memory
     12103100  active memory
      2197480  inactive memory
        30820  free memory
        13900  buffer memory
     11435340  swap cache
      8192632  total swap
       322792  used swap
      7869840  free swap
     84339846 non-nice user cpu ticks
        24940 nice user cpu ticks
     14580806 system cpu ticks
    474049640 idle cpu ticks
    122075381 IO-wait cpu ticks
       481497 IRQ cpu ticks
            0 softirq cpu ticks
     64443669 pages paged in
   1108316981 pages paged out
     13119185 pages swapped in
     15248757 pages swapped out
   3219140568 interrupts
   3797264102 CPU context switches
   1219394054 boot time
     17088253 forks

anonymous
()
Ответ на: комментарий от true_admin

>vmstat -m
Cache                       Num  Total   Size  Pages
nfs_direct_cache              0      0     68     58
nfs_write_data               36     36    448      9
nfs_read_data                32     36    448      9
nfs_inode_cache               0      0    664      6
nfs_page                      0      0     64     61
rpc_buffers                   8      8   2048      2
rpc_tasks                     8     20    192     20
rpc_inode_cache               6      7    512      7
dm_tio                      830   5424     16    226
dm_io                       810   4810     20    185
fib6_nodes                    7    119     32    119
ip6_dst_cache                10     30    256     15
ndisc_cache                   1     20    192     20
rawv6_sock                    6     11    704     11
udpv6_sock                    1     11    704     11
tcpv6_sock                    7      9   1216      3
ip_fib_alias                 10    226     16    226
ip_fib_hash                  10    119     32    119
uhci_urb_priv                 3    176     44     88
ext3_inode_cache           6908   6937    552      7
ext3_xattr                    0      0     48     81

anonymous
()
Ответ на: комментарий от true_admin

Cache Num Total Size Pages journal_handle 69 135 28 135 journal_head 5346 5346 48 81 revoke_table 6 290 12 290 revoke_record 0 0 16 226 mppaq 8 9 408 9 mpppq 36 40 476 8 scsi_cmd_cache 170 170 384 10 msi_cache 6 6 3840 1 sgpool-128 67 72 2560 3 sgpool-64 41 42 1280 3 sgpool-32 74 84 640 6 sgpool-16 48 48 320 12 sgpool-8 320 320 192 20 unix_sock 236 259 512 7 ip_mrt_cache 0 0 128 31 tcp_tw_bucket 0 0 128 31 tcp_bind_bucket 20 226 16 226 tcp_open_request 0 0 128 31 inet_peer_cache 2 61 64 61 secpath_cache 0 0 128 31 xfrm_dst_cache 0 0 256 15

anonymous
()
Ответ на: комментарий от anonymous

именно сейчас свап активно не используется, но обычно он дорастает до 2ГБ и более,
почему такое большое значение cached?

anonymous
()
Ответ на: комментарий от anonymous

параметры pages swapped in и pages swapped out быстро меняются? Это показатель активности свопа(скока страниц туда попало страниц и скока оттуда было возвращено).

Если нет то забей, значит в своп попала всякая ненужная фигня. Смена на лету vm.swappines не значит что он вытащит из свопа данные, они там будут лежать пока они не потребуются.

true_admin ★★★★★
()
Ответ на: комментарий от anonymous

> почему такое большое значение cached?

а почему бы и нет? Вся память что не используется идёт под кэш. Это не значит что линух урезал память программам в пользу кэша.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

у меня NMON-ном собирается статистика
на графике видны два больших пика pages swapped in и pages swapped out каждые сутки, причем того же порядка что и pages in и pages out (то есть интенсивность обращений к свопу такая же как и к файловой системе) , а пару месяцев назад такого не было - график pages swapped in и pages swapped out был красиво на уровне 0.
соответственно примерно в это время юзеры жалуются...
но я так и не понял чтобы снизить интенсивность использования файлового кеша vm.swappiness нужно ставить в 0 или наоборот 100?
это вообще % или значение можно ставить и больше 100?

anonymous
()
Ответ на: комментарий от anonymous

>но я так и не понял чтобы снизить интенсивность использования файлового кеша

Вот и я не понял, что значит "интенсивность использования"? Вы вроде хотите снизить использование swap'а, за счет "выкидывания" дискового кеша. Надо ставить в ноль, хотя, наверное лучше в 10. И ещё был патч (а может и не один), который автоматически регулирует этот параметр (соответственно система перестает использовать значение, задаваемое пользователем). Хотя вроде в дистрибутивы (кроме gentoo) их не включали.

mky ★★★★★
()
Ответ на: комментарий от anonymous

Ставь vm.swappiness в 0.

Пики, скорее всего, вызваны каким-нить заданием типа бэкапов, кроном, vacuum какой-нить(не знаком с firebird) итп.

mky, попытка подбора таких параметров на лету часто ошибочна ибо никто кроме тебя не знает что ты запустишь в следующий момент и как надо под это настроить систему. Это очень старый и больной вопрос(на ряду с другими какой io-шедулер выбрать, какой cpu-шедулер выбрать, делать ли cpu affinity для процессов и обработчиков прерываний, какой выбрать vmsplit, размеры буферов итп). Короче, пока автонастраивалки sysctl редко помогают :).

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

>Короче, пока автонастраивалки sysctl редко помогают :).

С этим то никто не спорит, просто вот было такое чудо http://kerneltrap.org/node/3216, которое фактически игнорировало задаваемое пользователем значение в swappiness (отключалось через autoswappiness) и раз автор топика утверждал, что в его системе изменение swappiness не дает результата, то в войдя в telepat mode я решил, что у него может быть что-то подобное.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.