Solaris のバージョン 2.5 以上では /proc というディレクトリがあります。 これは UNIX 上で現在動いているプロセスのための擬似ディレクトリです。
この直下にある数字から成るディレクトリは PID (Process IDentifier) に対応するもので、カーネルにあるプロセス制御テーブルをマップしたものです。 従って、このサイズはディスク上のものではありません。
また、これらの擬似ファイルはカーネルの管理下にありますので、 削除できません。
このページでは solaris 7 (2.7) で実行した結果を載せていますが、 solaris 8 (2.8) では表示の一部が異なります。それについては solaris 8 のメモリマップで説明します。
> df -k ファイルシステム kbytes 使用済み 使用可能 capacity マウント先 /proc 0 0 0 0% /proc /dev/dsk/c0t0d0s0 1018191 340818 616282 36% / /dev/dsk/c0t0d0s6 1489367 1093092 336701 77% /usr fd 0 0 0 0% /dev/fd /dev/dsk/c0t0d0s7 12908388 11363593 1415712 89% /home00 /dev/dsk/c0t1d0s0 8706617 7216591 1402960 84% /home01 /dev/dsk/c0t1d0s1 8706617 4790964 3828587 56% /home02 /dev/dsk/c0t2d0s0 8706617 6367069 2252482 74% /home03 /dev/dsk/c0t2d0s1 8706617 6669800 1949751 78% /home04 /dev/dsk/c0t3d0s0 10084696 5262030 4721820 53% /home05 /dev/dsk/c0t3d0s1 7328537 5768223 1487029 80% /home06 /dev/dsk/c2t0d0s0 8706617 6396393 2223158 75% /home07 /dev/dsk/c2t0d0s1 8706617 4149434 4470117 49% /home08 /dev/dsk/c2t1d0s0 8706617 8034430 585121 94% /home09 /dev/dsk/c2t1d0s1 8706617 5827737 2791814 68% /home10 /dev/dsk/c2t2d0s0 8706617 7571723 1047828 88% /home11 /dev/dsk/c2t2d0s1 8706617 7838737 780814 91% /home12 /dev/dsk/c2t3d0s0 8258597 5043916 3132096 62% /home13 /dev/dsk/c2t3d0s1 8258597 7956704 219308 98% /home14 /dev/dsk/c2t3d0s2 8258597 4483346 3692666 55% /home15 /dev/dsk/c2t3d0s3 8258597 393807 7782205 5% /home16 swap 4636640 1336 4635304 1% /tmp
プロセスが終了すると、/proc 配下からもなくなります。
PID を指定してこれらの情報を操作するツールがいくつかあります。
それらは、/usr/proc/bin/* (solaris 2.5 以上)にあります。
solaris 8 (2.8) からは /bin の下にもあります。
なお、 /proc の構造体は /usr/include/procfs.h に定義されています。(solaris)
まず、見たいプロセスの PID を求めます。
ora_s000_ora816 のメモリマップを見ることにします。
> ps -efl | grep ora816 F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 8 S ora816 491 1 0 51 20 ? 1161 ? 4月 05 ? 0:00 /home12/ora816/app/oracle/product/8 8 S ora816 11509 11507 0 41 20 ? 342 ? 10:49:38 pts/16 0:00 -tcsh 8 S ora816 8673 1 0 40 20 ? 19446 ? 15:10:14 ? 0:00 ora_pmon_ora816 8 S ora816 8675 1 0 41 20 ? 19448 ? 15:10:14 ? 0:00 ora_dbw0_ora816 8 S ora816 8677 1 0 40 20 ? 19385 ? 15:10:14 ? 0:01 ora_lgwr_ora816 8 S ora816 8679 1 0 40 20 ? 19387 ? 15:10:14 ? 0:05 ora_ckpt_ora816 8 S ora816 8681 1 0 41 20 ? 19378 ? 15:10:15 ? 0:01 ora_smon_ora816 8 S ora816 8683 1 0 41 20 ? 19375 ? 15:10:15 ? 0:00 ora_reco_ora816 8 S ora816 8685 1 0 41 20 ? 19477 ? 15:10:15 ? 0:17 ora_snp0_ora816 8 S ora816 8687 1 0 40 20 ? 18925 ? 15:10:15 ? 0:00 ora_s000_ora816 8 S ora816 8689 1 0 40 20 ? 19425 ? 15:10:15 ? 0:00 ora_d000_ora816 8 S ora816 8691 1 0 40 20 ? 19385 ? 15:10:15 ? 0:00 ora_arc0_ora816
ps の SZ は仮想メモリー内のプロセスの合計サイズ (ページ単位 1page=8K) です。
従ってプロセス 8687 の仮想サイズは 18925 * 8 = 151400 (KB) です。
以下のコマンドで、そのプロセスのメモリマップを得られます。
> pmap -x PID
では、PID 8687 の ora_s000_ora816 のメモリマップを見てみましょう。
> pmap -x 8687 8687: ora_s000_ora816 Address Kbytes Resident Shared Private Permissions Mapped File 00010000 24696 14896 8744 6152 read/exec oracle テキスト 0183C000 232 232 176 56 read/write/exec oracle データ 01876000 104 96 - 96 read/write/exec [ heap ] 80000000 119384 119384 - 119384 read/write/exec/shared [shmid=0x5] SGA FEB00000 664 648 640 8 read/exec libc.so.1 FEBB4000 32 32 - 32 read/write/exec libc.so.1 FEBBC000 8 8 - 8 read/write/exec [ anon ] FEC00000 4872 3048 1024 2024 read/exec libjox8.so FF0D0000 176 176 - 176 read/write/exec libjox8.so FF0FC000 16 - - - read/write/exec [ anon ] FF140000 16 16 8 8 read/exec libc_psr.so.1 FF150000 16 16 8 8 read/exec libmp.so.2 FF162000 8 8 - 8 read/write/exec libmp.so.2 FF170000 88 88 80 8 read/exec libm.so.1 FF194000 8 8 - 8 read/write/exec libm.so.1 FF1A0000 8 8 - 8 read/exec libkstat.so.1 FF1B0000 8 8 - 8 read/write/exec libkstat.so.1 FF1C0000 8 8 - 8 read/write/exec [ anon ] FF1D0000 32 32 24 8 read/exec librt.so.1 FF1E6000 8 8 - 8 read/write/exec librt.so.1 FF1F0000 32 32 24 8 read/exec libaio.so.1 FF206000 8 8 - 8 read/write/exec libaio.so.1 FF210000 8 8 - 8 read/exec libsched.so.1 FF220000 8 8 - 8 read/write/exec libsched.so.1 FF230000 8 8 8 - read/write/exec/shared [ anon ] FF240000 24 24 16 8 read/exec libgen.so.1 FF254000 16 16 - 16 read/write/exec libgen.so.1 FF260000 32 32 24 8 read/exec libsocket.so.1 FF276000 16 16 - 16 read/write/exec libsocket.so.1 FF280000 520 472 408 64 read/exec libnsl.so.1 FF310000 40 40 - 40 read/write/exec libnsl.so.1 FF31A000 32 24 - 24 read/write/exec [ anon ] FF330000 32 16 - 16 read/exec libdsbtsh8.so FF346000 8 8 - 8 read/write/exec libdsbtsh8.so FF348000 8 - - - read/write/exec [ anon ] FF350000 8 8 - 8 read/write/exec [ anon ] FF360000 8 8 - 8 read/exec libwtc8.so FF370000 8 8 - 8 read/write/exec libwtc8.so FF380000 8 8 - 8 read/exec libskgxp8.so FF390000 8 8 - 8 read/write/exec libskgxp8.so FF3A0000 8 8 - 8 read/exec libdl.so.1 FF3B0000 136 136 128 8 read/exec ld.so.1 FF3E0000 16 16 - 16 read/write/exec ld.so.1 FFBEA000 24 24 - 24 read/write/exec [ stack ] スタック -------- ------ ------ ------ ------ total Kb 151400 139656 11312 128344
上記の出力項目の説明は以下のとおりです。単位は KB です。
項目名 | 説 明 | ps 表示 | |
---|---|---|---|
Address | 仮想メモリ上のアドレス (*) | ||
Kbytes | 仮想メモリ上のサイズ | SZ | |
Resident | 常駐部分のサイズ | RSS | |
Shared | 共有部分のサイズ | ||
Private | 個別部分のサイズ | ||
Permissions | メモリ属性 | ||
read/exec | テキストセグメント(命令部分) | ||
read/write/exec | データセグメントまたはスタックセグメント(データ領域) | ||
read/write/exec/shared | 共用メモリ | ||
Mapped File | マップしているファイル名 |
(*) 仮想メモリ上のアドレスとは、実行形式を全メモリに展開した場合のアドレスです。 UNIX のメモリ管理は、仮想記憶という概念を利用していますので、 仮想という表現しますが、これらは実際には存在しません。
プロセスのメモリは、テキスト・セグメント、データ・セグメント、
スタック・セグメントに分類されます。
ここでセグメントとは、
連続したメモリ領域のことで、ページ単位で管理されます。
本来 SGA は Private でなく Shared であるべきです。 solaris 8 からは Shared となっています。
従って、ora_s000_ora816 が個別に使っていて現在メモリ上に常駐しているのは、 128344-119384=8960(KB) です。
また、Mapped File の [heap] や [anon](anonymous) は、
malloc() で個別に確保される領域です。
PGA(Program Global Area) とよばれる領域は、ここに確保されます。
これらのデータは、時々刻々と変化します。
ps のオプション -y
を指定しないで得られるプロセスのメモリサイズの単位はページです。
solaris の場合、1ページ 8KB ですので、
8倍すると pmap で得られた total の値と等しくなります。
また top コマンドや ps コマンドの RSS (Resident memory size) には、 SGA やテキストセグメントの共有部分のサイズが含まれていますので、 oracle の全プロセスの使用メモリサイズはこれらの総計ではないことを 銘記しておいてください。
oracle database writer (dbw) のメモリマップは特殊です。
それは dbw がマルチスレッドプロセスだからです。
スレッドの数を表示する ps コマンドのオプションは -L です。
> ps -efL|grep ora_dbw0_ora817 UID PID PPID LWP NLWP C STIME TTY LTIME CMD ora817 28084 1 1 23 0 15:27:54 ? 0:00 ora_dbw0_ora817 ora817 28084 1 2 23 0 15:28:00 ? 0:00 ora_dbw0_ora817 ora817 28084 1 3 23 0 15:28:00 ? 0:00 ora_dbw0_ora817 ora817 28084 1 4 23 0 15:28:00 ? 0:00 ora_dbw0_ora817 ora817 28084 1 5 23 0 15:28:00 ? 0:00 ora_dbw0_ora817 ora817 28084 1 6 23 0 15:28:00 ? 0:00 ora_dbw0_ora817 ora817 28084 1 7 23 0 15:28:00 ? 0:00 ora_dbw0_ora817 ora817 28084 1 8 23 0 15:28:00 ? 0:00 ora_dbw0_ora817 ora817 28084 1 9 23 0 15:28:00 ? 0:00 ora_dbw0_ora817 ora817 28084 1 10 23 0 15:28:00 ? 0:00 ora_dbw0_ora817 ora817 28084 1 11 23 0 15:28:00 ? 0:00 ora_dbw0_ora817 ora817 28084 1 12 23 0 17:57:12 ? 0:00 ora_dbw0_ora817 ora817 28084 1 13 23 0 17:57:12 ? 0:00 ora_dbw0_ora817 ora817 28084 1 14 23 0 17:57:12 ? 0:00 ora_dbw0_ora817 ora817 28084 1 15 23 0 17:57:12 ? 0:00 ora_dbw0_ora817 ora817 28084 1 16 23 0 17:57:12 ? 0:00 ora_dbw0_ora817 ora817 28084 1 17 23 0 17:57:12 ? 0:00 ora_dbw0_ora817 ora817 28084 1 18 23 0 17:57:12 ? 0:00 ora_dbw0_ora817 ora817 28084 1 19 23 0 17:57:12 ? 0:00 ora_dbw0_ora817 ora817 28084 1 20 23 0 17:57:12 ? 0:00 ora_dbw0_ora817 ora817 28084 1 21 23 0 17:57:12 ? 0:00 ora_dbw0_ora817 ora817 28084 1 22 23 0 17:57:12 ? 0:00 ora_dbw0_ora817 ora817 28084 1 23 23 0 18:29:34 ? 0:00 ora_dbw0_ora817
上記より dbw には 23 のスレッドがあります。 PID が同じ 28084 であることから、同じプロセスであることが解ります。 ではこのプロセスの pmap を見てみましょう。
> pmap -x 28084 28084: ora_dbw0_ora817 Address Kbytes Resident Shared Private Permissions Mapped File 00010000 26592 7784 5216 2568 read/exec oracle 01A16000 264 192 136 56 read/write/exec oracle 01A58000 1760 48 - 48 read/write/exec [ heap ] 80000000 70848 70848 - 70848 read/write/exec/shared [shmid=0x2ee5] FE782000 8 - - - read/write/exec [ anon ] FE794000 8 - - - read/write/exec [ anon ] FE7A6000 8 - - - read/write/exec [ anon ] FE7B8000 8 - - - read/write/exec [ anon ] FE7CA000 8 - - - read/write/exec [ anon ] FE7DC000 8 - - - read/write/exec [ anon ] FE7EE000 8 - - - read/write/exec [ anon ] FE800000 8 - - - read/write/exec [ anon ] FE812000 8 - - - read/write/exec [ anon ] FE824000 8 - - - read/write/exec [ anon ] FE836000 8 - - - read/write/exec [ anon ] FE844000 8 - - - read/write/exec [ anon ] FE848000 8 - - - read/write/exec [ anon ] FE856000 8 - - - read/write/exec [ anon ] FE85A000 8 - - - read/write/exec [ anon ] FE868000 8 - - - read/write/exec [ anon ] FE86C000 8 - - - read/write/exec [ anon ] FE87A000 8 - - - read/write/exec [ anon ] FE87E000 8 - - - read/write/exec [ anon ] FE88C000 8 - - - read/write/exec [ anon ] FE890000 8 - - - read/write/exec [ anon ] FE89E000 8 - - - read/write/exec [ anon ] FE902000 8 - - - read/write/exec [ anon ] FE910000 8 - - - read/write/exec [ anon ] FE914000 8 - - - read/write/exec [ anon ] FE922000 8 - - - read/write/exec [ anon ] FE926000 8 - - - read/write/exec [ anon ] FE934000 8 - - - read/write/exec [ anon ] FE938000 8 - - - read/write/exec [ anon ] FE946000 8 - - - read/write/exec [ anon ] FE94A000 8 - - - read/write/exec [ anon ] FE958000 8 - - - read/write/exec [ anon ] FE95C000 8 - - - read/write/exec [ anon ] FE96A000 8 - - - read/write/exec [ anon ] FE96E000 8 - - - read/write/exec [ anon ] FE97C000 8 - - - read/write/exec [ anon ] FE980000 8 - - - read/write/exec [ anon ] FE98E000 8 - - - read/write/exec [ anon ] FE992000 8 - - - read/write/exec [ anon ] FE9A0000 8 - - - read/write/exec [ anon ] FE9A4000 8 - - - read/write/exec [ anon ] FE9B2000 8 - - - read/write/exec [ anon ] FE9B6000 8 - - - read/write/exec [ anon ] FE9C4000 8 - - - read/write/exec [ anon ] FE9C8000 8 - - - read/write/exec [ anon ] FE9D6000 8 - - - read/write/exec [ anon ] FE9DA000 8 - - - read/write/exec [ anon ] FE9E8000 8 - - - read/write/exec [ anon ] FE9EC000 8 - - - read/write/exec [ anon ] FE9FA000 8 - - - read/write/exec [ anon ] FE9FE000 8 - - - read/write/exec [ anon ] FEA0C000 8 - - - read/write/exec [ anon ] FEA10000 8 - - - read/write/exec [ anon ] FEA1E000 8 8 - 8 read/write/exec [ anon ] FEA70000 8 - - - read/write/exec [ anon ] FEA80000 16 16 16 - read/exec libmp.so.2 FEA92000 8 8 8 - read/write/exec libmp.so.2 FEAA0000 120 32 32 - read/exec libelf.so.1 FEACC000 8 8 8 - read/write/exec libelf.so.1 FEAE0000 16 16 16 - read/exec libkvm.so.1 FEAF2000 8 8 8 - read/write/exec libkvm.so.1 FEB00000 664 648 640 8 read/exec libc.so.1 FEBB4000 40 40 8 32 read/write/exec libc.so.1 FEBD0000 88 88 88 - read/exec libm.so.1 FEBF4000 8 8 8 - read/write/exec libm.so.1 FEC00000 4056 720 720 - read/exec libjox8.so FF004000 160 - - - read/write/exec libjox8.so FF02C000 8 - - - read/write/exec [ anon ] FF040000 8 8 8 - read/exec libkstat.so.1 FF050000 8 8 8 - read/write/exec libkstat.so.1 FF060000 32 32 32 - read/exec librt.so.1 FF076000 8 8 8 - read/write/exec librt.so.1 FF080000 520 392 376 16 read/exec libnsl.so.1 FF110000 40 40 8 32 read/write/exec libnsl.so.1 FF11A000 32 - - - read/write/exec [ anon ] FF130000 16 16 16 - read/exec libc_psr.so.1 FF140000 32 32 32 - read/exec libaio.so.1 FF156000 8 8 8 - read/write/exec libaio.so.1 FF160000 8 8 8 - read/exec libsched.so.1 FF170000 8 8 8 - read/write/exec libsched.so.1 FF180000 912 160 160 - read/exec liblsm.so FF272000 48 - - - read/write/exec liblsm.so FF27E000 504 - - - read/write/exec [ anon ] FF310000 8 - - - read/write/exec [ anon ] FF320000 8 8 8 - read/write/exec/shared [ anon ] FF330000 24 24 24 - read/exec libgen.so.1 FF344000 16 16 8 8 read/write/exec libgen.so.1 FF350000 32 32 32 - read/exec libsocket.so.1 FF366000 16 16 8 8 read/write/exec libsocket.so.1 FF370000 8 8 8 - read/exec libskgxp8.so FF380000 8 8 8 - read/write/exec libskgxp8.so FF390000 8 8 8 - read/exec libdl.so.1 FF3A0000 8 - - - read/write/exec [ anon ] FF3B0000 144 144 144 - read/exec ld.so.1 FF3E2000 16 16 8 8 read/write/exec ld.so.1 FFBEA000 24 16 - 16 read/write/exec [ stack ] -------- ------ ------ ------ ------ total Kb 107608 81488 7832 73656
dbw は定期的に SGA の db_block_buffers
の更新情報をデータベースに書き出すプロセスです。
書き込みのシステムコールとして aiowrite() を使います。
これは kaio (kernel asynchronous I/O) と呼ばれています。
kaio は raw デバイスの場合はカーネル内部で非同期入出力をしますが、 それ以外の場合はユーザスレッドを利用します。 ufs(Unix File System) の場合も、ユーザスレッドを利用します。 上記の例も ufs なのでユーザスレッドとなっています。
上記の [anon] は、各スレッドが使うスタックです。 全部で 54 ありますが、上記のマップでは常駐していませんので、 データベースへの更新がないようです。
solaris での aio の最大スレッド数は 258 です。 ですから長い間 oracle を使い続けると、 ほとんどの dbw のスレッド数は最大の 258 になり、 各スレッドに3ページくらいのスタックが必要ですので、 メモリ増分に気をつける必要があります。
solaris 8 では SGA は Shared に含まれるように変更されました。 これが最も理にかなった表示であると思われます。
oracle の全プロセスが占めるメモリの概算は以下のとおりです。
oracle プロセスメモリ = Private * (oracle プロセス数) + Shared (+ PGA) |
---|
> pmap -x 21701 21701: ora_cjq0_ora92032 Address Kbytes Resident Shared Private Permissions Mapped File 00010000 49136 25304 25304 - read/exec oracle text segment 0301A000 488 360 312 48 read/write/exec oracle data segment 03094000 288 160 120 40 read/write/exec [ heap ] 20000000 593920 593920 593920 - read/write/exec/shared [ ism shmid=0x141e5 ] SGA FEB00000 8 8 8 - read/write [ anon ] FEB10000 8 8 8 - read/write [ anon ] FEB50000 8 8 - 8 read/write [ anon ] FEB58000 48 48 8 40 read/write [ anon ] FEB68000 32 32 - 32 read/write [ anon ] FEBB0000 16 16 16 - read/exec libmp.so.2 FEBC4000 8 8 8 - read/write/exec libmp.so.2 FEBD0000 88 72 72 - read/exec libm.so.1 FEBF4000 8 8 8 - read/write/exec libm.so.1 FEC00000 4416 1216 1216 - read/exec libjox9.so FF05E000 192 168 168 - read/write/exec libjox9.so FF0A0000 8 8 8 - read/exec libkstat.so.1 FF0B2000 8 8 8 - read/write/exec libkstat.so.1 FF0C0000 24 24 24 - read/exec librt.so.1 FF0D6000 8 8 8 - read/write/exec librt.so.1 FF0E0000 32 24 24 - read/exec libaio.so.1 FF0F8000 8 8 8 - read/write/exec libaio.so.1 FF100000 688 632 632 - read/exec libc.so.1 FF1BC000 32 32 16 16 read/write/exec libc.so.1 FF1D0000 8 8 8 - read/write/exec [ anon ] FF1E0000 8 8 8 - read/exec libsched.so.1 FF1F2000 8 8 8 - read/write/exec libsched.so.1 FF200000 568 392 392 - read/exec libnsl.so.1 FF29E000 40 40 40 - read/write/exec libnsl.so.1 FF2A8000 24 16 16 - read/write/exec libnsl.so.1 FF2C0000 16 16 16 - read/exec libc_psr.so.1 FF2D0000 8 8 8 - read/write/exec/shared [ anon ] FF2E0000 8 8 - 8 read/write/exec [ anon ] FF2F0000 24 24 24 - read/exec libgen.so.1 FF306000 8 8 8 - read/write/exec libgen.so.1 FF310000 40 40 40 - read/exec libsocket.so.1 FF32A000 8 8 8 - read/write/exec libsocket.so.1 FF330000 8 8 8 - read/exec libskgxn9.so FF340000 8 8 8 - read/write/exec libskgxn9.so FF350000 8 8 8 - read/exec libskgxp9.so FF360000 8 8 8 - read/write/exec libskgxp9.so FF370000 8 8 8 - read/exec libodmd9.so FF380000 8 8 8 - read/write/exec libodmd9.so FF390000 8 8 8 - read/exec libdl.so.1 FF3A0000 8 8 - 8 read/write/exec [ anon ] FF3B0000 160 160 160 - read/exec ld.so.1 FF3E8000 8 8 - 8 read/write/exec ld.so.1 FFBE8000 32 32 16 16 read/write/exec [ stack ] stack segment -------- ------ ------ ------ ------ total Kb 650504 622928 622704 224
solaris 9 では、さらに以下のような表記になりました。 oracle 9 からは SGA_MAX_SIZE を指定できますが、 このサイズ分はじめから実メモリを確保するのではなく、 不足した場合に動的に OS により実メモリにマップされます。
下記の例は、SGA_MAX_SIZE が 11.6G ですが、 現在実メモリにマップされているのは 3633152KB(3.46G) です (RSS(Resident physical memory)) 。
また3カラム目の Anon は、そのプロセスが個別に使っている、 データセグメント、スタックセグメントを表しています。
> pmap -x 11233 11233: ora_smon_dbtp0601 Address Kbytes RSS Anon Locked Mode Mapped File 0000000100000000 50472 28912 - - r-x-- oracle text segment 0000000103248000 712 536 112 - rwx-- oracle data segment 00000001032FA000 464 336 336 - rwx-- [ heap ] 0000000380000000 4096 4096 - - rwxs- [ dism shmid=0x6a6 ] 0000040000000000 2457600 - - - rwxs- [ dism shmid=0x7020 ] 00000400C0000000 3670016 - - - rwxs- [ dism shmid=0x35ed ] 00000401C0000000 3665920 3633152 - - rwxs- [ dism shmid=0x196 ] SGA FFFFFFFF7CBF0000 200 200 200 - rw--R [ anon ] FFFFFFFF7CC2E000 8 8 8 - rw--R [ anon ] FFFFFFFF7CD70000 512 512 512 - rw--R [ anon ] FFFFFFFF7CE00000 8 8 8 - rw--R [ anon ] FFFFFFFF7CE10000 8 8 8 - rw--R [ anon ] FFFFFFFF7CE50000 192 192 192 - rw--R [ anon ] FFFFFFFF7CF00000 8 8 8 - rwx-- [ anon ] FFFFFFFF7D000000 8 8 - - r-x-- libmd5.so.1 FFFFFFFF7D102000 8 8 8 - rwx-- libmd5.so.1 FFFFFFFF7D200000 16 16 - - r-x-- libmp.so.2 FFFFFFFF7D304000 8 8 8 - rwx-- libmp.so.2 FFFFFFFF7D400000 216 160 - - r-x-- libm.so.1 FFFFFFFF7D534000 16 16 16 - rwx-- libm.so.1 FFFFFFFF7D600000 8 8 8 - rwx-- [ anon ] FFFFFFFF7D700000 8 8 - - r-x-- libkstat.so.1 FFFFFFFF7D802000 8 8 8 - rwx-- libkstat.so.1 FFFFFFFF7D900000 32 32 - - r-x-- librt.so.1 FFFFFFFF7DA08000 8 8 8 - rwx-- librt.so.1 FFFFFFFF7DB00000 32 32 - - r-x-- libaio.so.1 FFFFFFFF7DC08000 8 8 8 - rwx-- libaio.so.1 FFFFFFFF7DC0A000 8 - - - rwx-- libaio.so.1 FFFFFFFF7DD00000 720 720 - - r-x-- libc.so.1 FFFFFFFF7DEB4000 56 56 56 - rwx-- libc.so.1 FFFFFFFF7DEC2000 8 8 8 - rwx-- libc.so.1 FFFFFFFF7DF00000 8 8 8 - rwx-- [ anon ] FFFFFFFF7E000000 32 24 - - r-x-- libgen.so.1 FFFFFFFF7E108000 8 8 8 - rwx-- libgen.so.1 FFFFFFFF7E200000 48 48 - - r-x-- libsocket.so.1 FFFFFFFF7E30C000 16 16 16 - rwx-- libsocket.so.1 FFFFFFFF7E400000 5328 2728 - - r-x-- libjox9.so FFFFFFFF7EA32000 384 288 288 - rwx-- libjox9.so FFFFFFFF7EA92000 8 - - - rwx-- libjox9.so FFFFFFFF7EB00000 8 8 - - r-x-- libc_psr.so.1 FFFFFFFF7EC00000 664 288 - - r-x-- libnsl.so.1 FFFFFFFF7EDA6000 56 56 56 - rwx-- libnsl.so.1 FFFFFFFF7EDB4000 40 32 32 - rwx-- libnsl.so.1 FFFFFFFF7EE00000 8 8 8 - rwx-- [ anon ] FFFFFFFF7EF00000 32 24 - - r-x-- libskgxn9.so FFFFFFFF7F006000 8 8 8 - rwx-- libskgxn9.so FFFFFFFF7F100000 8 8 - - r-x-- libskgxp9.so FFFFFFFF7F200000 8 8 8 - rwx-- libskgxp9.so FFFFFFFF7F300000 8 8 - - r-x-- libodmd9.so FFFFFFFF7F400000 8 8 8 - rwx-- libodmd9.so FFFFFFFF7F500000 8 8 - - r-x-- libdl.so.1 FFFFFFFF7F600000 152 152 - - r-x-- ld.so.1 FFFFFFFF7F724000 16 16 16 - rwx-- ld.so.1 FFFFFFFF7F728000 8 8 8 - rwx-- ld.so.1 FFFFFFFF7FFE4000 112 112 112 - rw--- [ stack ] stack segment ---------------- ---------- ---------- ---------- ---------- total Kb 9858360 3672944 2088 -
以下がこの時の ipcs の結果です。 ipcs のID とpmap の Mapped File の shmid とが一致します(表記が10進と16進)。 shmid=0x196 は ID=406 でこれにのみ KEY が割り当てられていることからも、 実メモリが割り当てられていることが解ります。
T ID KEY MODE OWNER GROUP CREATOR CGROUP NATTCH SEGSZ CPID LPID ATIME DTIME CTIME Shared Memory: m 0 0xde021c3e --rw------- root root root root 1 3840 173 13307 23:06:58 23:06:58 7:52:04 m 1 0xde021c3d --rw------- root root root root 1 768 173 11072 7:52:04 22:21:55 7:52:04 m 1702 0 --rw-r----- oracle dba oracle dba 88 4194304 11188 18199 17:36:43 17:36:55 22:23:40 m 103 0xcace --rw-rw-rw- root other root other 0 2 6773 10941 15:03:17 15:03:17 20:45:03 m 28704 0 --rw-r----- oracle dba oracle dba 88 2516582400 11188 18199 17:36:43 17:36:55 22:23:40 m 13805 0 --rw-r----- oracle dba oracle dba 88 3758096384 11188 18199 17:36:43 17:36:55 22:23:40 m 406 0x60b99a54 --rw-r----- oracle dba oracle dba 88 3753902080 11188 18199 17:36:43 17:36:55 22:23:40