Go to main content
マニュアルページ セク ション 1: ユー ザーコマンド

印刷ビューの終了

更新: 2016年12月6日
 
 

madv.so.1(1)

名前

madv.so.1 - madv ライブラリ

形式

/usr/lib/madv.so.1 

説明

madv.so.1 共有オブジェクトは、起動されたプロセス (1 つまたは複数) とその子孫の VM アドバイスを選択的に構成する手段を提供します。madv.so.1 を有効にするには、次の文字列が 1 つ以上の MADV 環境変数とともに環境内に存在する必要があります (ld.so.1(1) を参照)。

LD_PRELOAD=$LD_PRELOAD:madv.so.1

環境変数

LD_PRELOAD リストに madv.so.1 共有オブジェクトを指定すると、次の環境変数が madv 共有オブジェクトに読み込まれ、指定されたアドバイスをどの生成済みプロセスに適用するのかが決定されます。

MADV=advice

MADV には、プロセスのアドレス空間内のすべてのヒープ、共有メモリー、および mmap 領域に使用される VM アドバイスを指定します。この情報は生成されたすべてのプロセスに適用されます。

advice の値は、madvise(3C) でメモリーアクセスパターンを指定するために使用する <sys/mman.h> の値と対応しています。

normal
random
sequential
access_lwp
access_many
access_many_pset
access_default
MADVCFGFILE=config-file

config-file は、次の形式の madv 構成エントリを 1 つ以上含むテキストファイルです。

exec-name exec-args:advice-opts

config-file で指定されたアドバイスは、MADV 環境変数によって指定された情報よりも優先されます。MADVCFGFILE が設定されていない場合は、/etc/madv.conf ファイルからアドバイスが取得されます (存在している場合)。

exec-name には、アプリケーションまたは実行可能ファイルの名前を指定します。対応するアドバイスは、ファイル内で最初に見つかった exec-name と一致する新規作成プロセス (getexecname(3C) を参照) 用に設定されます。

exec-name には、フルパス名、基本名、またはパターン文字列を指定できます。パターンマッチングについては、sh(1) の「ファイル名の生成」を参照してください。

exec-args は、引数と照合する任意指定のパターン文字列です。exec-args が指定されていないか、または exec-name の引数内に存在する場合にのみ、アドバイスは設定されます。

advice-opts は、次のようなさまざまなメモリー領域に対するアドバイスを指定したコンマ区切りのリストです。

madv=advice

プロセスのアドレス空間のすべてのヒープ、共有メモリー、および mmap 領域に適用されます。

heap=advice

ヒープは、brk 領域 (brk(2) を参照) として定義されます。既存のヒープにも、将来割り当てられる追加ヒープメモリーにも適用されます。

shm=advice
ism=advice
dism=advice

任意のフラグ、SHM_SHARE_MMU フラグ、または SHM_PAGEABLE フラグを使用して接続された共有メモリーセグメント (shmat(2) を参照)。ism および dism オプションは、shm オプションよりも優先されます。

map=advice
mapshared=advice
mapprivate=advice
mapanon=advice

mmap(2) の任意のフラグ、MAP_SHARED フラグ、MAP_PRIVATE フラグ、または MAP_ANON フラグを使用して確立されたマッピング。mapsharedmapprivate、および mapanon オプションは、map オプションよりも優先されます。mapanon オプションは、mapshared および mapprivate よりも優先されます。

MADVERRFILE=pathname

デフォルトでは、エラーメッセージは syslog(3C)LOG_ERR レベルと LOG_USER 機能を使用してログに記録されます。MADVERRFILE に有効な pathname (/dev/stderr など) が含まれている場合は、エラーメッセージがその場所に記録されます。

使用例 1 アドバイスをすべての ISM セグメントに適用する

次の構成では、/usr/bin/foo アプリケーションのすべての ISM セグメントにアドバイスを適用します。

example$ LD_PRELOAD=$LD_PRELOAD:madv.so.1
example$ MADVCFGFILE=madvcfg
example$ export LD_PRELOAD MADVCFGFILE
example$ cat $MADVCFGFILE
    /usr/bin/foo:ism=access_lwp
使用例 2 例外付きですべてのアプリケーションにアドバイスを設定する

次の構成では、ls を除くすべてのアプリケーションにアドバイスを設定します。

example$ LD_PRELOAD=$LD_PRELOAD:madv.so.1
example$ MADV=access_many
example$ MADVCFGFILE=madvcfg
example$ export LD_PRELOAD MADV MADVCFGFILE
example$ cat $MADVCFGFILE
    ls:
使用例 3 優先順位規則 (例 2 の続き)

MADVCFGFILE は MADV よりも優先されるため、最後の madv 構成エントリの exec-name に「*」(すべてに一致するパターン) を指定することは、MADV を設定することと同等です。次の例は、例 2 と同等です。

example$ LD_PRELOAD=$LD_PRELOAD:madv.so.1
example$ MADVCFGFILE=madvcfg
example$ export LD_PRELOAD MADVCFGFILE
example$ cat $MADVCFGFILE
    ls:
    *:madv=access_many
使用例 4 領域ごとに異なるアドバイスを適用する

次の構成では、foo で始まる実行可能ファイル名を持つ一連のアプリケーションについて、あるタイプのアドバイスを mmap 領域に、別のタイプのアドバイスをヒープ領域と共有メモリー領域に適用します。

example$ LD_PRELOAD=$LD_PRELOAD:madv.so.1
example$ MADVCFGFILE=madvcfg
example$ export LD_PRELOAD MADVCFGFILE
example$ cat $MADVCFGFILE
    foo*:madv=access_many,heap=sequential,shm=access_lwp
使用例 5 アドバイスの選択的な適用

次の構成では、名前が ora で始まり、引数として ora1 が指定されたアプリケーションのヒープにアドバイスを適用します。

example$ LD_PRELOAD=$LD_PRELOAD:madv.so.1
example$ MADVCFGFILE=madvcfg
example$ export LD_PRELOAD MADVCFGFILE
example$ cat $MADVCFGFILE
    ora* ora1:heap=access_many

ファイル

/etc/madv.conf

構成ファイル

属性

属性についての詳細は、マニュアルページの attributes(5) を参照してください。

属性タイプ
属性値
使用条件
system/extended-system-utilities)
インタフェースの安定性
不確実

関連項目

cat(1), ld.so.1(1), proc(1), sh(1), brk(2), exec(2), fork(2), mmap(2), memcntl(2), shmat(2), getexecname(3C), madvise(3C), syslog(3C), proc(4), attributes(5)

アドバイスは継承されます。子プロセスには親と同じアドバイスが適用されます。exec() (exec(2) を参照) では、madv 共有オブジェクトで別のアドバイスが構成されていないかぎり、アドバイスはデフォルトのシステムアドバイスに設定されます。

アドバイスは、ユーザープログラムによって作成された mmap 領域にのみ適用されます。実行時リンカーまたは直接システムコールを行うシステムライブラリ (libthread によるスレッドスタックの割り当てなど) によって確立された領域は影響を受けません。