Encontrar

Artículo
· 12 sep, 2024 Lectura de 2 min

gmheapとlocksizの新しいデフォルト値

これは InterSystems FAQ サイトの記事です。
 

IRIS2023.1から導入されたgmheapとlocksizの新しいデフォルト値について紹介します。

 

gmheap=0は、特別な設定の必要性がないほとんどのシステム(実運用システムを含む)に適切なように設計された新しいデフォルト値です。

 

0に設定することで、システムがシステム全体のサイズを推測し、妥当な値を算出してくれます。

 

gmheap=0 に設定した場合、システムは、グローバルバッファ用に設定されたメモリの合計に3%を乗じた値を基準に、300MBの下限と2GBの上限の範囲内でgmheap値を設定します。

 

0以外の値はそれをそのまま使用し、2GBよりはるかに大きく、あるいは300MBよりはるかに小さく設定することができます。

 

(ただし、小さな値を設定した場合、メモリを必要とする機能の利用が失敗する可能性があります。 同様に極端に大きな値を設定することでシステムに悪影響を与える可能性があります)

 

さらにこの変更以前は、.cpfファイルのgmheap設定に加えて、CPUスレッド数 に2MBを掛けた値をシステムが内部的に追加していました。

 

このため、異なるシステムに構成を移動するときや、物理メモリの使用量を理解しようとするときに混乱を招くことがありました。

 

この変更により、この追加は発生しなくなり、gmheap 設定で与えられた値が直接使われるようになりました。

 

以前のバージョンからのアップグレード時には、現在の gmheap 設定は、.cpf ファイルで明示的に設定された値に、明示的にこの量 (2MB * $system.Util.NumberOfCPUs()) を追加することで自動的に調整されます。

 

locksiz=0は、すべてのシステムに適合するように設計された新しいデフォルト値です。

 

この値は、ロックテーブルのサイズがgmheap パラメータで指定された共有メモリヒープのサイズによってのみ制限されることを意味します。

 

システムをバージョンアップする際に現在の locksiz パラメータは自動的に 0 に設定されます。

 

0 以外の値が指定された場合、locksizに指定されたバイト数をgmheap内で使用可能なメモリから確保します。

Comentarios (0)1
Inicie sesión o regístrese para continuar
Artículo
· 12 sep, 2024 Lectura de 3 min

PythonからIRISルーチンに引数を渡すサンプル

これは InterSystems FAQ サイトの記事です。
 

PythonからObjectScriptのルーチンを直接呼び出すことはできませんが、クラスメソッドを経由して間接的に呼び出すことができます。

しかし、Pythonの変数とObjectScriptのローカル変数は内部構造が異なるため、情報の交換には少し工夫が必要です。

簡単なサンプルでその方法について説明します。

まず、2つの変数を足し算する簡単なルーチン ^testを作ります。 

 

TEST    ;
    set sum = a + b

 

次にこの^testを呼び出すPythonのメソッドを含んだUser.testというクラスを作ります。

そしてpyという名前のPythonのメソッドを作成します。

先述の通りPythonからObjectScriptのルーチンを直接呼び出すことはできないので、ルーチンを間接的に呼び出すObjectScriptのメソッドを作成する必要があり、そのメソッドをPythonメソッドから呼び出すようにします。

渡したいデータが複数個ある場合、その数分引数を用意するのは面倒なため、Pythonの場合、情報をまとめて交換する際にdictionary(辞書)やlistという構造を使用することができます。

ここでは、dictionaryを使用する例を紹介します。

ClassMethod py() [ Language = python ]

{

   import iris

   rtn = "^test"
#  変数argのdictionary構造にa = 10, b = 20を設定
   arg = {"a":10, "b":20}

   ret = iris.cls('User.test').callrtn(rtn, arg)

# 戻り値のdictionary変数retにローカル変数sumの値が設定されている   
   print (ret.get("sum"))

}

 

次にルーチンを呼び出すためのクラスメソッドを定義します。

PythonのDictionary構造をObjectScriptで操作するためには、少し特別な処理が必要です。

ClassMethod callrtn(rtnname As %String, plist As %String) As %Integer [ ProcedureBlock = 0 ]

{
    // python dictから変数を取得
    set a = plist."get"("a")
    set b = plist."get"("b")
    
   // 2. ルーチンを実行する
   do @rtnname

   // 3. ローカル変数 ==> 戻り値 (python dict)
   kill rtnname,plist

   set ret = ##class(%SYS.Python).Builtins().dict()

   // 存在するローカル変数からdictionaryを生成する    set %="%"
   for {
       // ローカル変数を順番に取得
       set %=$Order(@%)

       quit:%=""        
       //変数retは除く
       continue:%="ret"
       do ret.setdefault(%, @%)

   }

   quit ret

}

 

2023.2以降のバージョンではarrayrefのサポートが追加されており、より直感的な処理が可能になりました。

 

