JP2017532703A - コンピュータプロセスに関するロギング情報を生成するための高性能機構 - Google Patents

コンピュータプロセスに関するロギング情報を生成するための高性能機構 Download PDF

Info

Publication number
JP2017532703A
JP2017532703A JP2017534008A JP2017534008A JP2017532703A JP 2017532703 A JP2017532703 A JP 2017532703A JP 2017534008 A JP2017534008 A JP 2017534008A JP 2017534008 A JP2017534008 A JP 2017534008A JP 2017532703 A JP2017532703 A JP 2017532703A
Authority
JP
Japan
Prior art keywords
logging
thread
information
application
logging information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017534008A
Other languages
English (en)
Other versions
JP6498770B2 (ja
Inventor
ビニェラ,ピエール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull SA
Original Assignee
Bull SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bull SA filed Critical Bull SA
Publication of JP2017532703A publication Critical patent/JP2017532703A/ja
Application granted granted Critical
Publication of JP6498770B2 publication Critical patent/JP6498770B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3068Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data format conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3404Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本発明は、情報処理装置の組において少なくとも1つのアプリケーションスレッド(F1、F2)と少なくとも1つのロギングスレッド(Fj)とを含むプロセス(P1)を実行するステップと、少なくとも1つのアプリケーションスレッド内にロギングイベントを検出し、第1のロギング情報をロギングスレッド(Fj)に直ちに送信するステップと、第1のロギング情報を受信し、第1のロギング情報に基づいて第2のロギング情報を作成するステップと、ロギングスレッドに先に登録された少なくとも1つの処理要素(Fs、Pj)に発行インターフェイス(Ip)を介して第2のロギング情報を発行するステップとを備える、ロギング方法に関する。

Description

発明の分野
本発明は、情報処理装置のアセンブリ上で実行されるソフトウェアアプリケーション内のプロセスロギングの分野に関する。より詳細には、本発明は、いくつかのプロセスおよび/またはスレッドで動作するソフトウェアアプリケーションの場合にプロセスロギングを可能にする方法に関する。
発明の背景
「ロギング」は、ソフトウェアアプリケーションを担当する技術チームの開発者、試験者、または他のメンバーの注意を喚起するために、ソフトウェアアプリケーションの実行中に情報をエクスポートできるようにする機構である。この情報は、特定の誤動作を検出すること、または後者が知られると、それらの原因と判断し、それらの訂正を容易にすることを可能にする。ロギング情報のエクスポートは、ソフトウェアアプリケーションの開発段階中に実行することも、試験者のコミュニティ内の試験段階で実行することもできるが、製造段階で実行することもできる。ロギング情報は、次いで、アプリケーションのユーザにエクスポートされるが、ソフトウェアを担当する技術チームに何らかの方法で「報告され」てもよい。
ロギング情報は、表示端末またはメモリ、特に大容量メモリ「ハードディスク」タイプにエクスポートされてもよい。
特定の「重要な」ソフトウェアアプリケーションでは、応答時間が非常に制限されているが、大量の計算が必要である。これらの2つの要求を調和させるために、それらは従来、情報処理装置のアセンブリからなるシステム上で展開されている。次いで、これらの処理装置を利用するために、並列プログラミング技術が用いられる。
しかしながら、この並列性(膨大である可能性がある)にもかかわらず、応答時間と非常に大量の計算の処理とを両立することは、深刻な制約である。
さらに、ロギングは、例として、表示端末またはメモリに対する入力/出力を必要とする。入力/出力機構は処理時間の点でコストがかかる。結果として、ロギングはソフトウェアアプリケーションの性能上に影響を及ぼす。
重要なソフトウェアアプリケーションの枠組では、その性能を低下させないためにロギングを行わないことが非常に頻繁に選択される。この結果、このソフトウェアアプリケーションの誤動作の検出および修正が困難になる。
発明の概要
本発明の目的は、重要なソフトウェアアプリケーション、特に並列ソフトウェアアプリケーションを含む、効率的なロギングを可能にする機構を提供することによって先行技術を改善することである。
この目的のため、本発明は、
−情報処理装置のアセンブリにわたって少なくとも1つのアプリケーションスレッドと少なくとも1つのロギングスレッドとを含むプロセスを実行することと、
−少なくとも1つのアプリケーションスレッド内にロギングイベントを検出し、第1のロギング情報を前記少なくとも1つのロギングスレッドに直ちに送信することと、
−前記第1のロギング情報を受信し、前記第1のロギング情報から開始する第2のロギング情報を生成することと、
−前記少なくとも1つのロギングスレッドに先に登録された少なくとも1つの処理要素に発行インターフェイスを介して前記第2のロギング情報を発行することとを備える、ロギング方法を提供する。
好ましい実施の形態によれば、本発明は以下の特徴の1つ以上を備え、それらは、別々に、または互いとの部分的もしくは全体的な組合せにおいて用いられてもよく、
−前記少なくとも1つの処理要素は、前記プロセスに属する出力スレッドを含む。
−前記少なくとも1つの処理要素は、前記プロセスとは異なるロギングプロセスのスレッドを含む。
−前記アプリケーションスレッドは、前記第1の情報を、前記少なくとも1つのロギングスレッドに、非同期的に、通信インターフェイスを介して送信する。
−前記通信インターフェイスおよび前記発行インターフェイスはソケットタイプであり、ZeroMQライブラリに従う。
−前記プロセスの開始において、前記少なくとも1つのアプリケーションスレッドは、その実行を続ける前に、前記少なくとも1つのロギングスレッドの初期設定に対して待機し、前記ロギングスレッドは、それ自体を前記少なくとも1つの処理要素のサブセットと同期させることによって、それ自体を初期化する。
−前記第1のロギング情報は名称およびレベルを含む。
−前記プロセスが複製されると、前記少なくとも1つのロギングスレッドは終了され、次いで、最初の親プロセス内で再起動される。
−前記少なくとも1つのロギングスレッドは、信号を受信すると、前記信号に関連付けられる第2のロギング情報を発行し、次いで、前記信号に関連付けられる処理コードをトリガする。
−前記アプリケーションスレッドは、信号を受信すると、前記信号に関連付けられる第1のロギング情報を前記少なくとも1つのロギングスレッドに送信し、所与の時間待機した後、前記プロセスを終了させる。
本発明の他の特徴および利点は、例として与えられた本発明の好ましい1つの実施の形態の以下の記載を、添付された図面を参照して読むことで明らかになる。
本発明の1つの例示的な実施の形態を概略的に示す。 本発明の1つの実施の形態に従う有限状態機械を概略的に示す。
本発明の詳細な記載
ソフトウェアの観点からは、ソフトウェアアプリケーションは1つ以上のプロセスからなる。
「プロセス」は、情報処理システム(またはコンピュータ)によって実行されているプログラムとして見なされてもよい。プロセスは以下を備えるとして定義されてもよい:
−リードオンリメモリにあってもよいが、最も頻繁には大容量メモリからランダムアクセスメモリにダウンロードされる、実行されるべき命令のセット;
−スタック、作業データなどを保存するためのランダムアクセスメモリ内のアドレス指定空間;
−ネットワークポートなどのようなリソース。
同じプロセスはいくつかのスレッド(またはタスクまたは軽いプロセス)を備えてもよい。プロセスとは対照的に、スレッドは独自の仮想メモリを破棄せず、同じプロセスのすべてのスレッドとそれを共有する。
図1によって示された例では、アプリケーションは2つのプロセスP、Pを備える。プロセスPは3つのスレッドF、F、Fを備える。図示されないが、プロセスPもいくつかのスレッドを備えてもよい。
スレッドは、プロセスの寿命、およびより強い理由で、アプリケーションの実行時間とは異なる寿命を有してもよいことが注目され:スレッドは、プロセスの実行中に動的に実行され、スレッドが提供されたタスクが終わると、いつでも終了されてもよい。したがって、図1はソフトウェアアプリケーションの実行における所与の瞬間での状況を示す。
以下では、スレッドF、Fは、それらをロギングスレッドまたはF、および以下に記載される出力スレッドFから区別するために、「アプリケーションスレッド」と呼ばれる。
ソフトウェアアプリケーションが実行されることを可能にする情報処理システムは、典型的には情報処理装置のアセンブリから形成された並列システムである。
各情報処理装置はたとえば関連付けられる回路(メモリなど)を伴うマイクロプロセッサであってもよく、そのとき、システムは相互接続されたマイクロプロセッサのアセンブリから形成される。別の例は、システムを形成する単一のマイクロプロセッサのそれであり、物理コアのアセンブリから構成される。そのようなマイクロプロセッサは概して「マルチコア」と呼ばれる。
実現されるアーキテクチャとは無関係に、図1の例のプロセスP、P、P、およびそれらが含むスレッドは、並列に実行されてもよい。
プロセスP1が起動すると、少なくとも1つのスレッドも起動する。この第1のスレッドは、その後、他のスレッドの実行を開始することができる。これらのスレッドはもちろんアプリケーションスレッドであってもよい(言いかえれば、アプリケーションに属し、アプリケーションの「ロジック」が実現されることを可能にする)が、とりわけロギングスレッドFであってもよい。
以下では、図1において示されるように、1つのロギングスレッドのみが記載される。しかしながら、特に負荷の分散を可能にするために、いくつかのロギングスレッドを提供することが可能である。
1つの実施の形態によれば、ロギングスレッドが起動されると、それは以下を形成する:
−アプリケーションスレッドF、F、言いかえれば、メインアプリケーションスレッドからの、およびそれが続いて形成するかもしれない任意の潜在的なスレッドからの第1のロギング情報の受信を可能にする通信インターフェイスI
−第2のロギング情報が処理要素に発行されることを可能にする発行インターフェイスI
ここで、「処理要素」はスレッドおよびプロセスを指す。図1において、後で理解されるように、ロギングプロセスPおよび出力スレッドFはロギング情報を受信することができるような処理要素を形成する。
本発明の1つの実施の形態によれば、これらのインターフェイスは「ソケット」タイプである。「ソケット」は、「Unix(登録商標)」タイプのオペレーティングシステム上で開発された当業者に周知の通信機構であるが、今日では大多数のオペレーティングシステムの下で存在する。
それらはたとえばZeroMQに従ってもよい。ZeroMQは、オペレーティングシステムに依存しないさらなるインフラストラクチャサービスを提供するために基底のオペレーティングシステムとアプリケーションとの間に挿入される「ミドルウェア」タイプのプラットフォームである。CORBA(コモンオブジェクトリクエストブローカーアーキテクチャ)などの並行プラットフォームに関しては、たとえば、ZeroMQは、優れた使用環境および優れたパフォーマンス特性を提供する。コードはアプリケーションスレッドにとって非常に短いため、処理のオーバーロードがほとんどなく、ZeroMQライブラリ自体内の処理も非常に高速である。したがって、ZeroMQは本発明の要件に準拠し、所望のサービスが不利益かもしれないいかなる付加的処理もなしに満たされることを可能にする。
ZeroMQが提供する機構は、ライブラリを通して、C言語におけるアプリケーションコードを使用してアクセス可能である。したがって、本発明の機構および利点はC言語において開発されたプロセスに関してアクセス可能である。
1つの実施の形態によれば、通信インターフェイスIは非同期インターフェイスであり:それは、アプリケーションスレッドがロギング情報を送信し、次いでその処理を続けることを、ロギングスレッドFからの肯定応答を待つことなく可能にする。
ZeroMQを用いる実現例の枠組では、この通信インターフェイスIはプッシュ/プル型であってもよい。この場合、起動で、ロギングスレッドは、「プル」タイプのソケットを形成する。アプリケーションスレッドF、Fは、次いで、ロギングスレッドFの「プル」ソケットに接続された「プッシュ」タイプのソケットを介してロギング情報を送信してもよい。
通信インターフェイスIを形成する2つのタイプのソケット間において、「inproc(インプロセス)」プロトコルなどのようなスレッド間およびプロセス内トランスポートプロトコルが確立されてもよい。このプロトコルは同じプロセス内でスレッド間のメッセージの送信を可能にし:情報は、プロセスと関連付けられるコンテキストに属するメモリによって直接送信される。したがって、この機構はいかなる入力/出力も生成せず、したがって本発明に従う方法の高性能に寄与する。
発行インターフェイスIは、ロギングスレッドF内に形成される「pub(発行)」タイプのソケットを含んでもよい。処理要素(プロセスまたはスレッド)P、Fは、ロギングスレッドPの「pub」ソケットにサブスクライブするために「sub()」タイプのソケットを形成することができる。したがって、ZeroMQによって管理される「発行・サブスクライブ」モデルは、メッセージが、既にサブスクライブされたすべての処理要素に送信されることを可能にする。
本発明の1つの実施の形態によれば、プロセス(P)の開始において、アプリケーションスレッドは、その実行を続ける前に、このロギングスレッド(F)の初期設定を待つ。
それがロギングスレッドFの実行を開始すると、プロセスPの(メイン)スレッドは、ロギング情報を受信しなければならないある数の処理要素を示すことができる。それは、このサブスクライブされた処理要素の数が到達されたとき、ロギングスレッドFから肯定応答を受信するにすぎないことになる。一旦、肯定応答が受信されると、次いで、スレッドはその実行を続けることができる。
同様に、ロギングスレッドFは、それを、ロギング情報を受信しなければならない数の処理要素と同期させることによって、初期化される。
この目的のため、ロギングスレッドFは同期情報を発行することができる。この情報の受信で、それを受信した処理要素は、ロギングスレッドに肯定応答を送信することになる。後者は、受信された肯定応答をカウントし、規定数がいつ到達されるかを容易に判断することができる。
この同期段階では、ロギング情報が失われないことが保証され:実際、ロギングスレッドFと処理要素との間の接続の確立は、ある時間を取り得る。さらに、処理要素それら自体も初期化のプロセスにあり得る。この時間中において、ロギングスレッドFがロギング情報を直ちに送信し始めた場合、後者は、受信処理要素によって発行されるロギング情報の送信における肯定応答がないために、失われるであろう。このように肯定応答がないことは、十分な性能特性が達成されることを可能にする。
しかしながら、ある状況では、いかなるロギング情報も失わないことは重要または重大にさえなり得る。
この実現例によれば、したがって、この同期機構によってすべての同期情報の受信を保証しなければならない処理要素の数を特定することができる。
この数の要素は、サブスクライブされた処理要素の組のサブセットを決定し、なぜならば一旦初期化段階が終わると、他の処理要素がロギングスレッドFの発行にサブスクライブすることが完全に可能であるからである。しかしながら、後者はロギングスレッドFの第1の発行を逃すかもしれない。
本発明に従うロギング方法は、プロセスPの実行のためのステップを備える。先に記載されたように、この実行は、少なくとも1つのアプリケーションスレッドF、および1つのロギングスレッドFの実行を必要を伴う。C言語で書かれたプロセスの場合、このアプリケーションスレッドFは関数のmain()の実行に対応してもよい。
一旦初期化段階が終わると、アプリケーションスレッドはソフトウェアアプリケーションのコードを実行する。
方法は、アプリケーションスレッド内にロギングイベントを検出すること、および第1のロギング情報e1、e2をロギングスレッドFに直ちに送信することにある。
ロギングイベントの検出はそれ自体公知の技術であり、それは、ある条件が満たされるとロギングイベントをトリガするために「ロガー」をコードに挿入することにある。これらの条件は、非常に単純に、(コードの動作の順序を守るために)コード内の正確なポイントを通過すること、またはそうでなければエラーの状況などであってもよい。
アプリケーションスレッドF、Fによって生成されたこのロギング情報は、それを、ロギングスレッドFによって発行される第2のロギング情報と区別するために、ここでは「第1のロギング情報」と呼ばれる。
この情報は名称およびレベルのみを含んでもよい。1つの実施の形態によれば、この第1の情報はこの名称およびこのレベルのみを含む。
名称は、アプリケーションコード内でロガーを識別する一続きの文字であってもよい。
レベルは、一般的に、イベントの重大性の度合を識別する整数である。このレベルは先に規定されたリストに属してもよく、それは以下を含んでもよい:
−「重大」:一般に、プロセスの終了に至る重大なエラーを示す。
−「エラー」:通常のエラーを示す。
−「警告」:重要でないエラーを示す。
−「出力」:通常のメッセージ(エラーに関連付けられない)を示す。
−「情報」:アプリケーションの(開発者および試験者だけでなく)ユーザの注意を喚起するメッセージを示す。
−「デバッグ」:アプリケーションの試験者(または「デバッガー」)に向けた、より詳細なメッセージを示す。
−「トレース」:最も詳細なレベルに関連付けられるメッセージを示す。その使用は、明らかにアプリケーションの開発段階のために意図される。
このリストは当然のことながら非網羅的である。多くの他のレベルがアプリケーションの開発者によって規定されてもよい。
本発明の機構によって考慮されるためには、開発者または試験者に対して意図されるすべての出力がこの形式に適合することが重要である。したがって、開発者にとっては、特にC言語のprintf()関数による直接出力を避けることが重要である。それらは、たとえば「出力」レベルと置換されてもよい。
この第1の情報はさらに以下のものを含んでもよい:
−ロギングイベントの発生のタイムスタンプ;
−プロセスPの識別子;
−実行コンテキストについての他の情報:カーネルのスレッドに対する識別子、ソフトウェアアプリケーション名、ファイル名、アプリケーションコードの行番号、実行中の関数の名称など。
本発明によれば、アプリケーションスレッドは、この第1のロギング情報を通信インターフェイスIを介してロギングスレッドFに直ちに送信する。先に理解されたように、このインターフェイスは非同期であり、いかなる肯定応答も必要としない。また、一旦送信が(ロギングスレッドによる受信について心配することなく)実行されると、アプリケーションスレッドF、Fは、直ちにアプリケーション処理を続けることができるような態様で、どのようなロックもインストールされない。
1つの実施の形態によれば、どのような他の処理も、ロギングイベントの検出と第1のロギング情報の生成との間には適用されない。
1つの実施の形態によれば、フォーマット化処理動作のみが適用される。
いずれの場合も、本発明によれば、アプリケーションスレッドは入力/出力機構を設定せず:これらの機構はロギングスレッドFによって実現され、したがってアプリケーションスレッドF、Fの外部に転送される。
その結果、アプリケーションスレッドについて、追加費用は最小限に減じられる。
本発明の1つの実施の形態によれば、アプリケーションコードはモジュールに分割される。各モジュールは名称または識別子と関連付けられ、それはロガーの名称に組入れられてもよい。
たとえば、モジュール「Module1」では、ロガーの名称は、「Module1.logger1」、「Module1.logger2」などである。
この機構は、さまざまなロギングイベントがより明瞭に名付けられることを可能にし:チェーンの終わりで、イベントが発生したコード内の位置は、したがって、その名称に含まれるモジュール名の関数として直接的に決定されてもよい。
ロギングスレッドFは、アプリケーションスレッドF、Fによって生成された第1のロギング情報を非同期態様で受信する。そのとき、その役割は、アプリケーションスレッドから受信された第1のロギング情報およびおそらくは相補的な情報から開始する第2のロギング情報を生成することである。この相補的な情報は、プロセスのアプリケーションスレッドのすべてに共通の情報であってもよい。
ロギングスレッドFによって実現される処理は、この第2のロギング情報の生成に制限されてもよい。生成は、一方では、潜在的な相補的情報の追加を含んでもよいが、処理要素によるその利用を可能にする所定のフォーマットに従って、条件付けも含むことができる。
このフォーマット化は、非常に単純であってもよく、第2の情報が、用いられるコンピュータプログラミング言語から独立したフォーマットにあるように、もっぱらあるフォーマット化からなってもよい。
この第2の情報は、その後発行インターフェイスIを介してロギングスレッドFによって発行される。次いで、それは、先に記載されたように、ロギングスレッドに既に登録されている1つ以上の処理要素Fs、)によって受信されることができる。
これらの処理要素は、プロセスP1に属する出力スレッドFを含んでもよい。この出力スレッドは、表示端末(画面等)上、メモリ、特に大容量メモリなどに保存されたファイル内、などに、第2のロギング情報の出力を形成するよう設計されてもよい。
これらの出力機構は、ハードウェアとの必要とされる対話のため、および一般に肯定応答の必要性(スレッドは、情報が実際にハードディスクなどに保存されたことを確認する必要がある)のため、処理時間において高くつく。
本発明により、これらの機構は、ロギングスレッドの動作シーケンスと並行する態様でその動作シーケンスに従うアプリケーションスレッドに影響を与えない。
処理要素は、さらに、前記プロセス(P)とは異なるロギングプロセス(P)を含んでもよい。
このプロセスは、さらに、出力スレッドFと同じ態様で出力機構を実現してもよい。
さらに、それは、ロギング情報の利用のためのより複雑な機構:フィルタ処理などを実現してもよい。
本発明の1つの実施の形態によれば、プロセスPが複製されると、ロギングスレッドFおよび潜在的な出力スレッドFは終了され、次いで、最初の親プロセスP内で再起動される。娘プロセス内において、これらの2つのスレッドは再起動されない(以下に記載されるように、それらは「ファイナライズ済み」状態に入る)。実際、非常に頻繁に、娘プロセスは、娘プロセスの内容を新しいプログラムによって置き換えて「潰す」関数「exec()」の実行をトリガし:したがって、ロギングスレッドおよび出力スレッドの自動再起動をトリガする必要はなく、それは逆効果でさえあるかもしれない。
複製はまたは「fork」は、「Unix(登録商標)」タイプのオペレーティングシステムで動作するソフトウェアアプリケーションまたはPosix規格に準拠したソフトウェアアプリケーションで新しいプロセスを作成するための機構である。
いくつかのスレッドを含むプロセス(「マルチスレッドプロセス」)の複製は重大な問題を提起する。この問題は、特にPosix規格、IEEE1003.1、特に「Rationales」の部分に記載されている。
本発明によって実現される機構は、それが回避されることを可能にする。
さらに、複製「fork()」を最良に管理するために、状態機械の管理を設定してもよい。
図2は、ロギングスレッドFのそのような状態機械を示す。スレッドFは5つの主な状態であり得ることが考えられる。これらの状態は従来、
−「未設定」:「開始されていない」状態に対応し、これは、スレッドが、アプリケーションスレッドがその初期化をトリガする前であってもよい状態に対応する。
−「初期化中」:スレッドの初期化状態に対応し、その間に前述の同期化ステップが特に行われる。
−「初期化済」:ロギングスレッドの通常動作に対応する。
−「ファイナライズ中」:ロギングスレッドの終了に対応する。
−「ファイナライズ済み」:スレッドが終わった状態に対応する。
ある状態では、本発明のこの実施の形態によれば、複製は禁じられる。これは、「初期化中」状態および「ファイナライズ中」状態に対する場合であり:矢印「fork()」は「不正な」状態に至る。
特定の状態「未設定」および「ファイナライズ済み」では、複製が許可されてもよく、特定の処理動作を発生させなくてもよい。矢印「fork()」は現在の状態にループして戻る。
「初期化済」状態では、複製は、ロギングスレッドを終了させるために遷移を状態「ファイナライズ中」に移行する。
潜在的な出力スレッドFについて同じことが言える。
一旦スレッドが終わると、プロセスを複製することができる。
一旦、複製が実行されると、スレッドFおよびFは再起動されてもよい。親プロセス(言いかえれば初期プロセスP)では、スレッドは、それらが複製前であった状態、言いかえれば「初期化済」状態で再起動される。娘プロセスでは、スレッドは「未設定」状態で開始し:次いで、娘プロセスのアプリケーションスレッドはそれに状態を変更させるためにその初期設定を起動しなければならない。
さらに、PosixまたはUnix(登録商標)タイプのシステムの下で動作するプロセスPは、信号を受信することができる。これらの信号は、信号SIGINT、SIGTERM、SIGQUIT、SIGSEGV、SIGBUSなどのような、プロセスを終了させるために与えられてもよい。
このような信号がロギングスレッドFによって受信されると、後者はそれらをそれらの性質に応じて処理するかどうかを選択してもよい。たとえば、信号SIGINT、SIGTERMおよびSIGQUITは、アプリケーションスレッドによって処理される必要があると考慮されてもよく、したがって、ロギングスレッドによって考慮されなくてもよい。それは、他方、SIGSEGVおよびSIGBUSなどの他のタイプの信号を考慮してもよい。
そのような信号の受信と同時に、ロギングスレッドFは、これはロギングイベントを構成すると考慮し、次いで、この信号と関連付けて、ロギング情報を発行してもよい。
続いて、それはもう一度この信号およびその「通常の」処理をトリガしてもよい。信号の通常の処理は、典型的には「ハンドラ」と呼ばれ、この信号と関連付けられる処理コードによって提供される。この信号SIGSEGVまたはSIGBUSの通常の処理はプロセスの終了に至る。
したがって、この機構によって、プロセスは、終わることにある、期待される挙動を採用するが、このイベントの受信にリンクされるロギングも確実に行われ:さらに、処理要素がロギングスレッドにサブスクライブされる場合には、それにプロセスPの終了の原因が通知される。
信号がアプリケーションスレッドによって受信される場合には、後者はそれがロギングイベントを構成すると判断してもよい。この目的のため、ある特定のコードが「ハンドラ」として信号に関連付けられてもよく:所与の信号の受信で、この特定のコードがオペレーティングシステムによってトリガされる。
この特定のコードは通信インターフェイスIを介してロギングスレッドに(第1の)ロギング情報の即時送信を可能にする。
このコードは、さらにロギングスレッドがこの第1のロギング情報から開始する第2のロギング情報を生成し、発行インターフェイスを介してそれを発行することを可能にする待ち時間を含んでもよい。
そのときのみ、特定のコードは、プロセスの終了を実現するかまたはプロセスそれ自体を終了するために、通常の処理コードを呼出すことができる。
したがって、サブスクライブされた処理要素は、プロセスの終了の原因を通知されることができる。
言うまでもなく、本発明は、説明され図示された例および実施の形態に限定されず、当業者がアクセス可能な多数の変形例が可能である。

