轉摘_如何使linux擴充套件使用 大記憶體
在linux中,預設的記憶體頁面是4096位元組,而現行物理裝置中,記憶體動輒幾十G,當系統執行記憶體較大的應用程式(比如資料庫)時,過小的記憶體頁面會產 生大量的TLB miss和缺頁中斷,將大大降低程式效能。Hugepages提供了2M到256M的大記憶體頁面(大小取決於核心版本和物理架構)來代替預設的頁面大小.
使用Hugepages可以得到更好的效能,因為Hugepages不可交換,可以避免記憶體的換入換出,對一個Oracle database,可以將使用的SGA作為Hugepages釘住,會整體上提升db的效能。Oracle推薦在64bit Linux上對大記憶體資料庫使用Hugepages.
以RHEL4 64bit為例,配置Hugepages過程如下:
1 更改os引數,配置Hugepages大小
Hugepages需設定為比SGA略大一點,過大的設定會造成記憶體浪費,過小則會造成無法使用。
(1)修改/etc/sysctl.conf引數,增加vm.nr_hugepages=”
注意vm.nr_hugepages的單位,其值為需要設定成Hugepages的總記憶體大小/Hugepages的頁面大小.
HugePages的頁面大小可以這樣獲得:
[root@jss01 ~]# grep Hugepagesize/proc/meminfo
Hugepagesize: 2048 kB
(2) 修改/etc/security/limits.conf,增加locked memory的最大限制,設定成大於等於sga大小。
* soft memlock
* hard memlock
2.重新啟動db,檢查是否生效
[root@jss01 ~]# grep Huge /proc/meminfo
HugePages_Total: 4000
HugePages_Free: 0
Hugepagesize: 2048 kB
HugePages_Free表示剩餘的大記憶體頁面數,應該是接近為0的數字。
在32bit OS中,使用Hugepages是為了配合大記憶體擴充套件,由於32bit OS的定址空間限制,使用的SGA有限。儘管可以透過降低Oracle軟體的mapped_base(掛載地址)來實現sga的擴充套件,但無法突破4G制 約。而透過VLM (Very Large Memory)技術,hugemem核心的OS可以將SGA最大記憶體擴充套件到62Gb(smp核心最大支援14Gb SGA).在kernel 2.6之後,實現VLM可以藉助hugepages+in-memory filesystem (ramfs)。
需注意的是,使用VLM,將不能使用SGA自動動態調整功能。
以RHEL4 32bit為例,具體步驟如下:
1.建立ramfs
[root@jss01 ~]umount /dev/shm
[root@jss01 ~]mount -t ramfs ramfs /dev/shm
[root@jss01 ~]chown oracle:oinstall /dev/shm
2.配置os引數和Hugepages大小(步驟略,同上)
3.配置db parameter
32bit擴充套件大記憶體需要犧牲掉一些特性,引數檔案裡面,需要做如下改動:
(1) 移除DB_CACHE_SIZE/DB_xK_CACHE_SIZE等引數,用以老引數DB_BLOCK_BUFFERS代替。
(2) 設定 USE_INDIRECT_DATA_BUFFERS=TRUE
(3) 移除sga_target(11g memory_target/memory_max_target)等引數
4.重啟instance/驗證
對於不存在Hugepages功能的更早的一些核心版本(比如RHAS 2,可以透過bigpages+in-memory filesystem(shmfs)來實現大記憶體擴充套件.
注意,與在32bit下VLM使用Hugepages不同的是,在64bit Linux下使用Hugepages並不需要修改資料庫引數。當然,在物理裝置飛速發展的今天,還是儘快升級到你手頭的32bit OS到64bit OS上來吧,何必在去為一些記憶體擴充套件苦苦折騰.
具體可參考Metalink Note 261889.1 317141.1 361468.1 361323.1等
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-629795/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Story摘錄(三)————可擴充套件設計 (轉)SQL套件
- [擴充套件推薦]簡體轉繁體/繁體轉簡體 OpenCC-PHP 擴充套件套件PHP
- 手把手教您擴充套件虛擬記憶體套件記憶體
- Linux 核心使用的 GNU C 擴充套件(轉)Linux套件
- 給PHP開啟shmop擴充套件實現共享記憶體PHP套件記憶體
- Laravel 使用 laravel-excel擴充套件包(maatwebsite/excel)匯入報記憶體溢位LaravelExcel套件Web記憶體溢位
- linux下線上擴大擴充套件分割槽的方法Linux套件
- 如何擴充套件Django使用者模組套件Django
- GNUC擴充套件:Linux作業系統的核心使用(轉)套件Linux作業系統
- 工業和消費者HMI系統中的擴充套件記憶體套件記憶體
- 繁體簡體互轉 OpenCC-PHP 擴充套件PHP套件
- 大資料——Scala擴充套件大資料套件
- 知識庫(2)-使用Windows OpenGL擴充套件機制來訪問OpenGL擴充套件 (轉)Windows套件
- PDF 擴充套件包使用套件
- Linux記憶體使用的體會(轉)Linux記憶體
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 使用Kotlin擴充套件函式擴充套件Spring Data案例Kotlin套件函式Spring
- OpenGL 1.3 最新擴充套件 (轉)套件
- 擴充套件你的STRUTS (轉)套件
- iPhone 16GB不夠用 記憶體卡擴充套件強機盤點iPhone記憶體套件
- 電腦記憶體怎麼擴大 如何更改電腦記憶體大小記憶體
- 擴充套件包 Laravel-compass 使用筆記套件Laravel筆記
- 乾貨丨如何水平擴充套件和垂直擴充套件DolphinDB叢集?套件
- 如何擴充套件大規模Web網站的效能?套件Web網站
- 如何在 Linux 中擴充套件 XFS 根分割槽Linux套件
- php新增pcntl擴充套件(Linux)PHP套件Linux
- 擴充套件Linux網路棧套件Linux
- Linux擴充套件邏輯卷Linux套件
- 教你如何擴大電腦的虛擬記憶體? 什麼是虛擬記憶體?記憶體
- 使用 Rust 建立 PHP 擴充套件RustPHP套件
- 在 Linux 下使用 fdisk 擴充套件分割槽容量Linux套件
- 教你如何進行 linux swap 交換記憶體擴容Linux記憶體
- WCF擴充套件:行為擴充套件Behavior Extension套件
- 【記錄】安裝 maxminddb 擴充套件套件
- [記錄] 安裝 maxminddb 擴充套件套件
- [WPF]標記擴充套件(Markup Extension)套件
- 可擴充套件性筆記一套件筆記
- gcc核心擴充套件linuxforum(轉)GC套件Linux