ClassMethod py() [ Language = python ]
{
    import iris
    rtn = "^test"
    arg = {"a":10, "b":20}
    ar = iris.arrayref(arg)
    ret = iris.cls('Test.pytest').callrtn(rtn,ar)

    print (ret.get("sum"))
}

 

ClassMethod callrtn(rtnname As %String, plist As %String) As %Integer [ ProcedureBlock = 0 ]
{

    set a = plist("a")
    set b = plist("b")

    // ルーチン実行
    do @rtnname

    //ローカル変数 ==> 戻り値(python dict)
    kill rtnname, plist
    set ret = ##class(%SYS.Python).Builtins().dict()
    set % = "%"
    for {
        set %=$order(@%)
        quit:%=""
        continue:%="ret"
        do ret.setdefault(%, @%)
    }
    quit ret
}
Comentarios (0)1
Inicie sesión o regístrese para continuar
Artículo
· 12 sep, 2024 Lectura de 1 min

CSPGatewayLatencyメッセージの対応について

これは InterSystems FAQ サイトの記事です。
 

messages.logまたはcconsole.log内に記録されるCSPGatewayLatencyのメッセージは、サーバが、パフォーマンス測定のため定期的に「CSPゲートウェイにリクエストを送信して応答をもらう」ことを行っており、応答を受け取るまで一定時間以上かかったときに出る警告(応答時間の閾値)です。

 

その既定値は1000ミリ秒です。

 

WebGateway(CSPGateway)が稼働する Web サーバの負荷が高い場合に出力する場合がありますが、実際のCSPアプリケーションやREST APIの動作や応答速度に影響が見られなければ、特に問題はありません。

 

またこのメッセージの出力頻度を下げるためにこの閾値を変更する方法もあります。

 

変更方法は以下を参照ください

 

ヘルスモニタのセンサー値をコマンドで変更する方法 

Comentarios (0)1
Inicie sesión o regístrese para continuar
Artículo
· 12 sep, 2024 Lectura de 2 min

IIS上のWebGateway管理画面にアクセスすると404エラーが返ってくる場合の対処法

これは InterSystems FAQ サイトの記事です。
 

404エラーが返される場合に、以下の対応でエラーが解消されることがわかっています。


(1) binの接続を許可

 

/cspの構成エディタ>セクションで以下選択

  system.webServer > security > requestFiltering

  > hiddenSegmets 選択 > (コレクション)の右欄(Count=xx)の右端 [...] クリック

  > segment欄に binの行があったので、選択して削除

  > 画面戻って、右上の [適用] クリック  

 

または、IISの構成ファイルを直接編集することでも対応可能です。

 

C:\Windows\System32\inetsrv\config\applicationHost.config

 

そのファイルから以下のような記述部分を探し、<add segment="bin" />の行を削除し、保存します。

<requestFiltering>
<fileExtensions allowUnlisted="true" applyToWebDAV="true" />
<verbs allowUnlisted="true" applyToWebDAV="true" />
<hiddenSegments applyToWebDAV="true">
<add segment="web.config" />
<add segment="bin" />      <-- !!
</hiddenSegments>
</requestFiltering>

 

Default Web Site全体の設定を変えることが可能であれば、以下の記事の「操作方法」の箇所から

要求のフィルターより非表示のセグメント bin を削除してください。

Microsoftのドキュメント

(2) /cspのハンドラーマッピングで ISAPI-Dll が無効になっている

 

対処方法は以下の通りです。

 

/cspのハンドラーマッピング>ISAPI-Dll右クリック>機能のアクセス許可の編集>チェックボックスをすべて ON

 

(1)または(2)の対処後、IISを再起動してください。

Comentarios (0)1
Inicie sesión o regístrese para continuar
Artículo
· 12 sep, 2024 Lectura de 1 min

 IRISで公開しているベンチマーク資料

これは InterSystems FAQ サイトの記事です。
 

 以下のようなベンチマーク関連の情報が公開されています。

 

Intel社と共同で実施したパフォーマンス(レイテンシー)とスケーラビリティ(スループット)を計測するベンチマーク結果

Intel社との共同ベンチマーク

 

ESG社によるIRISと他社データベースとの性能比較に関するレポート

ESGテクニカルレビュー


ウルシステムズ社が実施したAWS AuroraとIRISの性能評価結果

ウルシステムズ社が検証したベンチマーク結果レポート

 

オープンソースのベンチマークプログラム

公開しているベンチマークプログラム

 

WinterCorp社のベンチマークレポート

WInterCorpのベンチマークレポート

 

様々なハードウェア上で実施したベンチマーク結果を公表

SQLベンチマーク

 

開発生産性の評価に関連するレポート

Neuralytix社のアプリケーション開発生産性の定量的比較

Comentarios (0)1
Inicie sesión o regístrese para continuar