Claims (10)

  1. ロギング方法であって、
    情報処理装置のアセンブリにわたって少なくとも1つのアプリケーションスレッド(F、F)と少なくとも1つのロギングスレッド(F)とを含むプロセス(P)を実行することと、
    前記少なくとも1つのアプリケーションスレッド内にロギングイベントを検出し、第1のロギング情報を前記少なくとも1つのロギングスレッド(F)に直ちに送信することと、
    前記第1のロギング情報を受信し、前記第1のロギング情報から開始する第2のロギング情報を生成することと、
    前記少なくとも1つのロギングスレッドに先に登録された少なくとも1つの処理要素(F、P)に発行インターフェイス(I)を介して前記第2のロギング情報を発行することとを備える、ロギング方法。
  2. 前記少なくとも1つの処理要素は、前記プロセス(P)に属する出力スレッド(F)を含む、請求項1に記載の方法。
  3. 前記少なくとも1つの処理要素は、前記プロセス(P)とは異なるロギングプロセス(P)のスレッドを含む、請求項1または2に記載の方法。
  4. 前記アプリケーションスレッド(F)は、前記第1の情報を、前記少なくとも1つのロギングスレッドに、非同期態様で、通信インターフェイス(I)を介して送信する、先行する請求項の1つに記載の方法。
  5. 前記通信インターフェイスおよび前記発行インターフェイスはソケットタイプであり、ZeroMQライブラリに従う、先行する請求項の1つに記載の方法。
  6. 前記プロセス(P)の開始において、前記少なくとも1つのアプリケーションスレッド(F、F)は、その実行を続ける前に、前記少なくとも1つのロギングスレッド(F)の初期設定に対して待機し、前記ロギングスレッドは、それ自体を前記少なくとも1つの処理要素(F、P)のサブセットと同期させることによって初期化される、先行する請求項の1つに記載の方法。
  7. 前記第1のロギング情報は名称およびレベルを含む、先行する請求項の1つに記載の方法。
  8. 前記プロセス(P)が複製されると、前記少なくとも1つのロギングスレッド(F)は終了され、次いで、最初の親プロセス(P)内で再起動される、先行する請求項の1つに記載の方法。
  9. 前記少なくとも1つのロギングスレッドは、信号を受信すると、前記信号に関連付けられる第2のロギング情報を発行し、次いで、前記信号に関連付けられる処理コードをトリガする、先行する請求項の1つに記載の方法。
  10. 前記アプリケーションスレッドは、信号を受信すると、前記信号に関連付けられる第1のロギング情報を前記少なくとも1つのロギングスレッドに送信し、所与の時間待機した後、前記プロセスを終了させる、先行する請求項の1つに記載の方法。
