SAS ViyaでのSASプログラム実行用リソース管理(一)：計算リソース上限の設定方法

一、背景の紹介 "データアナリストのようなヘビーユーザと利用頻度が低いユーザや参照系のユーザなど、さまざまなユーザがおり、SASプログラムを実行する際に利用するCPUとメモリなどの計算リソースを、ユーザタイプごとに割り当てる設定をしたい"。これは、多くのViyaユーザ様が持つ課題です。これを実現するためには、次の2つのステップが必要です １．異なるタイプのユーザごとに利用できる計算リソースを設定します。 ２．異なるタイプのユーザに対して、権限を個別に割り当てる必要があります。 本記事では、まずViyaのシステム管理者に向けて、ユーザが利用できる計算リソースの上限値の変更方法を紹介していきます。 二、準備 設定方法を紹介する前に、まずViyaでSASプログラムを実行時に計算リソースを調達する方法を説明します。ここでは、viyaのアーキテクチャとk8sの知識が必要になるので、なるべくわかりやすく解説していきたいと思います。 まず、ユーザがSAS Studioを使用する際、Viyaはそのユーザのみが使用できるセッションを作成します。 ユーザは、実行が必要なSASアプリケーションごとに個別のセッションを作成することができ、各セッションはバックグラウンドでk8sクラスタ上に対応するポッドを持ちます。 各ポッドには使用できるCPUとメモリの上限があり、デフォルトでは2vcpusと2Giのメモリが使用できます。Viyaがユーザのセッションのためにポッドを生成するとき、ポッドテンプレート(podTemplate)と呼ばれるものを参照します。ポッドテンプレートはviyaがデプロイされるときにyamlファイルで定義されるものです。そのため、ユーザセッションが利用できる計算リソースを変更したい場合は、viyaのデプロイに使用するポッドテンプレートのyamlファイルを変更する必要があります。また、ユーザの種類によって異なる計算リソースの制限を設定したい場合は、既存のポッドテンプレートをコピーして、名前と数値を変更するだけです。 デプロイメントファイルとK8sクラスターに変更を加える必要があるため、以下を準備する必要があります。基本的にViyaをデプロイ時に必要なものと同じですので、もし下記に対して不明なところがある場合、ご利用のViya環境のデプロイ担当者にお問い合わせください。 ・k8sクラスターのAPIサーバーに接続できる作業用のサーバー、OSはLinux系がおすすめです。 ・k8sクラスターに接続用コンフィグファイル(管理者権限が必要)。~/.kube/configとして保存します。 ・k8sのコマンドラインツール：kubectl ・Viyaデプロイメントアセットのコンパイル用ツール：kutomize ・Viyaをデプロイ時に使ったkustomization.yamlやsite-configフォルダを含めたファイルアセット 三、計算リソース上限値の修正方法 計算リソースの調達方法を簡単に紹介した後、次は、そのリソースを変更する方法について説明します。ここでは、主に以下の2つの方式を採用しています。以下はLinux OSを使用することを前提に説明します。 以下はこの章の項目の一覧です。読者は以下のリンクを使って興味のあるセクションに直接ジャンプすることができます。 １．デプロイ用ポッドテンプレートファイルを修正し、再デプロイでリソースの設定を更新する方法 ２．K8sクラスター内にデプロイされたポッドテンプレートをそのまま修正する方法 ３．設定後の検証方法 １．デプロイ用ポッドテンプレートファイルを修正し、再デプロイでリソースの設定を更新する方法 この方法のメリットは、デプロイメントファイルに対して変更を加えるため、後にViya環境のバージョンアップや設定変更があった場合でも、計算リソースの設定の変更が保持されることです。 デメリットは、設定時にデプロイメント手順を再実行する必要があるため、比較的面倒ではあるが、長期的には管理しやすいので、おすすめです。 ①まず、Viya のデプロイメントアセットを含むパスの一番下に移動する必要があります。 このパスを/opt/viyainstallと仮定して、以下のコマンドを実行する必要があります。 deploy=/opt/viyainstall cd $deploy パス$deployの下の構造は、おおよそ次のようになっているはずです。下記のファイルやフォルダが含まれていない場合、パスが正しいか、Viyaのデプロイに使用するファイルが欠落していないかを確認することが重要です。 ②次に、ポッドテンプレート内で定義されているcpuとmemoryの制限を変更するために、site-configフォルダに以下のファイルを作成する必要があります。実際には、設定したいCPUやメモリの上限値に合わせて、下記のコマンド内のvalueの値を変更する必要があります。下記のコマンドの例では、ユーザが利用できる計算リソースの上限を31vcpu/240Giに設定しました。 cat <<EOF > $deploy/site-config/modify-podtemplate.yaml #メモリの上限値を修正 - op: add path: "/metadata/annotations/launcher.sas.com~1default-memory-limit" value: 240Gi #利用できるメモリの上限値 - op: …