Linux核心緩衝區記憶體為零

Linux核心緩衝區記憶體為零

有一個問題我在谷歌上找不到。

我有很多 Linux 機器,大多有 SLES 或 openSUSE,有不同的版本和核心。在其中一些方面,我面臨著緩慢的預言機交易問題。有時會出現問題,當我當時登入框時,我看到 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 DBMS 可繞過作業系統的緩衝區並直接寫入區塊裝置。我不認為你的交易緩慢是因為沒有使用緩衝區造成的。

答案2

free告訴你核心正在使用多少緩衝區,不是有多少可用的。內核緩衝區從總記憶體中取出——因此在這種情況下,您的核心將 0/4149084 可用記憶體用於緩衝區。我不認為這是您的問題,並且會建立一個新問題來嘗試找出您遇到 Oracle 相關問題的原因。

相關內容