JP2017534008A 2014-09-10 2015-08-25 コンピュータプロセスに関するロギング情報を生成するための高性能機構 Expired - Fee Related JP6498770B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR1458511A FR3025627B1 (fr) 2014-09-10 2014-09-10 Mecanisme haute performance pour generation d'informations de journalisation d'un processus informatique
FR1458511 2014-09-10
PCT/FR2015/052267 WO2016038272A1 (fr) 2014-09-10 2015-08-25 Mecanisme haute performance pour generation d'informations de journalisation d'un processus informatique

Publications (2)

Publication Number Publication Date
JP2017532703A true JP2017532703A (ja) 2017-11-02
JP6498770B2 JP6498770B2 (ja) 2019-04-10

Family

ID=52450276

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017534008A Expired - Fee Related JP6498770B2 (ja) 2014-09-10 2015-08-25 コンピュータプロセスに関するロギング情報を生成するための高性能機構

Country Status (7)

Country Link
US (1) US11874758B2 (ja)
EP (1) EP3191961A1 (ja)
JP (1) JP6498770B2 (ja)
CN (1) CN107003927A (ja)
FR (1) FR3025627B1 (ja)
IL (1) IL251095A0 (ja)
WO (1) WO2016038272A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649071B (zh) * 2016-12-30 2019-12-20 广州华多网络科技有限公司 进程内部日志上报的方法和装置
FR3075999B1 (fr) 2017-12-27 2021-02-19 Bull Sas Procede de controle de la gestion des traces d'evenements dans l'execution d'une application informatique sur une machine informatique
CN113434362A (zh) * 2021-06-24 2021-09-24 广州欢网科技有限责任公司 Android程序发生异常时自动预警的方法及装置
CN113190418A (zh) * 2021-07-01 2021-07-30 奇安信科技集团股份有限公司 日志接收方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006268146A (ja) * 2005-03-22 2006-10-05 Toshiba Corp 駅務中継機
JP2007199956A (ja) * 2006-01-25 2007-08-09 Fujitsu Ltd ロギング情報管理方法およびロギング情報管理システム
JP2013206117A (ja) * 2012-03-28 2013-10-07 Fujitsu Ltd ログ出力装置、ログ出力方法およびログ出力プログラム

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870588A (en) * 1995-10-23 1999-02-09 Interuniversitair Micro-Elektronica Centrum(Imec Vzw) Design environment and a design method for hardware/software co-design
US6256775B1 (en) * 1997-12-11 2001-07-03 International Business Machines Corporation Facilities for detailed software performance analysis in a multithreaded processor
GB2367642B (en) * 2000-05-27 2004-05-05 Ibm Performance profiling tool
FI114663B (fi) * 2001-12-20 2004-11-30 Nokia Corp Menetelmä ja järjestelmä käyttöjärjestelmätoimintojen suorittamiseksi sekä elektroniikkalaite
US7661036B1 (en) * 2005-11-08 2010-02-09 Oakley Networks Cache for collecting events on a monitored computer
US20080250412A1 (en) * 2007-04-06 2008-10-09 Elizabeth An-Li Clark Cooperative process-wide synchronization
CN101414255A (zh) * 2007-10-19 2009-04-22 国际商业机器公司 日志事件处理方法与设备
KR20100022171A (ko) * 2008-08-19 2010-03-02 삼성전자주식회사 스레드 지향 로깅 시스템에서 로그 저장 방법 및 장치
CN101763593A (zh) * 2009-12-17 2010-06-30 中国电力科学研究院 一种实现系统审计日志的方法及装置
US8499299B1 (en) * 2010-06-29 2013-07-30 Ca, Inc. Ensuring deterministic thread context switching in virtual machine applications
US9384112B2 (en) * 2010-07-01 2016-07-05 Logrhythm, Inc. Log collection, structuring and processing
US8667472B1 (en) * 2010-07-29 2014-03-04 Disney Enterprises, Inc. System and method of instrumenting code for in-production monitoring
WO2012046302A1 (ja) * 2010-10-05 2012-04-12 富士通株式会社 マルチコアプロセッサシステム、監視制御方法、および監視制御プログラム
CN102455889B (zh) * 2010-10-29 2014-03-26 金蝶软件(中国)有限公司 一种获取进程输出日志的方法、装置及企业系统
US20130024875A1 (en) * 2011-07-22 2013-01-24 Yilin Wang Event System And Methods For Using Same
US8726225B2 (en) * 2011-08-01 2014-05-13 Vmware, Inc. Testing of a software system using instrumentation at a logging module
US9202047B2 (en) * 2012-05-14 2015-12-01 Qualcomm Incorporated System, apparatus, and method for adaptive observation of mobile device behavior
US10192261B2 (en) * 2012-08-23 2019-01-29 Openet Telecom Ltd. System and method for performing offline revenue assurance of data usage
US20140237474A1 (en) * 2013-02-19 2014-08-21 Appsense Limited Systems and methods for organizing dependent and sequential software threads

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006268146A (ja) * 2005-03-22 2006-10-05 Toshiba Corp 駅務中継機
JP2007199956A (ja) * 2006-01-25 2007-08-09 Fujitsu Ltd ロギング情報管理方法およびロギング情報管理システム
JP2013206117A (ja) * 2012-03-28 2013-10-07 Fujitsu Ltd ログ出力装置、ログ出力方法およびログ出力プログラム

