欧美性猛交黑人xxxx,成人毛片一区二区三区,久久综合九色综合精品,男的把j放进女人下面视频免费

32位Linux設(shè)置超大Oracle SGA的分析

  • 發(fā)布于:2022-09-03
  • 265 人圍觀

有不少用戶認(rèn)為在32位Linux,只能設(shè)置約1.7GB的Oracle SGA。也有不少用戶在不同的Linux發(fā)行版中使用相同的配置過程,獲得了不同的SGA最大值,便認(rèn)為某些Linux發(fā)行版存在問題。這些想法都比較片面。實(shí)際上 32位Linux上Oracle SGA 的容量取決于三個(gè)指標(biāo),即:Linux kernel 版本、Oracle Database 版本、Linux 內(nèi)核參數(shù)shmmax。這里跟據(jù)一些網(wǎng)上文章做了些查正,做一些分析吧。

一、內(nèi)核版本的影響

在32位Linux平臺,至少都有兩套內(nèi)核供用戶使用。一個(gè)是smp核心,一個(gè)是hugemem核心。兩個(gè)核心的區(qū)別在于直接映射的內(nèi)核數(shù)據(jù)代碼地址空間的區(qū)別:

SMP 核心:

在x86架構(gòu)下,虛擬地址空間的大小為4G。在這4G空間中,用戶空間占3G (0×00000000到0xbfffffff),核心空間占1G(0xc0000000到0xffffffff)。這樣的分配策略稱為3G/1G分配。

具體的分配方式如下:

1. 0GB-1GB User space - Used for text/code and brk/sbrk allocations (malloc uses brk for small chunks)

2. 1GB-3GB User space - Used for shared libraries, shared memory, and stack; shared memory and malloc use mmap (malloc uses mmap for large chunks)

3. 3GB-4GB Kernel Space - Used for the kernel itself

這種分配方式對于擁有1G物理內(nèi)存以下的系統(tǒng)是沒有任何問題的,即使超過1G物理內(nèi)存,3G/1G分配策略也沒有什么問題,因?yàn)閮?nèi)核可以在高端內(nèi)存區(qū)域 (物理地址1G以上的內(nèi)存)中存放一些內(nèi)核數(shù)據(jù)結(jié)構(gòu)(比如頁緩沖等)。

然而,隨著物理內(nèi)存的增多,3G/1G分配策略的問題也逐漸會暴露出來。這是因?yàn)橐恍╆P(guān)鍵的內(nèi)核數(shù)據(jù)結(jié)構(gòu) (比如用于管理物理內(nèi)存的mem_map[]) 是存放在1G核心空間之內(nèi)的。對于32G內(nèi)存的系統(tǒng),mem_map[]會占用近 0.5G的低端內(nèi)存(物理地址896M以下的內(nèi)存),這樣留給核心其他部分的內(nèi)存就不到所有內(nèi)存的1.5%;而對于64G內(nèi)存的系統(tǒng),mem_map[] 本身就會耗盡所有的低端內(nèi)存,造成系統(tǒng)無法啟動。但是把mem_map[]放到高端內(nèi)存的做法也不太實(shí)際,因?yàn)閙em_map[]和內(nèi)存管理,體系結(jié)構(gòu)相關(guān)底層實(shí)現(xiàn),文件系統(tǒng)以及驅(qū)動等幾乎所有的核心的關(guān)鍵部分均有聯(lián)系,這時(shí)候就需要使用hugemem核心了。

hugemem 核心:

與SMP的3G/1G策略不同,hugemem 使用4G/4G分配方式。可以使核心空間由1G增加到4G,而用戶空間也由3G增加到4G。

相比3G/1G分配策略,對于4G物理內(nèi)存系統(tǒng),使用4G/4G分配可以增加低端內(nèi)存達(dá)3倍以上,而對于32G物理內(nèi)存系統(tǒng),則會有更多的提升,達(dá)到原來的6倍。 理論上,4G/4G策略可以支持物理內(nèi)存達(dá)200G的x86系統(tǒng)(如果硬件沒有限制的話),即使對于這樣的系統(tǒng),4G/4G策略也能保證留有1G可用的低端內(nèi)存。

不論能否理解上面的解釋,只須要記住 smp 和 hugemem 兩個(gè)核心,一個(gè)是 3G/1G策略,一個(gè)是4G/4G策略即可。

二、Oracle Database 版本:

Oracle SGA 是掛載在內(nèi)存用戶空間中,不同版本的 Oracle Database ,掛載SGA起始地址是不同的:

Oracle 10g Release 1:掛載SGA的起始地址為0×50000000(1.25GB)

Oracle 10g Release 2:掛載SGA的起始地址為0×20000000(0.5GB)

(其它版本未查正,有興趣可以自已看看Oracle手冊)

從這個(gè)結(jié)果可以看出,理論上若使用3G/1G的smp核心,Oracle 10g Release 1 的SGA可設(shè)置到 3GB - 1.25 = 1.75GB 。正是因此,也有人認(rèn)為Oracle SGA 只能設(shè)置到 1.75GB。而升級至 R2 版本,則可以設(shè)置到 3GB - 0.5GB = 2.5GB 。相同的,使用 4G/4G 的hugemem 核心能夠獲得多大的SGA 就很清楚了。

三、kernel shmmax 參數(shù):

shmmax定義單個(gè)共享內(nèi)存段的最大值,它的取值范圍區(qū)間是[0,4294967295], 單位為byte,4294967295 bytes即4294967296 bytes(4GB)減去1。一般來說,它應(yīng)該足夠大以容下整個(gè)SGA,避免SGA使用多個(gè)共享內(nèi)存段造成Oracle性能下降。

萬企互聯(lián)
標(biāo)簽: