Is there a cross platform C API that can be used to get system usage metrics?
4 に答える
私は以前にlibstatgrabを使用しました。Cygwinを介して主要なUnixライクなバリアントとWindowsの非常に便利なシステム統計を取得します(おそらく-試したことはありません)。OSが異なれば、動作も大きく異なります。特に使用状況の指標に関しては、必要なものを取得するのが難しい場合があります。「空きメモリ」のような単純なサウンドでさえ、クロスプラットフォームの方法で動作するのは難しい場合があります。少し絞り込んでいけば、何か見つけられるかもしれません。
収集するメトリクスによっては、 PCP (Performance Co-Pilot)を検討することをお勧めします。これは、Silicon Graphics で開発されたオープンソースのパフォーマンス フレームワークであり、膨大な数のソースから膨大な数の可能なメトリックを収集して照合し、どこからでも監視できるようにします。
基本的に、PCP では、システムに別の「レイヤー」を追加する必要があります。たとえば、それぞれに PCP がローカルにインストールされた混合 OS マシンの分散クラスターを監視する場合があります。一連の「エージェント」が各マシンのパフォーマンス データを収集し、コードで libpcp を使用して必要に応じてこれらのメトリックを収集できます。
正確な使用シナリオを知らずに言うのは難しいです (エンドユーザーのマシンでシームレスに実行されているものについて話している場合、PCP は適していない可能性がありますが、制御するマシンを監視し、PCP サービスを喜んで実行する場合)それらでは、それは素晴らしい解決策です)。
私たちは PCP を非常に喜んで使用して、Windows および Linux ボックスからメトリックを収集し、アプリケーションから内部メトリックを収集し、それらすべてを一元的にログに記録し、レポートし、傾向を監視します。
残念ながら違います。
C 標準は、動的割り当て、文字列操作、数学、およびテキスト I/O にかなり制限されています。それを超えると、OS API が必要になります。これは、定義上、OS 固有であり、クロスプラットフォームではありません。