Also Published As

Publication number Publication date
CN107003927A (zh) 2017-08-01
IL251095A0 (en) 2017-04-30
FR3025627B1 (fr) 2018-03-23
EP3191961A1 (fr) 2017-07-19
US11874758B2 (en) 2024-01-16
US20170255540A1 (en) 2017-09-07
JP6498770B2 (ja) 2019-04-10
FR3025627A1 (fr) 2016-03-11
WO2016038272A1 (fr) 2016-03-17

Similar Documents

Publication Publication Date Title
US7000150B1 (en) Platform for computer process monitoring
US8788569B2 (en) Server computer system running versions of an application simultaneously
US8095823B2 (en) Server computer component
US7908521B2 (en) Process reflection
US8984534B2 (en) Interfacing between a receiving component of a server application and a remote application
US10394645B2 (en) Correcting operational state and incorporating additional debugging support into an online system without disruption
US11385993B2 (en) Dynamic integration of command line utilities
US9477576B2 (en) Using application state data and additional code to resolve deadlocks
JP6498770B2 (ja) コンピュータプロセスに関するロギング情報を生成するための高性能機構
US20090172636A1 (en) Interactive development tool and debugger for web services
CN107203465B (zh) 系统接口测试方法及装置
JP5648187B2 (ja) 計算機システム、および、監視方法
CN109739624B (zh) 分布式事务处理方法、装置、电子设备及计算机可读介质
US11175991B2 (en) Vehicle control system having a hierarchical distributed architecture
US20070283327A1 (en) Hierarchical test verification using an extendable interface
US11151020B1 (en) Method and system for managing deployment of software application components in a continuous development pipeline
US20110113436A1 (en) Event Logging Application Programming Interface (API)
De Iasio et al. A framework for microservices synchronization
Ma et al. Analyzing distributed Java applications by automatic centralization
CN115309417A (zh) 旧式系统上的无应用程序中断的软件更新
Andrzejak Generic Self-Healing via Rejuvenation: Challenges, Status Quo, and Solutions
Echternkamp Distributed Pipe-and-Filter architectures with TeeTime
Chen A pilot study of cross-system failures
Demirbas et al. Does the cloud need stabilizing?
Navarro et al. Detecting and coordinating complex patterns of distributed events with KETAL

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180626

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180919

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190313

R150 Certificate of patent or registration of utility model

Ref document number: 6498770

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees