設定MySQL使用大記憶體頁面

來源:互聯網
上載者:User

一般情況下使用的記憶體為每頁4K,使用 huge page 的話預設是每頁 2M。如果設定MySQL使用 huge page 至少有兩個好處,一個是可以減少 Translation Lookaside Buffer (TLB) 失誤以提高效能,另一個是利用 huge page不會swap的特性保證MySQL的記憶體不會被交換到swap中。
MySQL 5.0.3之後在linux上支援huge page,可以使用 large-page 選項啟動MySQL。
當然還有一些相關的系統設定。


echo 400 > /proc/sys/vm/nr_hugepages

這個指定總共huge page的頁數,可以放到/etc/rc.local中。由於分配時需要有連續的記憶體空間,所以如果在運行了一段時間的系統上執行,可能無法分配到指定的數量,即使還有足夠的記憶體。

之後還需要設定核心參數kernel.shmmax和kernel.shmall,否則MySQL啟動時會報22的錯誤

InnoDB: HugeTLB: Warning: Failed to allocate 536887296 bytes. errno 22

shmmax是最大的共用記憶體段的大小,單位是位元組,預設32M,肯定是不夠的,這個應該比innodb_buffer_pool要大。shmall是共用記憶體的總大小,單位是頁,預設2097152(8G)。可以使用sysctl -w或者在/etc/sysctl.conf中設定。

除此還需要設max locked memory,使用ulimit -l或設定/etc/security/limits.conf,否則會報12的錯誤:

Warning: Failed to allocate 31457280 bytes from HugeTLB memory. errno 12

MySQL啟動之後可以使用

grep Huge /proc/meminfo

查看huge page的使用方式。

HugePages_Total:   400
HugePages_Free: 128
Hugepagesize: 2048 kB
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.