[KEK Online Group] -> [Nakayoshi's Page] -> [SQL Test] -> [bufferRecord]

一括読み込みレコード(仮称:BufferRecord)の実装



テスト環境
テスト内容・結果
以前に行なった過負荷テストでは EPICS IOC を2つ起動し MySQL サーバへのアクセスを 試みたが、MySQL サーバのデフォルト最大接続数は、100であるためそれを超えた IOC からの 接続は拒否された。magnetRecord ではデータベースの1行に対し、ネットワークの 接続を行なうためである。 上記のような事態を防ぐため IOC から MySQL に対して1度のアクセスで全データを読みこむレコード(仮称:BufferRecord)を作成した。
具体的には、下記の dbd ファイルのようにあるメモリ領域の先頭アドレスポインタ BPTR を持っている。また、このメモリ領域から以前に定義した magnetRecord へデータコピー を行なう devMagMySql というソフトチャンネル・デバイスサポートも作成した。これにより Channel Access によりモニターを行なう側は、magnetRecord でも bufferRecord でも同じインターフェイスを使用することができる。MySQL サーバから取得するマグネットの台数(行数)が多ければ(1000台オーダ)、bufferRecord を使うのが効率的だし、10〜100台ならば magnetRecord でも充分対応可能だと思われる。bufferRecord による定量的な測定は、今後の課題である。
上記 bufferRecord, devMagMySql は KEK加速器施設の小田切氏の御指導のもと作成を行ないました。改めてここに感謝致します。

  • Start up ファイルは次のようなものである。
         #!../../bin/linux-x86/example
         < envPaths
         cd ${TOP}
    
         ## Register all support components
         dbLoadDatabase("dbd/example.dbd")
         example_registerRecordDeviceDriver(pdbbase)
    
         sqlDriverInit("bcce0", "username", "password","dbname", 0)
    
         dbLoadRecords("db/testBuf.db")
         dbLoadRecords("db/testSoft.db")
    
         iocInit()
    今後の予定

    Copyright © 1999 - 2004 "Kazuo NAKAYOSHI" <kazuo.nakayoshi@kek.jp>
    Last Modified: Mar. 28, 2005