Huge page使用的一些問題

2021-09-23 16:37:45 字數 2091 閱讀 2572

12c的資料庫在安裝的時候,有乙個檢查專案,叫做maximum locked memory check。

這是要求設定/etc/security/limits.conf中的memlock的值,官方文件在11g要求是設定比物理記憶體稍小的乙個值,在12c中要求至少為90%的物理記憶體。

而memlock的設定,是啟用huge page的一部分。開啟hugepage在大記憶體大sga的環境下,可以提供系統的效能。

啟用hugepage需要設定/etc/security/limits.conf和vm.nr_hugepages(doc id 361468.1)

注1:在asm中,當啟用hugepage時oracle建議asm的sga增大到至少2g,設定hugepage至少1300個以上的大頁面(doc id 2111010.1)

在exadata中,預設啟用了hugepage,且安裝exadata的時候,就預設禁用了asm的amm(pga不使用hugepage,這也是為什麼使用hugepage不能同時使用amm,只能使用asmm的原因。因為amm是自動管理sga+pga。而hugepage不能被pga使用。),設定了sga大小為2g。(doc id 1681467.1)。

上述的大小只是乙個大概的估算值,如果需要計算大小,也是可以計算的。asm的shared pool的大小,在150m的基礎上,external冗餘的disks,每增加100g的空間大小,需要額外的1m記憶體(doc id 437924.1)

注2:在12c中grid中多了乙個mgmtdb來記錄gi資源資訊,這個db的sga使用,也要考慮看hugepage的配置中。不過由於mgmtdb不確定會跑在那個節點上,在exadata的health check檢查專案中,是建議把mgmtdb使用hugepage屬性關閉的。(doc id 1274318.1)

注3:還有乙個引數pre_page_sga,在9i~11g中預設值是false,在12c中預設值是true。在12c之前,預設值false可以避免在程序啟動時,access sga中所有的page頁面加快程序的啟動速度(見connection management call elapsed time)。而在12.1之後,演算法發生了改變,設定為true和false幾乎沒有差別。

注4:上面說的hugepages,指的是regular hugepages,而對於transparent hugepages,我們是需要禁用的。見disable transparent hugepages on sles11, rhel6, rhel7, ol6, ol7, and uek2 and above (doc id 1557478.1)。

regular hugepages是提前分配,不是動態分配,transparent hugepages是通過khugepaged執行緒動態配置的,這可能會導致oracle執行過程**現一些奇怪的問題,oracle建議關閉transparent hugepages功能。

注5:放在small pages上的sga,不會直接占用物理記憶體(這樣應該是在page fault時才會申請物理記憶體)。即ipcs -am看到占用的記憶體的是在vm中,不是在rss中,實際物理記憶體中。

所以:

(1)oracle推薦在大記憶體大sga的情況下,使用hugepage。文件上說是大於8g物理記憶體(doc id 361468.1);在實際使用中,客戶如果超過64g記憶體,我們一般都推薦使用。

(2)對於asm我們可以設定sga至少2g,同時注意要求至少1300個以上的大頁面。

(3)對於mgmtdb,我們可以設定use_large_pages=false禁用mgmtdb使用hugepage。

(4)如果多個資料庫共享乙個主機,但是如果我們提前把hugepage的配置能覆蓋到所有instance,那麼就不存在什麼問題。在11g中,有use_large_page引數,預設值為true。即預設嘗試配合os使用hugepage。但是在11.2.0.2的時候,如果hugepage不夠cover sga,會導致資料庫啟動不了。在11.2.0.3以後,oracle會在hugepage不夠的情況下,將使用small page來彌補剩餘的page,從而啟動資料庫(doc id 1392497.1)

(5)禁用transparent hugepages(doc id 1557478.1)

SQLite使用的一些問題

1 檢視裡支援as也支援 表名.欄位名 這種寫法 create view 檢視名稱 as select 專案列表.專案id as 序號,專案列表.專案名 as 姓名,屬性分類列表.屬性名 as 屬性名,屬性值列表.屬性值 as 屬性值 from 專案列表,屬性值列表,屬性分類列表 where 屬性值...

yum使用的一些問題

1.軟體安裝 yum y install y表示安裝過程中全部選yes 2.如果出現database disk image is malformed則先執行 yum clean dbcache 3.安裝epel時出現error cannot retrieve metalink for reposit...

Element UI 使用的一些問題

el table column 使用v show不生效,在使用v if時加入 key math.random 以防止列亂序 僅為帶有v if的列加上 key可能依舊不能解決問題,可以嘗試為所有列均加上 key el input 限制只能輸入整數並且限制2位 2 value value.slice 0...