
記事のトピックに戻って、PostgreSQLで大きなページをサポートします。 正直に言うと、私はこれを長い間待っていました。 一般に、以前はlibhugetlbfsを使用して、ラージページをサポートしたPostgreSQLを実行できました。 ただし、現在は組み込みのサポートがあります。 そのため、以下は、ラージページをサポートするPostgreSQLのセットアップと実行のプロセスの説明です。
まず、カーネルがラージページをサポートしていることを確認する必要があります。 CONFIG_HUGETLBFSおよびCONFIG_HUGETLB_PAGEオプションが存在するかどうか、カーネル構成を確認します。
# grep HUGETLB /boot/config-$(uname -r) CONFIG_CGROUP_HUGETLB=y CONFIG_HUGETLBFS=y CONFIG_HUGETLB_PAGE=y
これらのオプションがない場合、何も機能せず、カーネルを再構築する必要があります(たとえば、Gentooに関連)。
明らかに、PostgreSQLバージョン9.4が必要です。 パッケージのインストールとクラスターの初期化はバックグラウンドで行うため、 分布に応じて、方法は異なります。 すぐにpostgresql.conf構成ファイルに進みます。 huge_pageパラメーターは、3つの値を取ることができるラージページのサポートを担当します。 オフ -ラージページを使用しない、 オン -ラージページを使用する、 試す -ラージページを使用する、そしてアクセスできない場合は通常のページを使用するようにロールバックします。 try値はデフォルトで使用され、安全なオプションです。 onの場合、システムでラージページが定義されていない(または十分な数がない)場合、サービスは開始されません。 開始の場合、次のエラーを受け取る可能性があります。
致命的:匿名共有メモリをマップできませんでした:メモリを割り当てることができません
ヒント:通常、このエラーは、PostgreSQLの共有メモリセグメントに対する要求が、使用可能なメモリ、スワップ領域、または巨大ページを超えたことを意味します。 要求サイズ(現在148324352バイト)を減らすには、おそらくshared_buffersまたはmax_connectionsを減らして、PostgreSQLの共有メモリの使用量を減らします。
したがって、postgresql.confを修正します(私のpostgresql.confはRHELベースのディストリビューションの標準の場所にあります)。
# vi /var/lib/pgsql/9.4/data/postgresql.conf huge_page = try
システムの大規模ページのサポートを有効にしました。デフォルトでは、それらは関与していません。 ページの計算は概算です。ここでは、DBMSのニーズに割り当てる準備ができているメモリ量に依存する必要があります。 値は2Mbページで測定されることに注意してください。16GBを割り当てたい場合、8000ページになります。
公式文書では、postmasterプロセス番号に対応する/ proc / PID /ディレクトリにあるステータスファイルのVmPeak値に依存することを推奨しています。 VmPeakは、その名前が示すとおり、仮想メモリ使用量のピーク値です。 このオプションを使用すると、開始する最小バーを決定できますが、私の判断では、この決定方法も本質的にランダムです。
# head -1 /var/lib/pgsql/9.4/data/postmaster.pid 3076 # grep ^VmPeak /proc/3076/status VmPeak: 4742563 kB # echo $((4742563 / 2048 + 1)) 2316 # echo 'vm.nr_hugepages = 2316' >> /etc/sysctl.d/30-postgresql.conf # sysctl -p --system
PostgreSQLの起動に進みます。 初期化システムに応じて、開始方法が異なる場合があります、私はトレンディな若者を持っていますsystemd。
# systemctl start postgresql-9.4.service
大きなページのリサイクルについては、こちらをご覧ください。
# grep ^HugePages /proc/meminfo HugePages_Total: 2316 HugePages_Free: 2301 HugePages_Rsvd: 128 HugePages_Surp: 0
それだけです。特定のワークロードでベンチマークにアクセスできます。 ご清聴ありがとうございました!