[AIX]svmon -Pでのプロセス固有のメモリ使用量の見方
注:
この文書での方法は1つの考え方でしかなく異論反論があると思いますので、そういった意見をお持ちの方はぜひとも別の文書で考え方を公開ください。
コマンド実行例:
# svmon -PO unit=auto,segment=on,timestamp=on,pidlist=on,shmid=on,pgsz=on,filename=on,commandline=on,mapping=on,filterprop=notempty,summary=extended,format=nolimit | perl -pe 's/64-bit Mthrd 16MB/64-bit Mthrd 16MB\n/'
※summary=extendedはマニュアルには記載がありませんが、下記APARに記載があります。
ただし、改行コードを入れ忘れているようなので、Perlで改行を追加しています。
IV72178: SVMON -O STRIPS PROCESS SUMMARY LINE APPLIES TO AIX 7100-04
https://www.ibm.com/support/pages/apar/IV72178
始めに:
svmon -Pを見る上で重要になる知識は、プロセスメモリーモデルと各セグメントの意味になります。
共有メモリとは何か、mallocヒープとは何か、といった知識は必須になります。
参考:
32 ビット AIX 仮想メモリー・モデル
https://www.ibm.com/docs/ja/sdk-java-technology/8?topic=usage-32-bit-aix-virtual-memory-model
大きなプログラムのサポート
https://www.ibm.com/docs/ja/aix/7.3.0?topic=concepts-large-program-support
malloc、free、realloc、calloc、mallopt、mallinfo、mallinfo_heap、alloca、valloc、または posix_memalign サブルーチン
https://www.ibm.com/docs/ja/aix/7.3.0?topic=m-malloc-free-realloc-calloc-mallopt-mallinfo-mallinfo-heap-alloca-valloc-posix-memalign-subroutine
shmget サブルーチン
https://www.ibm.com/docs/ja/aix/7.3.0?topic=s-shmget-subroutine
shmat サブルーチン
https://www.ibm.com/docs/ja/aix/7.3.0?topic=s-shmat-subroutine
ipcs コマンド
https://www.ibm.com/docs/ja/aix/7.3.0?topic=i-ipcs-command
大まかなセグメント番号の説明と共有メモリに対する考え方:
基本的に、デフォルトメモリーモデルの32ビットプロセスの場合はセグメント2番、Large addressモデルの32ビットプロセスの場合はセグメント3番からの連続、64ビットプロセスの場合はセグメント11番からの連続がmallocヒープになり、プロセス固有のメモリ使用量になります。(一般的に、プログラムテキストはmallocに比べて小さいものなので考慮する必要は無いという考えです。)
共有メモリについては、複数プロセスで共有している場合はプロセス固有としては考えないと思いますが、単一プロセスでの使用や、IPC_PRIVATEの場合はプロセス固有として考えることになると思います。
共有ライブラリも一般的に小さいメモリになるため、考慮は不要なシステムが多いと思います。
パターン別の見方:
・デフォルトメモリーモデルの32ビットプロセス
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
15073574 ssh 112.42M 74.5M 0K 111.39M N N N
PageSize Inuse Pin Pgsp Virtual
s 4 KB 6.98M 16K 0K 5.95M
m 64 KB 105.44M 74.5M 0K 105.44M
L 16 MB 0K 0K 0K 0K
S 16 GB 0K 0K 0K 0K
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
10002 0 work kernel segment m 54.0M 50.4M 0K 54.0M
System segment
b000 d work shared library text m 51.4M 24.1M 0K 51.4M
Shared library text segment
898ad3 2 work process private sm 5.39M 16K 0K 5.39M
pid(s)=15073574
85882b 1 clnt code,/dev/hd2:942 s 1.03M 0K - -
/usr/bin/ssh
pid(s)=19267878, 15073574, 13893888, 12911086
8086a1 f work shared library data sm 572K 0K 0K 572K
pid(s)=15073574
-------------------------------------------------------------------------------
見るべき項目はセグメント2番の下記行になります。
898ad3 2 work process private sm 5.39M 16K 0K 5.39M
pid(s)=15073574
・Large addressモデルの32ビットプロセス
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
12321216 rmcd 120.57M 88.6M 0K 118.93M N Y N
PageSize Inuse Pin Pgsp Virtual
s 4 KB 15.1M 14.1M 0K 13.5M
m 64 KB 105.44M 74.5M 0K 105.44M
L 16 MB 0K 0K 0K 0K
S 16 GB 0K 0K 0K 0K
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
10002 0 work kernel segment m 54.0M 50.4M 0K 54.0M
System segment
b000 d work shared library text m 51.4M 24.1M 0K 51.4M
Shared library text segment
8885f1 f work shared library data sm 9.04M 9.04M 0K 9.04M
pid(s)=12321216
8405c8 3 work working storage sm 3.96M 3.96M 0K 3.96M
pid(s)=12321216
8805f0 1 clnt code,/dev/hd2:16812 s 1.61M 864K - -
/usr/sbin/rsct/bin/rmcd
pid(s)=12321216
880430 2 work process private sm 280K 216K 0K 280K
pid(s)=12321216
808601 - work System Segment s 224K 40K 0K 224K
System segment
880610 - clnt /dev/hd2:34623 s 24K 0K - -
/usr/lib/nls/msg/Ja_JP/ct_rmc.cat
pid(s)=12321216
-------------------------------------------------------------------------------
見るべき項目はセグメント3番の下記行になります。
8405c8 3 work working storage sm 3.96M 3.96M 0K 3.96M
pid(s)=12321216
・単一プロセスで共有メモリを使用している32ビットプロセス
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
16449916 telnetd 106.30M 74.5M 0K 106.21M N N N
PageSize Inuse Pin Pgsp Virtual
s 4 KB 880K 16K 0K 792K
m 64 KB 105.44M 74.5M 0K 105.44M
L 16 MB 0K 0K 0K 0K
S 16 GB 0K 0K 0K 0K
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
10002 0 work kernel segment m 54.0M 50.4M 0K 54.0M
System segment
b000 d work shared library text m 51.4M 24.1M 0K 51.4M
Shared library text segment
8f8a9f f work shared library data sm 384K 0K 0K 384K
pid(s)=16449916
8e8b9d 3 work working storage sm 300K 0K 0K 300K
pid(s)=16449916
8086c1 2 work process private sm 104K 16K 0K 104K
pid(s)=16449916
8a83b5 1 clnt code,/dev/hd2:3040 s 88K 0K - -
/usr/sbin/telnetd
pid(s)=16449916
8203c4 5 work shared memory segment sm 4K 0K 0K 4K
shmid:1024
pid(s)=16449916
-------------------------------------------------------------------------------
# ipcs -amS1
IPC status from /dev/mem as of Tue Aug 19 09:42:59 JST 2025
T ID KEY MODE OWNER GROUP CREATOR CGROUP NATTCH SEGSZ CPID LPID ATIME DTIME CTIME SID
Shared Memory:
m 1024 0x0d000be0 --rw-rw---- root system root system 1 1440 7274760 11731440 13:51:55 13:52:37 13:57:23 0x8203c4
見るべき項目はセグメント3番と5番の下記行になります。
8e8b9d 3 work working storage sm 300K 0K 0K 300K
pid(s)=16449916
8203c4 5 work shared memory segment sm 4K 0K 0K 4K
shmid:1024
pid(s)=16449916
5番の共有メモリについてはpid(s)、NATTCHともに1つなっていて、単一プロセスで共有メモリを使用していることが分かります。
この状態の共有メモリは単一プロセスで使用しているメモリとみなすことができます。
(ただし、プログラムの挙動によっては、複数プロセスでの使用に変わる可能性もあります。)
・IPC_PRIVATEの共有メモリを使用している32ビットプロセス
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
10355020 java 135.56M 74.6M 0K 135.56M N Y N
PageSize Inuse Pin Pgsp Virtual
s 4 KB 384K 84K 0K 384K
m 64 KB 135.19M 74.6M 0K 135.19M
L 16 MB 0K 0K 0K 0K
S 16 GB 0K 0K 0K 0K
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
10002 0 work kernel segment m 54.0M 50.4M 0K 54.0M
System segment
b000 d work shared library text m 51.4M 24.1M 0K 51.4M
Shared library text segment
880490 3 work working storage m 20.6M 0K 0K 20.6M
pid(s)=10355020
820604 9 work shared memory segment m 6.00M 0K 0K 6.00M
shmid:1025
pid(s)=10355020
848369 f work working storage m 2.75M 0K 0K 2.75M
pid(s)=10355020
8c03f8 - work System Segment s 384K 84K 0K 384K
System segment
8f035e 2 work process private m 320K 64K 0K 320K
pid(s)=10355020
848489 1 work code m 128K 0K 0K 128K
pid(s)=10355020
-------------------------------------------------------------------------------
# ipcs -amS1
IPC status from /dev/mem as of Tue Aug 19 09:42:59 JST 2025
T ID KEY MODE OWNER GROUP CREATOR CGROUP NATTCH SEGSZ CPID LPID ATIME DTIME CTIME SID
Shared Memory:
m 1025 0xffffffff D-rw------- root system root system 1 1073741824 10355020 10355020 13:57:31 no-entry 13:57:31 0x820604 0x818603 0x810602 0x888611
見るべき項目はセグメント3番と9番の下記行になります。
880490 3 work working storage m 20.6M 0K 0K 20.6M
pid(s)=10355020
820604 9 work shared memory segment m 6.00M 0K 0K 6.00M
shmid:1025
pid(s)=10355020
9番の共有メモリはKEYが0xffffffff(IPC_PRIVATE)になっていて、プロセス間で共有できないことが分かります。
そのため、9番は共有メモリであってもプロセス固有として考えるべきメモリになります。
・64ビットプロセス
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
4784610 syslogd 84.5M 44.4M 0K 75.1M Y N N
PageSize Inuse Pin Pgsp Virtual
s 4 KB 13.2M 16K 0K 3.73M
m 64 KB 71.4M 44.4M 0K 71.4M
L 16 MB 0K 0K 0K 0K
S 16 GB 0K 0K 0K 0K
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
8002 0 work kernel segment m 46.7M 44.2M 0K 46.7M
System segment
864019 90000000 work shared library text m 24.4M 0K 0K 24.4M
Shared library text segment
830bcc - clnt /dev/hd9var:567 s 9.19M 0K - -
/var/adm/ras/syslog.caa
pid(s)=4784610
86c01b 90020014 work shared library s 1.76M 0K 0K 1.76M
pid(s)=15991074, 6095112, 5439944, 5046706, 4981162, 4784610,
pid(s)=4719048, 3604860, 2556166, 2294150
2800a 9ffffffd work shared library sm 1.39M 16K 0K 1.39M
System segment
87409d f00000002 work process private m 320K 192K 0K 320K
pid(s)=4784610
87825e 9001000a work shared library data sm 252K 0K 0K 252K
pid(s)=4784610
850214 11 work text data BSS heap sm 164K 0K 0K 164K
pid(s)=4784610
82c1cb - clnt /dev/hd9var:8196 s 96K 0K - -
/var/hacmp/adm/cluster.log
pid(s)=4784610
8040e1 9fffffff clnt USLA text,/dev/hd2:4136 s 76K 0K - -
/usr/ccs/bin/usla64
pid(s)=15991074, 6095112, 5439944, 5046706, 4981162, 4784610,
pid(s)=4719048, 3604860, 2556166
3400d 9ffffffe work shared library sm 76K 0K 0K 76K
System segment
83c24f 10 clnt text data BSS heap, s 64K 0K - -
/dev/hd2:2456
/usr/sbin/syslogd
pid(s)=4784610
864239 80020014 work USLA heap sm 48K 0K 0K 48K
pid(s)=4784610
86821a ffffffff work application stack sm 40K 0K 0K 40K
pid(s)=4784610
81c2a7 8fffffff work private load data s 16K 0K 0K 16K
System segment
83438d - clnt /dev/hd9var:260 s 4K 0K - -
/var/log/aso/aso_debug.log
pid(s)=4784610
87c25f - clnt /dev/hd9var:258 s 4K 0K - -
/var/log/aso/aso.log
pid(s)=4784610
854375 - clnt /dev/hd9var:259 s 4K 0K - -
/var/log/aso/aso_process.log
pid(s)=4784610
-------------------------------------------------------------------------------
見るべき項目はセグメント11番の下記行になります。
850214 11 work text data BSS heap sm 164K 0K 0K 164K
pid(s)=4784610
・共有メモリを使用している64ビットプロセス
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
8782142 postgres 136.96M 53.8M 0K 112.94M Y N N
PageSize Inuse Pin Pgsp Virtual
s 4 KB 27.4M 20K 0K 3.38M
m 64 KB 109.56M 53.8M 0K 109.56M
L 16 MB 0K 0K 0K 0K
S 16 GB 0K 0K 0K 0K
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
20002 0 work kernel segment m 58.6M 53.6M 0K 58.6M
System segment
990019 90000000 work shared library text m 50.6M 0K 0K 50.6M
Shared library text segment
890569 - clnt /dev/hd1:8234 s 16.0M 0K - -
/home/ios/CM/DB/pg_wal/000000010000000100000095
pid(s)=9437502, 8782142
9b045b 10 clnt text data BSS heap, s 7.95M 0K - -
/dev/hd2:66195
/usr/ios/db/bin/postgres
pid(s)=10027344, 9961784, 9503026, 9437502, 8782142, 7930190,
pid(s)=6947130, 5898694
a000a 9ffffffd work shared library sm 1.94M 20K 0K 1.94M
System segment
9b001b 90020014 work shared library s 1.00M 0K 0K 1.00M
pid(s)=22413714, 10027344, 9961784, 9503026, 9437502,
pid(s)=9044270, 8782142, 8716578, 8192296, 8126804, 7930190,
pid(s)=6947130, 6881672, 5898694, 5702110, 4915632, 2294164
990579 f00000002 work process private m 320K 192K 0K 320K
parent=980578
pid(s)=8782142
9b057b 11 work text data BSS heap sm 260K 0K 0K 260K
parent=9a057a
pid(s)=8782142
d000d 9ffffffe work shared library sm 100K 0K 0K 100K
System segment
820122 9fffffff clnt USLA text,/dev/hd2:4150 s 76K 0K - -
/usr/ccs/bin/usla64
pid(s)=22413714, 10027344, 9961784, 9503026, 9437502,
pid(s)=9044270, 8782142, 8716578, 8192296, 8126804, 7930190,
pid(s)=6947130, 6881672, 5898694, 5702110, 4915632
9f057f 9001000a work shared library data sm 64K 0K 0K 64K
parent=9e057e
pid(s)=8782142
810581 ffffffff work application stack sm 24K 0K 0K 24K
parent=800580
pid(s)=8782142
800500 a0001000 work default shmat/mmap sm 4K 0K 0K 4K
shmid:1049602
pid(s)=9961784, 9503026, 9437502, 8782142, 7930190, 5898694
-------------------------------------------------------------------------------
# ipcs -amS1
IPC status from /dev/mem as of Tue Aug 19 10:21:41 JST 2025
T ID KEY MODE OWNER GROUP CREATOR CGROUP NATTCH SEGSZ CPID LPID ATIME DTIME CTIME SID
Shared Memory:
m 1049602 0x005cc601 --rw------- vpgadmin bin vpgadmin bin 6 56 9503026 23331186 10:50:44 10:20:57 10:50:44 0x800500
見るべき項目はセグメント11番の下記行になります。
9b057b 11 work text data BSS heap sm 260K 0K 0K 260K
parent=9a057a
pid(s)=8782142
セグメントa0001000番の共有メモリは複数のプロセスで共有しているため、プロセス固有のメモリではないと考えられます。
800500 a0001000 work default shmat/mmap sm 4K 0K 0K 4K
shmid:1049602
pid(s)=9961784, 9503026, 9437502, 8782142, 7930190, 5898694
最後に:
基本の考え方を理解した上で、filtertypeやfiltercatで絞り込むことで、見たいデータのみを抽出することをお勧めします。