英語フランス語スペイン語

Ad


OnWorksファビコン

memusage - クラウド上のオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーター上の OnWorks 無料ホスティング プロバイダーで memusage を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド memusage です。

プログラム:

NAME


memusage - プログラムのメモリ使用量をプロファイルする

SYNOPSIS


メモサージュ [オプション] ... プログラム [プログラムオプション] ...

DESCRIPTION


メモサージュ プログラムのメモリ使用量をプロファイリングする bash スクリプトです。 プログラム。 それ
をプリロードします libmemusage.so ライブラリを呼び出し元の環境に ( LD_PRELOAD
環境変数; 見る ld.so(8))。 の libmemusage.so ライブラリ トレース メモリ割り当て
への通話を傍受することで malloc関数(3) 呼び出し(3) 無料です。(3)と、 再割り当て(3); オプションで、呼び出します
〜へ mmap(2) ムリマップ(2)と、 ムンマップ(2)もインターセプト可能です。

メモサージュ 収集したデータをテキスト形式で出力したり、 memusagestat(1)(を参照
  -p 以下のオプション) を使用して、グラフィック表現を含む PNG ファイルを作成します。
収集されたデータ。

メモリ 使用 要約
によって出力される「メモリ使用量の概要」行 メモサージュ 次の XNUMX つのフィールドが含まれます。

ヒープ 合計
の合計 サイズ 全員の議論 malloc関数(3) 呼び出し、引数の積
(メンム*サイズ) 全部の 呼び出し(3) コール数と合計 長さ 全員の議論 mmap(2)
呼び出します。 の場合 再割り当て(3)と ムリマップ(2)、新しいサイズの場合
割り当ては以前のサイズよりも大きくなり、そのような差分をすべて合計したものになります
(新しいサイズから古いサイズを引いたもの) が追加されます。

ヒープ ピーク
すべての最大値 サイズ の引数 malloc関数(3)、のすべての製品 メンム*サイズ of
呼び出し(3)、すべて サイズ の引数 再割り当て(3) 長さ の引数 mmap(2)と、
新しいサイズ の引数 ムリマップとします。

スタック ピーク
監視対象関数への最初の呼び出しの前に、スタック ポインター アドレス
(ベーススタックポインタ)が保存されます。 各関数呼び出しの後、実際のスタック
ポインタアドレスが読み取られ、ベーススタックポインタとの差分が読み取られます。
計算された。 これらの差の最大値がスタックのピークになります。

この概要行の直後に、コール数と合計メモリが表に表示されます。
割り当てられたか割り当て解除されたか、インターセプトされた各関数の失敗した呼び出しの数。 ために
再割り当て(3)と ムリマップ(2)、追加フィールド「nomove」は、変更された再割り当てを示します。
ブロックのアドレス、および追加の「dec」フィールドは、減少した再割り当てを示します。
ブロックのサイズ。 ために 再割り当て(3)、追加フィールド「free」は再割り当てを示します。
これにより、ブロックが解放されました (つまり、再割り当てされたサイズは 0 でした)。

によって出力されたテーブルの「realloc/総メモリ」 メモサージュ 以下の場合は反映されません。
再割り当て(3) は、メモリのブロックを以前よりも小さいサイズに再割り当てするために使用されます。
これにより、すべての「合計メモリ」セル (「空き」を除く) の合計が、
「空きメモリ/総メモリ」セル。

ヒストグラム for コロナ新型ウィルス(COVID-XNUMX)やメンタルヘルスの崩壊を避ける為の サイズ
「ブロック サイズのヒストグラム」は、メモリ割り当てをさまざまなブロック サイズに分類して表示します。
バケツのサイズ。

OPTIONS


-n , --progname =
プロファイルするプログラム ファイルの名前。

-p file, --png=file
PNG グラフィックを生成して保存します。 file.

-d file, --データ=file
バイナリデータファイルを生成して保存します。 file.

-u, -バッファなし
出力をバッファリングしないでください。

-b サイズ, --バッファ=サイズ
収集します サイズ 書き出す前にエントリを確認してください。

--タイマーなし
タイマーベースを無効にする (シグプロフ) スタック ポインタ値のサンプリング。

-m, --mmap
トレースもする mmap(2) ムリマップ(2)と、 ムンマップとします。

-?, - 助けて
ヘルプを印刷して終了します。

- 利用方法
短い使用法メッセージを印刷して終了します。

-V, - バージョン
バージョン情報を印刷して終了します。

次のオプションは、グラフィック出力を生成する場合にのみ適用されます。

-t, --時間ベース
X 軸のスケールとして (関数呼び出しの数ではなく) 時間を使用します。

-T, - 合計
合計メモリ使用量のグラフも描画します。

--title =
  グラフのタイトルとして。

-x サイズ, --x-サイズ=サイズ
グラフを作成する サイズ ピクセル幅。

-y サイズ, --y-サイズ=サイズ
グラフを作成する サイズ ピクセルの高さ。

EXIT ステータス


終了ステータスは、プロファイルされたプログラムの終了ステータスと同じです。

実施例


以下は、ピークに達するサイクルでメモリのブロックを再割り当てする単純なプログラムです。
その後、ゼロに戻る小さなブロックにメモリを循環的に再割り当てします。
プログラムをコンパイルし、次のコマンドを実行すると、メモリのグラフが表示されます。
プログラムの使用法はファイルにあります memusage.png:

$ メモサージュ --data=memusage.dat ./a.out
...
メモリ使用量の概要: ヒープ合計: 45200、ヒープ ピーク: 6440、スタック ピーク: 224
合計コール数 合計メモリ失敗コール数
マロック| 1 400 0
リアロック| 40 44800 0 (nomove:40、dec:19、free:0)
コールク| 0 0 0
無料| 1 440
ブロックサイズのヒストグラム:
192-207 1 2% ================
...
2192-2207 1 2% ================
2240-2255 2 4% ================================
2832-2847 2 4% ================================
3440-3455 2 4% ================================
4032-4047 2 4% ================================
4640-4655 2 4% ================================
5232-5247 2 4% ================================
5840-5855 2 4% ================================
6432-6447 1 2% ================
$ memusagestat memusage.dat memusage.png

演奏曲目 source
#include
#include

#定義サイクル 20

int型
main(int argc, char *argv[])
{
int i, j;
int * p;

printf("malloc: %zd\n", sizeof(int) * 100);
p = malloc(sizeof(int) * 100);

for (i = 0; i < CYCLES; i++) {
if (i < CYCLES / 2)
j = i;
ほかに
j--;

printf("realloc: %zd\n", sizeof(int) * (j * 50 + 110));
p = realloc(p, sizeof(int) * (j * 50 + 100));

printf("realloc: %zd\n", sizeof(int) * ((j+1) * 150 + 110));
p = realloc(p, sizeof(int) * ((j + 1) * 150 + 110));
}

free(p);
終了(EXIT_SUCCESS);
}

onworks.net サービスを使用してオンラインで memusage を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad