RHEL6、CentOS6の64ビットサポートとhuge pagesについてオンラインマニュアルを読んでまとめました。
(1)64ビットかどうかの確認方法
①CPUが32ビットか64ビットか?
$ cat /proc/cpuinfo
“flags”欄に”lm”の文字があれば64ビット
②OSが32ビットか64ビットか?
$ uname -m
(2)64ビットのサポート
・64ビットのプロセッサーは、理論的には最大16エクサバイトのメモリーを使用できる。
・”Huge pages”、”transparent huge pages”、”Non-Uniform Memory Access(NUMA)”の改善によって、より大型のメモリブロックの使用が可能となる。
(3)huge pages、transparent huge pages
1)pages
・メモリはpagesとよばれるブロックで管理されている。
・1pageは4096バイト、メモリ1MBは256pagesと同等で、1GBは256,000pagesと同等。
・CPUにはビルトインのメモリ管理ユニットがあり、これらのページの一覧が含まれている。また各ページは、ページテーブルエントリで参照されている。
2)システムが大量のメモリを管理できるようにするには?
・以下の二つの方法がある。
①ハードウェアのメモリ管理ユニットでページテーブルエントリの数を増やす
②ページサイズを拡大する
・現在のプロセッサーでは、ハードウェアのメモリ管理ユニットは数百から数千のページテーブルエントリのみをサポートするので、上記①の方法は費用がかさむ。
さらに、数千ページ(メガバイトのメモリ)でうまく機能するハードウェアとメモリ管理のアルゴリズムは、数百万(さらには数十億)のページではうまく実行できない可能性があり、パフォーマンス上の問題につながる。
メモリ管理ユニットがサポートする以上のメモリページをアプリケーションが使う必要がある場合、システムはより遅い、ソフトウェアベースのメモリ管理にフォールバックするので、システム全体が遅くなってしまう。
・RHEL6では、huge pagesを使って②の方法を実行している。
3)huge pages
・huge pagesが実装されたことで、システムは異なるメモリーワークロードにまたがってメモリー使用を効率的に管理できるようになった。
・huge pagesは、標準の4KBページと比較すると動的に2MBページを利用するので、アプリケーションはギガバイトやさらにはテラバイトのメモリー処理中にうまく拡張ができる。
・huge pagesは手動で作成、管理、使用するのは難しい。
これに対処するため、RHEL6にはtransparent huge pages(THP)を実装している。THPは、huge pages の作成、管理、使用の多くを自動化する抽象化レイヤー。
4)transparent huge pages(THP)
・huge pagesの使用における複雑性の多くをシステム管理者や開発者から取り除く。
・THPの目標はパフォーマンス改善なので、開発者は幅広いシステムや設定、アプリケーション、ワークロードでTHPをテスト、最適化している。
これにより、デフォルト設定のTHPはほとんどのシステム設定のパフォーマンスを改善できる。
ただし、THPはデータベースのワークロードには推奨されない。
THPが現在マッピング可能なのは、ヒープやスタック領域などの匿名メモリリージョンのみ。 関連記事の目次
-
システム管理
- CentOSのブートの流れ、ランレベルの指定
- CentOS6のrc.sysinitスクリプトの処理内容の概要
- procファイルシステムの概要
- sysctlコマンドでカーネルパラメータの参照、変更
- cron、anacronで自動定期実行
- at、batchコマンドの概要
- CentOS6のシステムログ
- rsyslogの設定方法
- システムログのローテート設定
- CentOSのハードウェア情報を表示するコマンド
- CentOSでパーティション、スワップ、ディスク情報を確認
- LinuxのLVMの概要と表示コマンド
- ボリュームグループ、論理ボリューム作成、ファイルシステム作成、マウント設定、物理ボリュームを追加
- CentOSで論理ボリューム、ext4ファイルシステムを拡張
- CentOSのLVMでボリュームグループから物理ボリュームを削除
- WindowsからCentOS6にリモートデスクトップする手順
- viエディタの使用方法
- HTMLのマニュアルをLinuxのターミナル画面上で読む
- findコマンドで直近に更新されたファイルを調べる方法
- Linuxでディスク使用量が多いディレクトリを調べる方法(1)
- Linuxでディスク使用量が多いディレクトリを調べる方法(2)
- psコマンドで全プロセスを表示する方法と表示結果の見方
- プロセス階層、プロセスグループ、セッションを確認するには?
- psコマンドでスレッドに関する情報を表示するには?
- netstat、nmapを使ってリッスンポートを確認する方法
- vmstatコマンドでシステムの状況をモニター
- シェル変数と環境変数の違い
- CentOSのユーザー環境設定ファイル(bashrc、profile)
- 日本語設定、シェル環境設定
- umaskはどこで設定されている?
- CentOS6の各種ネットワーク設定ファイルとインタフェース制御スクリプト
- CentOS6のTCPラッパーの概要と設定方法
- LinuxのNetworkManagerプロセスの概要
- CentOS6のユーザー管理の概要とコマンド操作
- ファイルのパーミッション設定、ディレクトリは要注意
- Linuxでスティッキービットが設定されているか確認する方法
- sudoで特定のコマンドのみをroot権限で実行する
- RHEL6、CentOS6の64ビットサポートとhuge pages
- RHEL6、CentOS6の64ビットサポートとNUMA
Linuxコマンド操作
シェル環境設定
ネットワーク関連
ユーザー管理、権限
64ビットサポート
-
CentOSの概要
- RHEL6、CentOS6の64ビットサポートとhuge pages
- RHEL6、CentOS6の64ビットサポートとNUMA
- CentOS6インストール手順のメモ
- CentOSのブートの流れ、ランレベルの指定
- procファイルシステムの概要
- sysctlコマンドでカーネルパラメータの参照、変更
- CentOS6の各種ネットワーク設定ファイルとインタフェース制御スクリプト
- cron、anacronで自動定期実行
- at、batchコマンドの概要
- CentOS6のシステムログ
- rsyslogの設定方法
- システムログのローテート設定の確認
- CentOSのハードウェア情報を表示するコマンド
- CentOSでパーティション、スワップ、ディスク情報を確認
- LinuxのLVMの概要と表示コマンド
- ボリュームグループ、論理ボリューム作成、ファイルシステム作成、マウント設定、物理ボリュームを追加
- CentOSで論理ボリューム、ext4ファイルシステムを拡張
- CentOSのLVMでボリュームグループから物理ボリュームを削除
- WindowsからCentOS6にリモートデスクトップする手順
- viエディタの使用方法
- HTMLのマニュアルをLinuxのターミナル画面上で読む
- findコマンドで直近に更新されたファイルを調べる方法
- Linuxでディスク使用量が多いディレクトリを調べる方法(1)
- Linuxでディスク使用量が多いディレクトリを調べる方法(2)
- ディスク使用量が多いディレクトリを抽出するbashスクリプト
- psコマンドで全プロセスを表示する方法と表示結果の見方
- プロセス階層、プロセスグループ、セッションを確認するには?
- psコマンドでスレッドに関する情報を表示するには?
- netstat、nmapを使ってリッスンポートを確認する方法
- 日本語設定、シェル環境設定
- CentOSのユーザー環境設定ファイル(bashrc、profile)
- umaskはどこで設定されている?
- シェル変数と環境変数の違い
- CentOSのネットワークフィルタリング設定を一から行う
- CentOS6のTCPラッパーの概要と設定方法
- CentOS6のユーザー管理の概要とコマンド操作
- ファイルのパーミッション設定、ディレクトリは要注意
- Linuxでスティッキービットが設定されているか確認する方法
- sudoで特定のコマンドのみをroot権限で実行する
システム管理
Linuxコマンド操作
シェル環境設定
ネットワーク関連
ユーザー管理、権限