最近、圧力試験のパフォーマンスに関連したことをやってきた、読者の公共の相談件数は、データベース・サーバは、私が聞いた巨大ページのパフォーマンスが向上している何のオープン巨大なページを持っていない賞賛しているがあり、我々はそれをチェックアウトします。もちろん、興味を持っていないのは、直接的な結論を見ることができます。
二つの巨大なページコンテキスト
2.1なぜ巨大ページ
あなたはそれがデフォルトのページ・サイズは4キロバイトで使用しているため、LinuxのCaozuojitongに大きなメモリフットプリントのアプリケーションを実行し、大幅アプリケーションのパフォーマンスに影響を与える、より多くのTLBミスやページフォルトが生成されます。場合には 2メガバイトのページングを持つユニットとしてときCaozuojitongはさらに大きく、大幅にTLBミスやページフォルトの数を削減し、大幅にアプリケーションのパフォーマンスを向上します。Linuxカーネルの直接導入が大きなページをサポートしています理由です。利点は明白です、Caozuoxitong場合は単位として4KBのページに、メモリの2メガバイトにそのアプリケーションのニーズを想定し、あなたは512ページを必要とし、順番に、TLBに512個のエントリを必要とするだけでなく、512ページテーブルエントリ、操作を必要としますシステムは、物理メモリの空間アプリケーションの全体の2メガバイトをマッピングするために少なくとも512倍、512倍TLBミスページフォールトを受ける必要があるが、2メガバイトCaozuoxitongの基本単位ページングとして、一度だけTLBミスとページフォールトを使用する場合、宇宙アプリケーションの缶2メガバイトは(何のTLBエントリを想定していないと発生しスワップを置き換える)TLBミスやページフォルトを経由することなく、実際の状況のマッピングを確立し、動作中にすること。
コストを最小限に抑えるために大規模ページのサポートを有効にするために、2Mバイトをラージ・ページ・サポートされているLinuxオペレーティング・システムは、特殊なファイルシステムをhugetlbfs。このラージ・ページのサポートの形で特別なファイル・システムの実施形態では、柔軟性が大きい2メガバイトページを使用することを余儀なくされることなく、必要に応じてアプリケーションの仮想メモリページサイズを選択するようになっています。ビア(InnoDBは大きなメモリページを使用可能)
2.2 HugePageの利点:
1.増加TLBヒット率
2.Pageは、メモリ交換を減少、メモリにロックされています。
3.ロックメモリは、メモリが解放され、フットプリントが得られた性能劣化を低減します。
4.メモリ性能を向上させ、CPUの負荷を軽減します。
三つのmysqlの方法巨大ページ
巨大なページは、異なるシステムの大きさは、私たちが2Mにcentos7巨大なページサイズのデフォルトを使用し、異なる場合があります。
どのように多くの巨大なページ3.1コンピューティング・ニーズ
まず、巨大なページを有効にする前に、MySQLを使用するために割り当てられたどのように多くの巨大なページを計算しなければなりません。一般的なアドバイスは、mysqlの総メモリサイズ+ 10%を使用することです。計算
S =(query_cache_size + table_open_cacheの+ innodb_buffer_pool_size + innodb_log_file_size + performance_schema.memory)+ 10%
だから、数の大きさは巨大ページです
vm.nr_hugepages = S / 2M
巨大なページを使用して3.2に設定mysqlユーザグループ
あなたは、mysqlのID mysqlグループIDであります
#ID mysqluid = 27(MySQLの)GID = 27(MySQLの)グループ= 27(MySQLの)
エコー27>に/ proc / sys / vm / hugetlb_shm_group
3.3 memlock限界は、MySQLユーザ「無制限」値を提供します
編集上昇/etc/security/limits.confを
#<ドメイン> <タイプ>の<item> <値>
#1
#where:
#<ドメイン>することができる:
# -ユーザー名Aの
# -限定されるものではない示し@mysql MySQLユーザグループ
##のhugepagesを使用して配置されたMySQLの
@mysql
ソフト無制限MEMLOCK
@mysql
ハードMEMLOCK無制限
[mysqldを]内部での編集のmy.cnf増加
large_pages = 1
3.4力hugepageに入るかどうかを確認
#猫の/ proc / meminfoに| grepのHugeAnonHugePages:1294336 kBHugePages_Total:5834HugePages_Free:1394HugePages_Rsvd:921HugePages_Surp:0Hugepagesize:2048キロバイト
0の値なし、HugePagesFree少ないHugePagesTotal以上が存在しないこと。
あなたが遭遇する可能性のあるMySQLは3.5起動時の問題
MySQLを起動すると、エラーを報告する可能性が最も高いです。
[警告]のInnoDB:140509184バイトの割り当てに失敗しました。errnoを12 [警告] InnoDBは:従来のメモリ・プールを使用
なぜなら、高い確率の先端の上に表示されます
1.nr_hugepages値* 2MのInnoDBがnr_hugepagesをの値を調整するために使用されるメモリのサイズよりも小さいです。
2. memlockのMySQLユーザグループに対して設定されています。MySQLを起動すると、ulimitので-a最大を見て確認してくださいメモリセットが合理的であるロックされました。
3.6圧力試験結果
7.10 3.10カーネルCentOSのOS
DB関連パラメータ測定された圧力
性能に大きなページオープンで未開封の無差の2つのインスタンス。そして、一貫性のないパフォーマンスでオンライン情報が改善されます。
四つの概要
情報によると、私は公式文書やインターネットを持っている、大規模なページメモリを開くための手順をチェックアウトすることは珍しいことではないが、圧力は2回測定しました。測定された巨大なページの読者や友人は、パフォーマンスの向上を持っている圧力がある場合には、学習のメッセージ相互交流を残してください。
参考記事
公式ドキュメント
https://dev.mysql.com/doc/refman/5.7/en/large-page-support.html
InnoDBは、大きなメモリページを有効にします
https://www.cnblogs.com/gomysql/p/3627915.html
巨大なページは、パフォーマンスの万能薬を保存するかどうかですか?
http://cenalulu.github.io/linux/huge-page-on-numa/