1

SmartOS 区域在区域包中定义了轻量级进程的上限或最大数量。为了检查我当前的设置是否有意义,我想随时间收集轻量级进程的总数(从区域内)。我已经有了收集 kstat 计数器的工具,所以我更愿意使用它。我注意到 prstat 提供了一个lwps计数,任何有关 prstat 如何获取该值的信息都可能会有所帮助。

与此同时,我已经能够获取使用轻量级进程的进程数,'caps:*:nprocs_zone_*:usage''unix:0:system_misc:nproc'没有获取任何关于轻量级进程的信息。

总结一下,我想知道:

  • 如果有任何 kstat 计数器代表 lwps 总数或每个进程计数器,我可以求和以获得该值。
  • 如果没有,prstat 如何获得总 lwps 计数?
  • 有没有其他方法可以获得这个值?(希望不解析 prstat 输出)
4

1 回答 1

0

prstat 正在查询 /proc 文件系统以获取信息,针对 prstat 命令运行 truss 的示例显示:

open("/proc/25841/psinfo", O_RDONLY)            = 158

proc在这里有很好的记录,或者搜索“oracle man pages section 4 File Formats proc”。

在每个 /proc/[pid] 目录中存在一个 /proc/[pid]/lwp/ 目录。例如:

root@sol11:/proc/597/lwp# ls -l
total 35
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 1
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 10
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 11
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 12
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 13
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 14
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 15
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 16
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 17
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 18
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 19
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 2
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 20
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 21
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 22
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 23
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 24
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 26
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 27
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 28
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 29
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 3
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 30
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 31
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 33
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 34
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 35
dr-xr-xr-x   2 root     root         256 Jun  3 13:07 36
dr-xr-xr-x   2 root     root         256 Jun 16 11:16 37
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 4
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 5
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 6
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 7
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 8
dr-xr-xr-x   2 root     root         256 Jun  3 13:06 9

对同一进程运行 ps 将读取每个 lwp 的内容并将其返回,这个特定的 pid 与 fmd 服务相关。

root@sol11:/proc/597/lwp# ps -Lp 597
  PID   LWP LNAME            TTY        LTIME CMD
  597     1 -                ?           0:00 fmd
  597     2 fmd_timerq_exec  ?           0:04 fmd
  597     3 fmd-self-diagnosis ?           0:00 fmd
  597     4 sysevent-transport ?           0:00 fmd
  597     5 door_xcreate_startf ?           0:00 fmd
  597     6 door_xcreate_startf ?           0:00 fmd
  597     7 subscriber_event_handler ?           0:01 fmd
  597     8 fmd_door_server  ?           0:00 fmd
  597     9 fmd_thread_start ?           0:00 fmd
  597    10 cpumem-retire    ?           0:00 fmd
  597    11 ses-log-transport ?           0:04 fmd
  597    12 ext-event-transport ?           0:00 fmd
  597    13 door_xcreate_startf ?           0:00 fmd
  597    14 door_xcreate_startf ?           0:00 fmd
  597    15 sas-cabling      ?           0:01 fmd
  597    16 io-retire        ?           0:00 fmd
  597    17 eft              ?           0:00 fmd
  597    18 endurance-transport ?           0:00 fmd
  597    19 fdd-msg          ?           0:00 fmd
  597    20 disk-transport   ?           0:00 fmd
  597    21 sensor-transport ?           0:04 fmd
  597    22 -                ?           0:00 <defunct>
  597    23 syslog-msgs      ?           0:00 fmd
  597    24 disk-diagnosis   ?           0:00 fmd
  597    26 zfs-retire       ?           0:00 fmd
  597    27 fru-monitor      ?           0:02 fmd
  597    28 -                ?           0:00 fmd
  597    29 software-response ?           0:00 fmd
  597    30 enum-transport   ?           0:00 fmd
  597    31 non-serviceable  ?           0:00 fmd
  597    33 fabric-xlate     ?           0:00 fmd
  597    34 software-diagnosis ?           0:00 fmd
  597    35 zfs-diagnosis    ?           0:00 fmd
  597    36 umem_update_thread ?           0:06 fmd
  597    37 fmd_door_server  ?           0:00 fmd

以下命令应为您解析总 LWP。

prstat -n 1,1 1 1 | nawk '/Total/ { print $4 }'

使用 zlogin -c 运行以获取区域中 LWP 的详细信息。您可能可以使用 dtrace 获得相同的信息,但我不知道该怎么做。如果您发现,请回复您的发现...

如果您想深入了解 LWP 信息,-lL 开关提供有关 LWP 的详细信息,例如:

root@sol11:/etc# ps -lLp 597
 F S    UID   PID  PPID   LWP LNAME              C PRI NI     ADDR     SZ    WCHAN TTY        LTIME CMD
 0 S      0   597     1     1 -                  0  40 20        ?  25470        ? ?           0:00 fmd
 0 S      0   597     1     2 fmd_timerq_exec    0  40 20        ?  25470        ? ?           0:04 fmd
 0 S      0   597     1     3 fmd-self-diagnosis   0  40 20        ?  25470        ? ?           0:00 fmd
 0 S      0   597     1     4 sysevent-transport   0  40 20        ?  25470        ? ?           0:00 fmd
 0 S      0   597     1     5 door_xcreate_startf   0  40 20        ?  25470        ? ?           0:00 fmd
 0 S      0   597     1     6 door_xcreate_startf   0  40 20        ?  25470        ? ?           0:00 fmd
 0 S      0   597     1     7 subscriber_event_handler   0  40 20        ?  25470        ? ?           0:01 fmd

HTH。

于 2016-06-22T08:43:40.453 回答