буферная память ядра linux равна нулю

буферная память ядра linux равна нулю

Есть один вопрос, ответ на который я не могу найти в Google.

У меня много linux-боксов, в основном с SLES или openSUSE, разными версиями и ядрами. На некоторых из них я столкнулся с проблемой медленных транзакций oracle. Это происходит время от времени, и когда я вхожу в бокс в это время, я вижу, что oracle заблокирован в функции ядра sync_page

# while :; do ps axo stat,pid,cmd,wchan | egrep '^D|^R'; echo --; sleep 5; done
D     3483 hald-addon-storage: polling ide_do_drive_cmd
Ds    4635 ora_dbw0_orcl               sync_page
Ds    4637 ora_lgwr_orcl               sync_page
Ds    4639 ora_ckpt_orcl               sync_page
D    11210 oracleorcl (LOCAL=NO)       sync_page
D    12457 [smtpd]                     sync_page
R+   12458 ps axo stat,pid,cmd,wchan   -
--
Ds    4635 ora_dbw0_orcl               sync_page
Ds    4637 ora_lgwr_orcl               sync_page
Ds    4639 ora_ckpt_orcl               sync_page
D    11210 oracleorcl (LOCAL=NO)       sync_page
R+   12501 ps axo stat,pid,cmd,wchan   -
--
Ds    4635 ora_dbw0_orcl               sync_page
Ds    4637 ora_lgwr_orcl               sync_page
Ds    4639 ora_ckpt_orcl               sync_page
D    11210 oracleorcl (LOCAL=NO)       sync_page
R+   12535 ps axo stat,pid,cmd,wchan   -
--
Ds    4635 ora_dbw0_orcl               sync_page
Ds    4637 ora_lgwr_orcl               sync_page
Ds    4639 ora_ckpt_orcl               sync_page
D    11210 oracleorcl (LOCAL=NO)       sync_page
R+   12570 ps axo stat,pid,cmd,wchan   -
--

так что я думаю, что у этого ящика закончилась память для дисковых буферов, но память в порядке

             total       used       free     shared    buffers     cached
Mem:       4149084    3994552     154532          0          0    2424328
-/+ buffers/cache:    1570224    2578860
Swap:      3148700     750696    2398004

Я думаю, что проблема в этом, буфер равен нулю и мы должны писать напрямую на диск, но почему буфер равен нулю?- Я пытаюсь загуглить и ничего не нахожу - кто-нибудь может помочь?

решение1

СУБД Oracle обходит буферы ОС и пишет напрямую на блочное устройство. Я не думаю, что ваши медленные транзакции вызваны отсутствием используемых буферов.

решение2

freeпоказывает, какой объем буфера использует ядро,не то, сколько доступно. Буферы ядра вычитаются из общей памяти, поэтому в этом случае ваше ядро ​​использует 0/4149084 доступной памяти для буферов. Я бы не считал это вашей проблемой и создал бы новый вопрос, пытаясь выяснить, почему у вас возникают проблемы, связанные с Oracle.

Связанный контент