この章では、SUSE Linux Enterprise Server for SAP ApplicationsがSAPアプリケーションと最適に連携できるようにチューニングする方法について説明します。
SUSE Linux Enterprise Server for SAP Applicationsでは、sapconf
とsaptune
のいずれかを選択できます。ただし、saptune
は、より多くの機能を提供する、より精巧なツールです。
sapconf
コマンドは削除されました
SUSE Linux Enterprise Server、およびSUSE Linux Enterprise Server for SAP Applications 11/12では、sapconf
コマンドは同じ名前のパッケージに含まれていました。
SUSE Linux Enterprise ServerおよびSUSE Linux Enterprise Server for SAP Applications 15では、これが変更されました。コマンドsapconf
は、
sapconf パッケージから削除されました。このパッケージには、systemd
サービスのみが含まれています。sapconf
コマンドラインツール、sapconf
/tuned
プロファイル、tuned
は現在はありません。
sapconf
4を使用したシステムのチューニング #
パッケージsapconf
は、SUSE Linux Enterprise ServerおよびSUSE Linux Enterprise Server for SAP Applicationsで使用できます。このパッケージには、tuned
プロファイルsapconf
が含まれています。この単一のチューニングプロファイルは、次のタイプのSAPアプリケーション(SAP NetWeaver、SAP HANA、およびSAP HANAベースのアプリケーション)に推奨されるパラメータを設定します。
sapconf
4の概要 #sapconf
4 (tuned
ベース)sap-netweaver
(tuned
プロファイル)
sap-hana
(tuned
プロファイル)
sap-bobj
(tuned
プロファイル)
sap-ase
(tuned
プロファイル)
sapconf
4の概要 #sapconf
4 (tuned
ベース)sapconf
(tuned
プロファイル)
以前、システムチューニングに変更を行った場合は、これらの変更がsapconf
プロファイルによって上書きされる可能性があることに注意してください。
sapconf
は、次の2つの主要部分で構成されています。
tuned
および関連サービスが実行され、sapconf
プロファイルが確実に適用されるようにするsystemd
サービス。
スクリプトおよび設定ファイルを使用して、設定されたsapconf
チューニングパラメータを適用する tuned
プロファイルsapconf
。
sapconf
を使用するには、パッケージ tuned および
sapconf がシステムにインストールされていることを確認します。
SUSE Linux Enterprise ServerおよびSUSE Linux Enterprise Server for SAP Applications 15以降では、単一のtuned
プロファイルsapconf
のみが付属しています。これは、それより前のバージョンのSUSE Linux Enterprise Server for SAP Applicationsに付属していたプロファイルsap-hana
/sap-netweaver
と同等です。
sapconf
の有効化/無効化、およびそのステータスの表示 #
sapconf
のインストール後、tuned
が有効になり、sapconf
プロファイルがアクティブ化されます。ただし、別のtuned
プロファイルがすでに有効になっている場合、sapconf
は独自のtuned
プロファイルを有効にしません。
sapconf
ですべてのチューニングパラメータを適用するようにするには、インストール後にコンピュータを再起動してください。
sapconf
のステータスは、以下に記載される方法で検査または変更できます。
サービスsapconf
のステータスを確認するには:
root #
systemctl status sapconf
サービスはtuned
の開始のみを担当し、その後終了するため、「アクティブ(終了済み)」として表示される必要があります。
サービスsapconf
、およびそれとともにサービスtuned
を開始するには:
root #
systemctl start sapconf
sapconf
が無効な場合は、次のコマンドを使用して有効にし、起動します。
root #
systemctl enable --now sapconf
サービスsapconf
、およびそれとともにサービスtuned
を停止するには:
root #
systemctl stop sapconf
これにより、tuned
も停止されるため、最適化のほとんどの部分がただちに無効にされます。ただし、システムを再起動する必要があるオプションは、この例には入りません。
sapconf
を無効にするには、次のコマンドを使用します。
root #
systemctl disable sapconf
sapconf
が、ユーザが特定するサービスを特別に有効にしていない場合は、ほとんどのチューニングパラメータと、sapconf
が使用するすべてのサービスも無効になります。
同様に、基本サービスtuned
のステータスを検査および変更できます。
サービスtuned
のステータスを確認するには:
root #
systemctl status tuned
現在使用中のtuned
プロファイルを確認するには:
root #
tuned-adm active
このコマンドが現在アクティブなプロファイルの名前をsapconf
として返さない場合は、そのプロファイルを有効にします。
root #
tuned-adm profile sapconf
sapconf
が依存する追加のサービス
sapconf
サービス自体とtuned
サービスに加えて、sapconf
は、次の2つのサービスにも依存します。
システムアクティビティに関するデータを収集するsysstat
。
多くのプロセッサコアが関与する設定でも固有であることが保証されている時間ベースのUUIDを生成するuuidd
。これはSAPアプリケーションに必要です。
sapconf
4の設定 #
一般に、sapconf
のデフォルト設定では、SAPによって推奨されるパラメータ値をすでに使用しています。ただし、特別なニーズがある場合は、それらに合わせてツールを設定できます。
sapconf
の設定は、さまざまな方法で設定可能な2つの部分に分かれています。
/usr/lib/tuned/PROFILE/tuned.conf
このパターンに従うすべてのファイルは、手順8.1「sapconf
4プロファイルの設定」のように編集できます。このファイルからパラメータを設定するには、まず、/etc/tuned
の下のtuned
のカスタムプロファイルディレクトリにコピーしてから、その中の値を変更します。代わりに所定の場所のファイルを変更する場合は、
sapconf パッケージの次のアップデートで加える変更は保存されません。
次の手順は、/usr/lib/tuned/sapconf/tuned.conf
ファイルを調整する方法の例を示すものです。すでに述べたように、これはどのプロファイルでも可能です。次の手順でファイルを設定します。
sapconf
4プロファイルの設定 #
新しいカスタムtuned
プロファイルディレクトリを作成して、tuned.conf
ファイルをコピーします。
root #
mkdir /etc/tuned/sapconfroot #
cp /usr/lib/tuned/sapconf/tuned.conf /etc/tuned/sapconf/
新しくコピーしたtuned.conf
内で、script.sh
への参照を修正して、元のプロファイルからスクリプトを指す絶対パスを使用するように指定します。
script = /usr/lib/tuned/sapconf/script.sh
代わりにscript.sh
をコピーしないでください。sapconf
をアップデートする際に互換性に問題が発生します。
/etc/tuned/sapconf/tuned.conf
のパラメータを編集します。
sapconf
をアップデートするたびに、元のコンテンツとカスタムtuned.conf
のコンテンツを比較してください。
このファイルに関連するログメッセージは、/var/log/tuned/tuned.log
に書き込まれます。
/etc/sysconfig/sapconf
このファイルには、sapconf
のほとんどのパラメータが含まれています。このファイルのパラメータは、先に述べたスクリプト/usr/lib/tuned/sapconf/script.sh
を使用して適用されます。
このファイルは直接編集できます。このファイルのパラメータはすべて、コメントやSAP Notesの参照資料で説明されています。参照資料は、https://launchpad.support.sap.com/で参照可能です。
sapconf
がアップデートされると、このファイルからカスタマイズされたすべてのパラメータが可能な限り保持されます。ただし、パラメータは、新しい設定ファイルにクリーンな状態で転送できない場合があります。したがって、アップデート中に/etc/sysconfig/sapconf.rpmsave
に移動された以前のカスタム設定と、/etc/sysconfig/sapconf
にある新しいバージョンとの違いを、アップデート後に確認することをお勧めします。
このファイルに関連するログメッセージは、/var/log/sapconf.log
に書き込まれます。
これらのファイルのいずれかを編集すると、一部の値が行の先頭に#
文字でコメント化されていることがわかります。これは、パラメータがチューニングに関連している間は、適切なデフォルトがないことを意味します。
これとは逆に、行の先頭に#
文字を追加して、特定のパラメータにコメントを付けることができます。ただし、sapconf
が適切にプロファイルを適用しなくなる可能性があるため、コメント付けは避けた方が無難です。
編集した設定を適用するには、sapconf
を再起動します。
root #
systemctl restart sapconf
特定のパラメータ値が正しく適用されているかどうかの確認手段は、パラメータごとに異なります。したがって、次の例は一例にすぎません。
TCP_SLOW_START
の設定が適用されていることを確認するには、次の手順を実行します。
sapconf
のログファイルを表示して、値が適用されているかどうかを確認します。/var/log/sapconf.log
内で、次のテキストを含む行を確認します。
Change net.ipv4.tcp_slow_start_after_idle from 1 to 0
または、sapconf
が開始される前に、パラメータがすでに正しく設定されている可能性があります。この場合、sapconf
はその値を変更しません。
Leaving net.ipv4.tcp_slow_start_after_idle unchanged at 1
TCP_SLOW_START
の背後にある基本のオプションは/proc/sys/net.ipv4.tcp_slow_start_after_idle
で手動で設定できます。その実際の現在値を確認するには、次のコマンドを使用します。
root #
sysctl net.ipv4.tcp_slow_start_after_idle
sapconf
の削除 #
システムからsapconf
を削除するには、次のコマンドを使用してそのパッケージをアンインストールします。
root #
zypper rm sapconf
これを実行する際には、sapconf
の依存関係はインストールされたままであることに注意してください。ただし、サービスsysstat
およびtuned
は、無効な状態になります。いずれかのサービスをまだ使用している場合は、再度有効にしてください。
sapconf
がアンインストールされても、特定のパラメータやファイルは削除されません。詳細については、マニュアルページのman 7 sapconf
の「PACKAGE REQUIREMENTS」セクションを参照してください。
次のマニュアルページには、sapconf
に関する追加情報が記載されています。
sapconf
で使用されるチューニングパラメータの概要: man 7 tuned-profiles-sapconf
sapconf
で設定されたすべてのチューニングパラメータの詳細な説明: man 5 sapconf
sapconf
プロファイルの設定およびカスタマイズに関する情報: man 7 sapconf
https://www.suse.com/c/a-new-sapconf-is-available/にあるsapconf
の更新バージョンを詳しく説明するブログシリーズも参照してください。
sapconf
5を使用したシステムのチューニング #
パッケージsapconf
は、SUSE Linux Enterprise ServerおよびSUSE Linux Enterprise Server for SAP Applicationsで使用できます。これは、次のタイプのSAPアプリケーション(SAP NetWeaver、SAP HANA、およびSAP HANAベースのアプリケーション)に推奨されるパラメータを設定します
sapconf
5の概要 #sapconf
5 (tuned
なし)sapconf-netweaver
(tuned
プロファイルの代替としてのsapconf
プロファイル)
sapconf-hana
(tuned
プロファイルの代替としてのsapconf
プロファイル)
sapconf-bobj
(tuned
プロファイルの代替としてのsapconf
プロファイル)
sapconf-ase
(tuned
プロファイルの代替としてのsapconf
プロファイル)
sapconf
5の概要 #sapconf
5 (tuned
なし)現在ではプロファイルなし
以前、システムチューニングに変更を行った場合は、これらの変更がsapconf
によって上書きされる可能性があることに注意してください。
sapconf
5には、チューニングを適用し、関連するサービスが確実に実行されるようにするsystemd
サービスが付属しています。
sapconf
を使用するには、パッケージ sapconf がシステムにインストールされていることを確認します。
SUSE Linux Enterprise ServerおよびSUSE Linux Enterprise Server for SAP Applications 15では、sapconf
によるプロファイルのサポートは終了しています。
sapconf
の有効化/無効化、およびそのステータスの表示 #
sapconf
のインストール後に、sapconf
サービスが有効になります。
sapconf
のステータスは、以下に記載される方法で検査または変更できます。
サービスsapconf
のステータスを確認するには:
root #
systemctl status sapconf
サービスは「アクティブ(終了済み)」と表示される必要があります。
サービスsapconf
を開始するには:
root #
systemctl start sapconf
sapconf
が無効な場合は、次のコマンドを使用して有効にし、起動します。
root #
systemctl enable --now sapconf
サービスsapconf
を停止するには:
root #
systemctl stop sapconf
このコマンドは、最適化の大部分を直ちに無効にします。このルールの唯一の例外は、有効/無効にするためにシステムを再起動する必要があるオプションです。
sapconf
を無効にするには、次のコマンドを使用します。
root #
systemctl disable sapconf
sapconf
が、ユーザが特定するサービスを特別に有効にしていない場合は、ほとんどのチューニングパラメータと、sapconf
が使用するすべてのサービスも無効になります。
sapconf
が依存する追加のサービス
sapconf
サービスに加えて、次の2つのサービスにも依存します。
システムアクティビティに関するデータを収集するsysstat
。
多くのプロセッサコアが関与する設定でも固有であることが保証されている時間ベースのUUIDを生成するuuidd
。これはSAPアプリケーションに必要です。
sapconf
5の設定 #
一般に、sapconf
のデフォルト設定では、SAPによって推奨されるパラメータ値をすでに使用しています。ただし、特別なニーズがある場合は、それらに合わせてツールを設定できます。
sapconf
のすべてのパラメータは/etc/sysconfig/sapconf
ファイルにあります。このファイルは直接編集できます。このファイルのパラメータはすべて、コメントやSAP Notesの参照資料で説明されています。参照資料は、https://launchpad.support.sap.com/で参照可能です。
sapconf
がアップデートされると、このファイルからカスタマイズされたすべてのパラメータが可能な限り保持されます。ただし、パラメータは、新しい設定ファイルにクリーンな状態で転送できない場合があります。したがって、アップデート中に/etc/sysconfig/sapconf.rpmsave
に移動された以前のカスタム設定と、/etc/sysconfig/sapconf
にある新しいバージョンとの違いを、アップデート後に確認することをお勧めします。
このファイルに関連するログメッセージは、/var/log/sapconf.log
に書き込まれます。
これらのファイルのいずれかを編集すると、一部の値が行の先頭に#
文字でコメント化されていることがわかります。これは、パラメータがチューニングに関連している間は、適切なデフォルトがないことを意味します。
これとは逆に、行の先頭に#
文字を追加して、特定のパラメータにコメントを付けることができます。ただし、sapconf
が適切にプロファイルを適用しなくなる可能性があるため、コメント付けは避けた方が無難です。
編集した設定を適用するには、sapconf
を再起動します。
root #
systemctl restart sapconf
特定のパラメータ値が正しく適用されているかどうかの確認手段は、パラメータごとに異なります。したがって、次の例は一例にすぎません。
TCP_SLOW_START
の設定が適用されていることを確認するには、次の手順を実行します。
sapconf
のログファイルを表示して、値が適用されているかどうかを確認します。/var/log/sapconf.log
内で、次のテキストを含む行を確認します。
Change net.ipv4.tcp_slow_start_after_idle from 1 to 0
または、sapconf
が開始される前に、パラメータがすでに正しく設定されている可能性があります。この場合、sapconf
はその値を変更しません。
Leaving net.ipv4.tcp_slow_start_after_idle unchanged at 1
TCP_SLOW_START
の背後にある基本のオプションは/proc/sys/net.ipv4.tcp_slow_start_after_idle
で手動で設定できます。その実際の現在値を確認するには、次のコマンドを使用します。
root #
sysctl net.ipv4.tcp_slow_start_after_idle
sapconf
の削除 #
システムからsapconf
を削除するには、次のコマンドを使用してそのパッケージをアンインストールします。
root #
zypper rm sapconf
これを実行する際には、sapconf
の依存関係はインストールされたままであることに注意してください。ただし、サービスsysstat
は無効な状態になります。サービスをまだ使用している場合は、再度有効にしてください。
次のマニュアルページには、sapconf
に関する追加情報が記載されています。
sapconf
で設定されたすべてのチューニングパラメータの詳細な説明: man 5 sapconf
sapconf
プロファイルの設定およびカスタマイズに関する情報: man 7 sapconf
https://www.suse.com/c/a-new-sapconf-is-available/にあるsapconf
の更新バージョンを詳しく説明するブログシリーズも参照してください。
sapconf
とtuned
の併用 #
バージョン5では、sapconf
は、tuned
に依存しなくなりました。これは、両方のツールを個別に使用できることを意味します。tuned
サービスが開始される場合、sapconf
はそのログに警告を出力します。
tuned
とsapconf
の併用
tuned
とsapconf
を同時に使用する場合は、ボットツールが同じシステムパラメータを設定しないように十分注意してください。
saptune
を使用したシステムのチューニング #
saptune
を使用すると、SAP NetWeaver、SAP HANA/SAP BusinessObjects、およびSAP S/4HANAアプリケーション用にシステムをチューニングできます。この方法は、システムチューニングサービスtuned
に依存します。
saptune
を使用するには、パッケージ tuned および
saptune がシステムにインストールされていることを確認します。
tuned
デーモン
sapconf
(バージョン4のみ)およびsaptune
の両方がデーモンtuned
に依存していますが、さまざまな(非常に類似した)チューニングプロファイルを使用します。したがって、sapconf
またはsaptune
のいずれかのみを一度に有効にできます。
saptune
の有効化 #システムをチューニングするには、まず、チューニングソリューションを見つけます。適切なソリューションを見つけるには、次のコマンドを使用します。
tux >
saptune solution list
saptune
では、次のチューニングソリューション(SAP Notesのグループ)を認識します。
BOBJ
:
SAP BusinessObjectsを実行するためのソリューション。
HANA
:
SAP HANAデータベースを実行するためのソリューション。
MAXDB
:
SAP MaxDBデータベースを実行するためのソリューション。
NETWEAVER
:
SAP NetWeaverアプリケーションサーバを実行するためのソリューション。
S4HANA-APPSERVER
: SAP S/4HANAアプリケーションサーバを実行するためのソリューション(SAP NetWeaverソリューションと同じ)。
S4HANA-APP+DB
: SAP S/4HANAアプリケーションサーバとSAP HANAの両方を同じホスト上で実行するためのソリューション(SAP NetWeaver + SAP HANAソリューションと同じ)。
S4HANA-DBSERVER
:
SAP S/4HANAインストールのSAP HANAデータベースを実行するためのソリューション(SAP HANAソリューションと同じ)。
SAP-ASE
:
SAP Adaptive Server Enterpriseデータベースを実行するためのソリューション。
または、特定のSAP Notesからの推奨事項に従って、コンピュータをチューニングできます。チューニングできるNotesのリストは次のコマンドを介して入手できます。。
root #
saptune note list
事前設定されたソリューションを使用してsaptune
を設定するには、次のコマンドを使用します。
root #
saptune solution apply SOLUTION
特定のSAPノートの推奨事項に合わせてsaptune
を設定するには、次のコマンドを使用します。
root #
saptune note apply NOTE
ソリューションとノートを組み合わせることができます。ただし、一度にアクティブにできるのは1つのソリューションのみです。まれに、ノートでオプションまたはパラメータの競合が発生する可能性があります。競合を避けるには、最後のノートが常に以前のノートの競合するオプションまたはパラメータを上書きすることに注意してください。
saptune
を開始し、ブート時に有効にするには、次のコマンドを実行してください。
root #
saptune daemon start
バックグラウンドで、saptune
は、選択した「ソリューション」および「ノート」に従って動的にカスタマイズされるsaptune
とも呼ばれるtuned
プロファイルを適用します。tuned-adm list
を使用して、このプロファイルを表示することもできます。
すべてのSAPノートは次のコマンドを使用して自由に設定できます。
root #
saptune note customise
このコマンドには、値の変更やパラメータの無効化が含まれています。
次のコマンドを使用すると、確認後に対応する上書きを含む、作成済みノートを削除できます。
root #
saptune note delete
ノートはその時点では適用されない場合があります。saptune
で提供されたSAPノートは削除できません。代わりに、利用可能な場合は、上書きファイルが削除されます。
次のコマンドを使用すると作成済みノートの名前が変更できます。これには確認後の、対応する上書きが含まれます。
root #
saptune note rename
ノートはその時点では適用されない場合があります。saptune
で提供されたSAPノートの名前は変更できません。
コマンドsaptune note verify NOTE
およびsaptune solution verify SOLUTION
は、アクティブまたは要求されたノートごとに次のデータを一覧表示します。
パラメータ名
予想される値(デフォルト)
設定された上書き(saptune customise
を使用して作成)
現在のシステム値
現在の状態がSAP推奨事項に従っているかどうか
note
の各パラメータを表示するには、次のコマンドを使用します。
root #
saptune note simulate
solution
の各パラメータを表示するには、次のコマンドを使用します。
root #
saptune solution simulate
現在のシステム値と予想される値(デフォルトおよび上書き)を一覧表示します。
次のマニュアルページを参照してください。
man 8 saptune
man 8 saptune_v1
man 8 saptune_v2
man 8 saptune-migrate
man 8 saptune-note
プロジェクトホームページ(https://github.com/SUSE/saptune/)も参照してください。
sysctl
を使用したカーネルパラメータの手動チューニング #
sapconf
/saptune
を使用してカーネルパラメータをチューニングする際は、sysctl
を使用して、カーネルパラメータを手動調整することもできます。また、sapconf/saptuneを使用したカーネルパラメータのチューニングの代わりに、sysctlを使用して、カーネルパラメータを手動調整することもできます。ただし、sysctl
を使用したこのような変更は、デフォルトでは再起動後も持続しません。再起動後も持続するようにするには、sysctl
によって読み込まれた設定ファイルのいずれかにそれらを追加します。
sysctl
とsaptune
SAPシステムにsysctl
パラメータを設定する場合は、このような設定を管理する中心的なツールとしてsaptune
を使用することを検討してください。
sysctl
に関する詳細については、マニュアルページのsysctl(8)
、sysctl.conf(5)
、およびsysctl.d(5)
を参照してください。
SAPアプリケーションを物理メモリに保持することは、パフォーマンスのために不可欠です。SUSE Linux Enterprise Server for SAP Applications 11 SP1以降およびSUSE Linux Enterprise Server for SAP Applications 12では、ページキャッシュ制限により、ページキャッシュの増加によるディスクへのスワップアウトを防止していました。SUSE Linux Enterprise Server for SAP Applications 15では、ページキャッシュ制限がより高度なワークロードメモリ保護に置き換えられました。
ワークロードメモリ保護は、SAPインスタンスを専用のcgroup (v2)に置き、memory.low
パラメータによって、物理メモリに保持するメモリ容量をカーネルに伝えます。これにより、ページキャッシュの増加を含む、そのcgroupの外側のあらゆる形態のメモリ負荷に対してこのcgroup内のプロセスが保護されます。ワークロードメモリ保護は、このcgroup内のメモリ負荷に対して保護することはできません。これは、1つのホスト上の「すべての」インスタンスのメモリをカバーします。
memory.low
の値は、SAPインスタンスとワークロードの種類によって異なり、手動で設定する必要があります。システムが過度な負荷下にある場合、Linuxカーネルはmemory.low
値を無視して、OOMキラーをスワップしたり、呼び出したりしてでも、システム全体を安定化させようとします。
cgroupに関する詳細については、https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-tuning-cgroups.htmlを参照してください。
WMPは次の3つのコンポーネントに依存します。
cgroup2メモリコントローラパラメータ memory.low では、Linuxカーネルが物理メモリに保持するメモリ容量を定義できます。このメモリ容量は、システム全体が重大なメモリ状況にある場合を除いて、再利用プロセスから除外されます。
WMPは memory.low を使用して、SAPプロセスのメモリがページングされ、ディスクにページアウトされるのを防止します。メモリコントローラを除く、Cgroup1コントローラは、まだ使用可能ですが、マウントされていません。
systemd
Systemdでは、cgroup階層を作成および維持するためのインフラストラクチャを提供し、cgroupパラメータの設定も可能にします。WMPには、systemd
設定ファイルが付属し、 memory.low
の設定がsystemd
メソッドを使用して簡単に行えます。
SAP Start Service (sapstartsrv
)は、SAPインスタンスの開始と停止を管理します。WMPの重要な機能は、インスタンス自体がインスタンスプロファイルで開始される前の、プログラムの設定可能な実行にあります。WMPでは、このメソッドを使用してプログラムを呼び出し、sapstartsrv
/sapstart
プロセスを指定のcgroupに移動させるため、SAPインスタンスがそのcgroup内で開始されます。
WMPは、
App Server (SAP NetWeaver、SAP S/4HANA)や
SAP HANA 1.0/2.0など1台のホスト上にある1台以上のSAPシステム用Intel 64/AMD64上のSUSE Linux Enterprise Server for SAP Applications 15 SP2でサポートされています。
ワークロードメモリ保護は、SAP HANA以外のデータベースには適用されません。開始メソッドによって、プロセスが専用のcgroup内部または外部で実行される場合があります。内部で実行される場合、memory.low
を決定する際にメモリ消費量を考慮する必要があります。
WMPを使用することはメリットがありますが、いくつかの制限事項に注意する必要があります。
WMPは専用のcgroup内部のメモリ負荷に対して保護できません。
WMPはSAPシステムまたはそのインスタンスを相互に保護できません。すべてのSAPプロセスは同じメモリ制限を共有します。複数のSAPシステム(SAP NetWeaverやSAP S/4HANA)がある場合、WMPは1つのSAPアプリケーションを別のSAPアプリケーションから保護できません。
SUSEのHAクラスタソリューションのサポートはまだ使用できません。
SAPソフトウェア(SAP HANA、SAP NetWeaverなど)がインストールされているか確認します。グループsapsys
は、後で sapwmp
のパッケージインストール中に必要です。その部分をスキップする場合は、警告メッセージが表示されます(重要: パッケージの順番に注意するを参照)。
SAPシステムの停止:
root #
systemctl
stop sapinit
サービスは有効にすることができますが、すべてのSAPプロセスを終了する必要があります。
パッケージ sapwmpのインストール:
tux >
sudo
zypper
install sapwmp
次のメッセージは、SAPソフトウェアがシステムにインストールされていない場合にのみ表示されます。
Warning: sapsys group not found warning: group sapsys does not exist - using root
パッケージ sapwmp を削除し、SAPソフトウェアをインストールしてから、パッケージを再びインストールします。
別の方法として、SAPソフトウェアをインストールした「後で」次のコマンドを使用して、所有権と許可を修正できます。
tux >
sudo
chgrp
sapsys /usr/lib/sapwmp/sapwmp-capture && \ chmod +s /usr/lib/sapwmp/sapwmp-capture
次のメッセージは無視して構いません。
Warning: Found memory controller on v1 hierarchy. Make sure unified hierarchy only is used.
次の手順で、統合階層への切り替えを実行します。
systemd.unified_cgroup_hierarchy=true
をカーネルコマンドラインに追加するには、次のように/etc/default/grub
のGRUB_CMDLINE_LINUX_DEFAULT
にこれを追加します。
GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=true swapaccount=1"
この変更により、cgroup2コントローラのみが/sys/fs/cgroup
にマウントされます。ただし、メモリコントローラを除き、Cgroup1コントローラは、まだ利用可能です。cgroup1を使用するツールは、そのままでは機能せず、設定が必要な場合があります。また、cgroup1に必要なマウント構造を提供する必要があります。
パラメータswapaccount=1
は、WMPが機能するために必要ではありませんが、サポートケースでの分析を支援し、cgroupごとのスワップアウトされたメモリ容量を示します。
GRUB2の設定を再書き込みします。
tux >
sudo
grub2-mkconfig
-o /boot/grub2/grub.cfg
再起動後(後で実行される)、cgroup階層はv2 (統合階層)のみに切り替えられます。
SAP.slice
用のMemoryLow
を設定します。
tux >
sudo
systemctl
set-property SAP.slice MemoryLow=...
このコマンドは、/etc/systemd/system.control/SAP.slice.d/
にドロップインを作成し、MemoryLow
を設定します。
sapwmp のパッケージ には、SAPインスタンスに同じ名前のcgroupを作成するシステム設定SAP.slice
が含まれます。MemoryLow
は、最初に述べたcgroupパラメータmemory.low
と等価なsystemdです。MemoryLow
の値は、SAPアプリケーションおよびワークロードのタイプによって異なります。
SAP HANAにはグローバル割り当て制限があるため、その値を直接使用できます。
アプリケーションサーバの場合、ワークロードのサイジングはMemoryLow
の値を示す必要があります。sapwmp のパッケージ には、MemoryLow
を決定するために役立つ可能性がある監視パートが含まれます。8.5.6項 「メモリ使用量の監視」を参照してください。
次の点に注意してください。
1台のホスト上のすべてのSAPインスタンスは、SAP.slice
内に存在します。MemoryLow
は、そのホスト上の「すべての」インスタンスのメモリ容量をカバーする必要があります。SAPシステムまたはそのインスタンスを相互に保護することはできません。
SAP HANA以外のデータベースを使用している場合、一部のデータベースプロセスがSAP.slice
に含まれている可能性があります。MemoryLow
値を決定する際には、これらのメモリ消費量を考慮する必要があります。
MemoryLow
の値は、物理メモリの値に非常に近い値、またはこれらの値より大きな値にしないでください。システムサービスおよび追加のインストール済みソフトウェアにもメモリが必要です。SAPアプリケーションを犠牲にしてスワップを広範囲に使用しなければならない場合、システムが応答しなくなる可能性があります。
MemoryLow
値を正しく計算する
MemoryLow
は、メモリサイズをバイト単位で取得します。値の末尾にK、M、G、Tが付いている場合、指定されたメモリサイズはそれぞれ、キビバイト、メビバイト、ギビバイト、またはテビバイトとして解析されます(1000ではなく、1024をベースとしている場合は、https://en.wikipedia.org/wiki/Binary_prefixを参照)。または、パーセンテージ値が指定される場合があります。この場合、システムにインストールされている物理メモリを基準として取得されます。
基礎となるcgroupメモリコントローラは、値をページサイズの倍数に切り上げます。混乱を避けるため、MemoryLow
の値としてページサイズの倍数をすでに設定しています。
各SAPインスタンスプロファイルのバックアップを作成します。プロファイルのエラーはSAPシステムの起動を妨げる可能性があります。
SAPインスタンスごとに、次の行を最後のExecute_
行の後のインスタンスプロファイル(通常は/usr/sap/SID/SYS/profile/
にある)に追加します。
Execute_20 = local /usr/lib/sapwmp/sapwmp-capture -a
必要に応じてExecuteステートメント数を増やして最大にし、行が最後に実行されるようにします。
SAP GUI (トランザクションRZ11)によって管理するためにデータベースにプロファイルをインポートしていない場合「にのみ」インスタンスプロファイルを直接編集します。これを実行する場合は、SAP GUIを使用して、行を追加してください。ファイルシステムにあるプロファイルファイルは上書きされ、手動の変更は失われます。
これでシステムが再起動する準備が整いました。
システムを再起動します。
再起動後、実際にcgroups v2が使用されていることを確認します。
root #
grep
cgroup /proc/mounts cgroup /sys/fs/cgroup cgroup2 rw,nosuid,nodev,noexec,relatime 0 0
cgroupが正常に作成され、低いメモリ値が設定されていることを確認します。
tux >
systemctl
show -p MemoryLow SAP.slice MemoryLow=18487889920 <- Should be your chosen value (always in bytes)! # cat /sys/fs/cgroup/SAP.slice/memory.low 18487889920 <- Should be your chosen value!
変数MemoryLow
は任意の値に設定できますが、変数のコンテンツは常にページサイズの倍数になります。両方の値にわずかに違いがあることに気づく場合には、このことに注意してください。
すべてのSAPインスタンスプロセスが正しいシステムのスライス/cgroup内にあることを確認します。
sapinit.service
を有効にしていない場合は、今すぐサービスを開始してください。自動開始がインスタンスプロファイルで有効になっていない場合は、確認する前にインスタンスを開始します。
例:
root #
systemd-cgls
-a /sys/fs/cgroup/SAP.slice Directory /sys/fs/cgroup/SAP.slice: |-wmp-rd91fd6b3ca0d4c1183659ef4f9a092fa.scope | |-2707 /usr/sap/HA0/ERS10/exe/sapstartsrv pf=/usr/sap/HA0/ERS10/profile/H... | |-3349 sapstart pf=/usr/sap/HA0/ERS10/profile/HA0_ERS10_sapha0er | `-3375 er.sapHA0_ERS10 pf=/usr/sap/HA0/ERS10/profile/HA0_ERS10_sapha0er N... |-wmp-r360ebfe09bcd4df4873ef69898576199.scope | |-3128 /usr/sap/HA0/D01/exe/sapstartsrv pf=/usr/sap/HA0/SYS/profile/HA0_D... | |-3572 sapstart pf=/usr/sap/HA0/SYS/profile/HA0_D01_sapha0ci | |-3624 dw.sapHA0_D01 pf=/usr/sap/HA0/SYS/profile/HA0_D01_sapha0ci ...
インスタンスごとに、このインスタンスのすべてのプロセスを含むディレクトリwmp-rSCOPEID.scope
が存在します。SCOPEIDは、16進数の128ビットランダム値です。
SAP HostAgentは、WMPではカバーされておらず、一部はsapinit.slice
に残り、一部はsapadm
のユーザスライスに残ります。
プロセスがcgroup内にない場合は、インスタンスプロファイルのExecute
行が正しいかどうか確認します。また、各インスタンスの開始が、システムログ/var/log/messages
に記録されます。
... 2020-06-16T18:41:28.317233+02:00 server-03 sapwmp-capture: Found PIDs: 2020-06-16T18:41:28.317624+02:00 server-03 sapwmp-capture: 17001 2020-06-16T18:41:28.317813+02:00 server-03 sapwmp-capture: 16994 2020-06-16T18:41:28.317959+02:00 server-03 sapwmp-capture: 16551 2020-06-16T18:41:28.319423+02:00 server-03 sapwmp-capture: Successful capture into SAP.slice/wmp-r07a27e12d7f2491f8ccb9aeb0e080aaa.scope 2020-06-16T18:41:28.319672+02:00 server-03 systemd[1]: Started wmp-r07a27e12d7f2491f8ccb9aeb0e080aaa.scope. ...
WMPセットアップを確認するスクリプトは次の場所にあります:。 https://github.com/scmschmidt/wmp_check。
WMPを設定するには、次のように/etc/sapwmp.conf
を編集します。
# NOTE: Local changes may be reverted after update of WMP package. Check for # .rpmsave file to restore & merge changes. ## Description: Slice unit name where workload is put into ## Type: string ## Default: "SAP.slice" DEFAULT_SLICE="SAP.slice" ## Description: Comma-separated list of command names to which capture is ## applied (matching against /proc/$PID/stat) ## Type: string ## Default: sapstart,sapstartsrv PARENT_COMMANDS=sapstart,sapstartsrv
変更後、すべてのSAPインスタンスを再起動します。
/etc/sapwmp.conf
を変更する必要はありません。すべき操作を正確に認識するまで実行しないでください。
MemoryLow
の値を変更するには、次のコマンドを実行します。
root #
systemctl
set-property SAP.slice MemoryLow=...
変更はすぐに有効になります。
基礎となるcgroupメモリコントローラは、値をページサイズの倍数に切り上げます。混乱を避けるため、MemoryLow
の値としてページサイズの倍数を設定します。
MemoryLow
をすでにSAP.slice
に割り当てられているメモリより小さい値に設定しないでください。確認するには、次のコマンドを実行します。
root #
systemctl
show -p MemoryCurrent SAP.slice
メモリ使用量のログを記録することが、memory.low
の値を決定するために必要な場合がありますが、WMPの正しい動作を監視するためにも必要になる場合があります。
モニタリングを有効にするには、付属しているタイマーユニットを有効にします。
root #
systemctl
enable --now wmp-sample-memory.timer
これで、タイマーがsystemctl list-timers
によって一覧表示されるはずです。
root #
systemctl
list-timers NEXT LEFT LAST PASSED UNIT ACTIVATES ... Tue... 9min left Tue... 4s ago wmp-sample-memory.timer wmp-sample-memory.service ...
現在の設定を確認すると、メモリデータが10分ごとに収集され、3分のランダムな遅延が発生していることがわかります。
root #
systemctl
cat wmp-sample-memory.timer # /usr/lib/systemd/system/wmp-sample-memory.timer [Unit] Description=WMP periodic log of memory consumption [Timer] OnCalendar=*:0/10 RandomizedDelaySec=180 AccuracySec=60 [Install] WantedBy=timers.target
これを変更するには、ドロップインファイルを作成して、systemdをリロードします(たとえば、間隔を30分に増やします):
root #
mkdir
/etc/systemd/system/wmp-sample-memory.timer.d # cat <<EOF >/etc/systemd/system/wmp-sample-memory.timer.d/override.conf [Timer] OnCalendar= OnCalendar=*:0/30 EOF # systemctl daemon-reload
(以前の定義されたOnCalendar=設定を削除するには、最初のOnCalendar=行が重要です。)
メモリ消費量を確認するには、システムログでwmp_memory_current
で書き込まれた行を確認します。
root #
grep
wmp_memory_current /var/log/messages ... 2020-09-14T12:02:40.337266+02:00 server-03 wmp_memory_current: SAP.slice : memory.low=21474836480 memory.current=2294059008 memory.swap.current=0 , user.slice : memory.low=0 memory.current=5499219968 memory.swap.current=0 , init.scope : memory.low=0 memory.current=8364032 memory.swap.current=0 , system.slice : memory.low=0 memory.current=1863335936 memory.swap.current=0 2020-09-14T12:03:00.767838+02:00 server-03 wmp_memory_current: SAP.slice : memory.low=21474836480 memory.current=2294022144 memory.swap.current=0 , user.slice : memory.low=0 memory.current=5499473920 memory.swap.current=0 , init.scope : memory.low=0 memory.current=8364032 memory.swap.current=0 , system.slice : memory.low=0 memory.current=1862586368 memory.swap.current=0 2020-09-14T12:04:00.337315+02:00 server-03 wmp_memory_current: SAP.slice : memory.low=21474836480 memory.current=2294022144 memory.swap.current=0 , user.slice : memory.low=0 memory.current=5499207680 memory.swap.current=0 , init.scope : memory.low=0 memory.current=8355840 memory.swap.current=0 , system.slice : memory.low=0 memory.current=1862746112 memory.swap.current=0 ...
ここによりよい印象を与える再フォーマットされたログ行があります。
2020-09-14T12:02:40.337266+02:00 server-03 wmp_memory_current: SAP.slice : memory.low=21474836480 memory.current=2294059008 memory.swap.current=0 , user.slice : memory.low=0 memory.current=5499219968 memory.swap.current=0 , init.scope : memory.low=0 memory.current=8364032 memory.swap.current=0 , system.slice : memory.low=0 memory.current=1863335936 memory.swap.current=0
/sys/fs/cgroup/
の直下のcgroupごとにコンマで区切られた1つのブロックが存在します。通常のシステムでは、少なくともuser.slice
、system.slice
、およびinit.scope
を見つける必要があります。WMPはSAP.slice
を追加します。
各ブロックには、memory.low
およびmemory.current
の現在の値に関する情報が含まれています。この情報は、このcgroup内プロセスの物理メモリに現在割り当てられている量です。
セットアップ中にスワップアカウンティング(swapaccount=1
)を有効にしている場合は、cgroupのスワップアウトされたメモリ容量である、memory.swap.current
もあります。
すべての値はバイト単位です。8.5.3.1項 「ワークロードメモリ保護の準備」のステップ 6を参照してください。
テーブルまたはCSVとして情報を出力するスクリプトは次の場所にあります。https://github.com/scmschmidt/wmp_log_extract
メモリ消費量およびスワッピングの監視(8.5.6項 「メモリ使用量の監視」を参照)のほか、すべてのSAPインスタンスプロセスがSAP.slice
の下のスコープ内であることも定期的に確認する必要があります。
これを行うには、「systemd-cgls
」を実行し、各インスタンスプロセスを確認します。
例:
root #
systemd-cgls
-a /sys/fs/cgroup/SAP.slice Directory /sys/fs/cgroup/SAP.slice: |-wmp-rd91fd6b3ca0d4c1183659ef4f9a092fa.scope | |-2707 /usr/sap/HA0/ERS10/exe/sapstartsrv pf=/usr/sap/HA0/ERS10/profile/H... | |-3349 sapstart pf=/usr/sap/HA0/ERS10/profile/HA0_ERS10_sapha0er | `-3375 er.sapHA0_ERS10 pf=/usr/sap/HA0/ERS10/profile/HA0_ERS10_sapha0er N... |-wmp-r360ebfe09bcd4df4873ef69898576199.scope | |-3128 /usr/sap/HA0/D01/exe/sapstartsrv pf=/usr/sap/HA0/SYS/profile/HA0_D... | |-3572 sapstart pf=/usr/sap/HA0/SYS/profile/HA0_D01_sapha0ci | |-3624 dw.sapHA0_D01 pf=/usr/sap/HA0/SYS/profile/HA0_D01_sapha0ci ...
より簡単なテストで、システムで使用されるすべての<SID>に対するcgroupを含むすべてのプロセスを一覧表示します。
例:
tux >
ps
-eo user,pid,cgroup:60,args |grep
-e [h]a0adm ha0adm 2062 0::/user.slice/user-1001.slice/user@1001.service/init.scope /usr/lib/systemd/systemd --user ha0adm 2065 0::/user.slice/user-1001.slice/user@1001.service/init.scope (sd-pam) ha0adm 2480 0::/SAP.slice/wmp-r73c594e050904c9c922a312dd9a28fd4.scope /usr/sap/HA0/ASCS00/exe/sapstartsrv pf=/usr/sap/HA0/SYS/profile/HA0_ASCS00_sapha0as -D -u ha0adm ha0adm 2688 0::/SAP.slice/wmp-ra42489517eb846c282c57681e627a496.scope /usr/sap/HA0/ERS10/exe/sapstartsrv pf=/usr/sap/HA0/ERS10/profile/HA0_ERS10_sapha0er -D -u ha0adm ha0adm 3081 0::/SAP.slice/wmp-r73c594e050904c9c922a312dd9a28fd4.scope sapstart pf=/usr/sap/HA0/SYS/profile/HA0_ASCS00_sapha0as ha0adm 3106 0::/SAP.slice/wmp-r0951160bb5454f4fa32be03a6e8bc98a.scope /usr/sap/HA0/D01/exe/sapstartsrv pf=/usr/sap/HA0/SYS/profile/HA0_D01_sapha0ci -D -u ha0adm ha0adm 3133 0::/SAP.slice/wmp-r73c594e050904c9c922a312dd9a28fd4.scope ms.sapHA0_ASCS00 pf=/usr/sap/HA0/SYS/profile/HA0_ASCS00_sapha0as ha0adm 3134 0::/SAP.slice/wmp-r73c594e050904c9c922a312dd9a28fd4.scope en.sapHA0_ASCS00 pf=/usr/sap/HA0/SYS/profile/HA0_ASCS00_sapha0as ha0adm 3327 0::/SAP.slice/wmp-ra42489517eb846c282c57681e627a496.scope sapstart pf=/usr/sap/HA0/ERS10/profile/HA0_ERS10_sapha0er ...
すべてのインスタンスプロセスは0::/SAP.slice/
の下のスコープ内にある必要があります。
sapstartsrv
プロセスはユーザスライスに一時的に存在する可能性があります。これは、プロセスが手動で開始されたか、sapcontrol
コマンドの実行時にプロセスが欠落して開始された場合に発生します。インスタンスを再起動すると、正常に修正されます。sapstartsrvを除くインスタンスプロセスをSAP.slice
の外部で実行しないようにしてください。
SAPシステムを完全に停止します。sapinit.service
を停止する必要がありますが、有効なままにしておくことができます。すべてのSAPプロセスを終了する必要があります。
設定MemoryLow
などのSAP.slice
に行われた変更をすべて削除します。
root #
systemctl
revert SAP.slice
sapwmp パッケージ の削除:
root #
zypper
remove sapwmp
このステップはオプションです。パッケージは影響を及ぼすことなくシステムにとどまることができます。
/etc/default/grub
のGRUB_CMDLINE_LINUX_DEFAULT
からsystemd.unified_cgroup_hierarchy=true
を削除します。
このステップはオプションです。WMPを使用せずにcgroup2を保持できます。
GRUB2の設定を再書き込みします。
root #
grub2-mkconfig
-o /boot/grub2/grub.cfg
次のブート後に、システムはハイブリッドcgroup階層に戻されます。
各SAPインスタンスプロファイル(通常は/usr/sap/SID/SYS/profile/
にある)からsapwmp-captureを呼び出す行を削除します。
Execute_20 = local /usr/lib/sapwmp/sapwmp-capture -a
インスタンスプロファイルを編集する前に、バックアップを作成してください! プロファイルのエラーはSAPシステムの起動を妨げる可能性があります!
SAP GUI (トランザクションRZ11)によって管理するためにデータベースにプロファイルをインポートしていない場合「にのみ」インスタンスプロファイルを直接編集します。これを実行する場合は、SAP GUIを使用して、行を追加してください。ファイルシステムにあるプロファイルファイルは上書きされ、手動の変更は失われます。
システムを再起動して、SAPシステムが正常に起動されていることを確認します。