Service Desk のメモリ管理について

Document created by Kosei_Oshita Employee on Jun 26, 2015
Version 1Show Document
  • View in full screen mode
文書番号JTEC000480
製品名Service Desk Manager
バージョン11.2
OSWindows

 


 

◆ 概要

Service Desk のプロセスが仮想メモリを恒久的につかんでいるように見える場合があります。メモリ使用量がピークに達してそこで安定し、二度と下がらないように見えま す。これはバグではなく、「高速メモリ」と呼ばれるパフォーマンス特性です。ここでは、高速メモリ機能の原理とその動きについて説明します。

 

 

◆ 詳細内容

Service Desk の長期プロセスやデーモンのほとんどで、少量のメモリの割り当てと解放を継続的に行う必要があります。動的に割り当てられるメモリは、文字列やメッセージ 引数など頻繁に利用されるオブジェクトをはじめとする、すべての内部オブジェクトを保持しておくために必要です。すべての文字列やメッセージ引数で、16 バイトの制御域とデータの記憶域が必要となります。プロセスはメモリの割り当て・解放に OS の機能を使用する場合もあります。しかしながら、その場合一定のオーバーヘッドがかかる上、プロセス時間が長くなるにつれメモリが断片化していく傾向があ り、その結果徐々にメモリ使用量が増大していきます。Service Desk が使用されている環境を考えると、何週間もプロセスを動かしたままということはもはや珍しいことではないため、これは考慮すべき重要事項です。

 

オーバーヘッドとメモリの断片化を防ぐために、Service Desk は大量メモリ割り当てを行います。一般的な固定長オブジェクト用のメモリを必要とするプロセスは、Service Desk のメモリ管理機能をコールすることで、大量メモリ割り当てを要求します。メモリ管理機能は、初めてリクエストを受け取った場合、OS に大量のメモリを要求します。この大量のメモリブロックが、アロケータとして内部的に参照されます。Service Desk メモリ管理は、アロケータを等分して多数のブロックにわけ、そのひとつをリクエストしたプロセスに返します。そしてプロセスがメモリの使用を終えると、別の内部機能をコールしメモリを解放状態にします。ただし、OS に戻しはしません。その代わりに、またプロセスがそのサイズのメモリブロックが必要になった場合に備えて保持しておきます。

 

メモリ管理機能では、異なる大きさの複数のアロケータを管理します。たとえば、16バイト、32 バイト、64 バイトなどの文字列アロケータがあり、それらは必要に応じて文字列の大きさによって使用されます。これらのアロケータをすぐに利用できるようにしておけ ば、非常に少ないオーバーヘッドで動的メモリ管理ができるようになります。

Service Desk インストールディレクトリにある NX.env で以下を設定すれば、高速メモリ機能を無効化できます。

@NX_NOFASTMEM=1

 

デフォルトではこの行がコメントアウトされています。メモリ使用量分析ツールを使うときなどに高速メモリを無効化する場合に便利です。しかしながら、実際に製品を利用される場合は、パフォーマンスを向上させ、全体的なメモリ使用量を減らすためにも、高速メモリ機能を利用されることを推奨します。


この情報は、CA Support Online に掲載されている以下のナレッジベースを翻訳したものです。

TEC420125: Service Desk Memory Management  (公開日:2007.03.19)

 

CA は、お客様が本情報を利用されたことによって生じた直接または間接な問題や損害については、いかなる責任を負わないものとします。もし誤訳を発見された場合には、CA サポートまでご連絡ください。

Attachments

    Outcomes