ITPub博客

首页 > Linux操作系统 > Linux操作系统 > AIX进程内存占用数的计算

AIX进程内存占用数的计算

Linux操作系统 作者:yilan900607 时间:2014-02-14 15:49:17 0 删除 编辑
昨天分析了Linux进程内存占用数的计算
 
今天,我们来分析下AIX下进程内存占用。
 
AIX  man ps 提示"RSS   (v flag) The real-memory (resident set) size of the process (in 1KB units)."
但与linux一样,RSS并不是进程实际占用物理内存的大小。
 
下面是IBM官方的详细解释:
RSS:
Real-memory (resident set) size in kilobytes of the process. This number is equal to the sum of the number of working segment and code segment pages in memory times 4. Remember that code segment pages are shared among all of the currently running instances of the program 
TRS : Size of the resident set (real memory) of text. This is the number of code segment pages times 4. This number exaggerates memory use for programs of which multiple instances are running.
 
 
见下面命令:
[oracle@gxtest] $ps axv |head -1;ps axv | grep oracle | head -10

      PID    TTY STAT  TIME PGIN  SIZE   RSS   LIM  TSIZ   TRS %CPU %MEM COMMAND
    33118      - A     0:00    0  8436 106112    xx 88895 97676  0.0  0.0 oracle
   946452      - A     0:00    0  8436 106112    xx 88895 97676  0.0  0.0 oracle
  1360266      - A     0:00    0  8436 106112    xx 88895 97676  0.0  0.0 oracle
  1970596      - A     0:00    0  8440 106116    xx 88895 97676  0.0  0.0 oracle
  2838910      - A     0:00    0  8424 106100    xx 88895 97676  0.0  0.0 oracle
  2949614      - A     0:00    0  9372 107048    xx 88895 97676  0.0  0.0 oracle
  2970004      - A     0:16    0  9028 106704    xx 88895 97676  0.1  0.0 oracle
...
 
上面所有oracle的进程trs都为97676,是所有oracle进程共享的,所以他们的trs都一样。
我们可以使用RSS-TRS做为进程的占用内存,实际上RSS-TRS就是SIZE。
 
见SIZE的解释:
SIZE Virtual size (in paging space) in kilobytes of the data section of the process (displayed as SZ by other flags). This number is equal to the number of working segment pages of the process that have been touched times 4. If some working segment pages are currently paged out, this number is larger than the amount of real memory being used. SIZE includes pages in the private segment and the shared-library data segment of the process.  
看上面ps结果中的size对应的数据基本在8m左右,即oracle的server process 占用的物理内存在8m左右。
 
再使用nmon看看:
[root@GXDB1:/]#nmon -r oracle
 
+-topas_nmon--S=WLMsubclasses----Host=GXDB1----------Refresh=2 secs---11:37.14---------------------
| Top-Processes-(4279) ----Mode=3  [1=Basic 2=CPU 3=Perf 4=Size 5=I/O 6=Cmds]----------------------
|  PID       %CPU     Size      Res     Res      Res     Char    RAM      Paging         Command  
|            Used       KB      Set     Text     Data     I/O     Use   io   other repage         
|44564902    94.2   201840   244616   131648   112968        0    0%      0   1832      0 oracle  
|27657376    93.4    94536   137316   131648     5668        4    0%      0      0      0 oracle  
|46924802    82.0    98412   141192   131648     9544        5    0%      0     77      0 oracle  
|16844250    74.4   105400   148180   131648    16532       28    0%      0      0      0 oracle  
|60555840    30.0    95912   138692   131648     7044      892    0%      0      0      0 oracle  
|33686028    28.3   101872   144652   131648    13004       15    0%      0      0      0 oracle  
| 4786076    22.5   105308   148088   131648    16440      399    0%      0      0      0 oracle  
| 7602648    21.3    95816   138596   131648     6948    25055    0%      0      0      0 oracle  
|17236030    20.7    99892   142672   131648    11024       67    0%      0    144      0 oracle  
|26018880    19.0    99056   141836   131648    10188       45    0%      0      0      0 oracle  
|46269150    17.5   129028   126620     3844   122776    18845    0%      0      0      0 extract 
|36110992    16.3   122768   120288     3740   116548    18806    0%      0      0      0 extract 
|46203274    15.8    96684   139464   131648     7816      335    0%      0   4050      0 oracle  
|23069706    15.4    99968   142748   131648    11100       30    0%      0      0      0 oracle
 
上面 Res Set 对应 ps 中的rss;Res Text即为trs;Res Data 即为占用的物理内存。
 
附:
 

Memory usage determination with the ps command

The ps command can also be used to monitor memory usage of individual processes.

The ps v PID command provides the most comprehensive report on memory-related statistics for an individual process, such as:

  • Page faults
  • Size of working segment that has been touched
  • Size of working segment and code segment in memory
  • Size of text segment
  • Size of resident set
  • Percentage of real memory used by this process
The following is an example:
# ps v
   PID    TTY STAT  TIME PGIN  SIZE   RSS   LIM  TSIZ   TRS %CPU %MEM COMMAND
 36626  pts/3 A     0:00    0   316   408 32768    51    60  0.0  0.0 ps v

The most important columns on the resulting ps report are described as follows:

PGIN Number of page-ins caused by page faults. Since all I/O is classified as page faults, this is basically a measure of I/O volume. SIZE Virtual size (in paging space) in kilobytes of the data section of the process (displayed as SZ by other flags). This number is equal to the number of working segment pages of the process that have been touched times 4. If some working segment pages are currently paged out, this number is larger than the amount of real memory being used. SIZE includes pages in the private segment and the shared-library data segment of the process. RSS Real-memory (resident set) size in kilobytes of the process. This number is equal to the sum of the number of working segment and code segment pages in memory times 4. Remember that code segment pages are shared among all of the currently running instances of the program. If 26 ksh processes are running, only one copy of any given page of the ksh executable program would be in memory, but the ps command would report that code segment size as part of the RSS of each instance of the ksh program. TSIZ Size of text (shared-program) image. This is the size of the text section of the executable file. Pages of the text section of the executable program are only brought into memory when they are touched, that is, branched to or loaded from. This number represents only an upper bound on the amount of text that could be loaded. The TSIZ value does not reflect actual memory usage. This TSIZ value can also be seen by executing the dump -ov command against an executable program (for example, dump -ov /usr/bin/ls). TRS Size of the resident set (real memory) of text. This is the number of code segment pages times 4. This number exaggerates memory use for programs of which multiple instances are running. The TRS value can be higher than the TSIZ value because other pages may be included in the code segment such as the XCOFF header and the loader section. %MEM Calculated as the sum of the number of working segment and code segment pages in memory times 4 (that is, the RSS value), divided by the size of the real memory in use, in the machine in KB, times 100, rounded to the nearest full percentage point. This value attempts to convey the percentage of real memory being used by the process. Unfortunately, like RSS, it tends the exaggerate the cost of a process that is sharing program text with other processes. Further, the rounding to the nearest percentage point causes all of the processes in the system that have RSS values under 0.005 times real memory size to have a %MEM of 0.0.
Note: The ps command does not indicate memory consumed by shared memory segments or memory-mapped segments. Because many applications use shared memory or memory-mapped segments, the svmon command is a better tool to view the memory usage of these segments.
 
 

 

 
 
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29455589/viewspace-1081505/,如需转载,请注明出处,否则将追究法律责任。

上一篇: LOB存储笔记
请登录后发表评论 登录
全部评论

注册时间:2014-01-22

  • 博文量
    11
  • 访问量
    32651