现在的位置: 首页 > 综合 > 正文

cat /proc/self/status

2013年05月28日 ⁄ 综合 ⁄ 共 5105字 ⁄ 字号 评论关闭

 

/proc/self/status讲解
2008-09-05 11:33

别人写的:

[root@localhost ~]# cat /proc/self/status
Name: cat
State: R (running)
SleepAVG: 88%
Tgid: 5783
Pid: 5783
PPid: 5742
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 256
Groups: 0 1 2 3 4 6 10
VmSize: 6588 kB
VmLck: 0 kB
VmRSS: 400 kB
VmData: 144 kB
VmStk: 2040 kB
VmExe: 14 kB
VmLib: 1250 kB
StaBrk: 0804e000 kB
Brk: 088df000 kB
StaStk: bfe03270 kB
ExecLim: 0804c000
Threads: 1
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000000000000
CapInh: 0000000000000000
CapPrm: 00000000fffffeff
CapEff: 00000000fffffeff

输出解释
参数 解释
Name 应用程序或命令的名字
State 任务的状态,运行/睡眠/僵死/
SleepAVG 任务的平均等待时间(以nanosecond为单位),交互式任务因为休眠次数多、时间长,它们的 sleep_avg
也会相应地更大一些,所以计算出来的优先级也会相应高一些。
Tgid 线程组号
Pid 任务ID
Ppid 父进程ID
TracerPid 接收跟踪该进程信息的进程的ID号
Uid Uid euid suid fsuid
Gid Gid egid sgid fsgid
FDSize 文件描述符的最大个数,file->fds
Groups
VmSize(KB) 任务虚拟地址空间的大小
(total_vm-reserved_vm),其中total_vm为进程的地址空间的大小,reserved_vm:进程在预留或特殊的内存间的物理页
VmLck(KB) 任务已经锁住的物理内存的大小。锁住的物理内存不能交换到硬盘 (locked_vm)
VmRSS(KB) 应用程序正在使用的物理内存的大小,就是用ps命令的参数rss的值 (rss)
VmData(KB) 程序数据段的大小(所占虚拟内存的大小),存放初始化了的数据;
(total_vm-shared_vm-stack_vm)
VmStk(KB) 任务在用户态的栈的大小 (stack_vm)
VmExe(KB) 程序所拥有的可执行虚拟内存的大小,代码段,不包括任务使用的库 (end_code-start_code)
VmLib(KB) 被映像到任务的虚拟内存空间的库的大小 (exec_lib)
VmPTE 该进程的所有页表的大小,单位:kb
Threads 共享使用该信号描述符的任务的个数,在POSIX多线程序应用程序中,线程组中的所有线程使用同一个信号描述符。
SigQ 待处理信号的个数
SigPnd 屏蔽位,存储了该线程的待处理信号
ShdPnd 屏蔽位,存储了该线程组的待处理信号
SigBlk 存放被阻塞的信号
SigIgn 存放被忽略的信号
SigCgt 存放被俘获到的信号
CapInh Inheritable,能被当前进程执行的程序的继承的能力
CapPrm
Permitted,进程能够使用的能力,可以包含CapEff中没有的能力,这些能力是被进程自己临时放弃的,CapEff是CapPrm的一个子集,进程放弃没有必要的能力有利于提高安全性
CapEff Effective,进程的有效能力

范例 1
可以看出该应用程序的正文段(1KB)很小,说明代码很少,是依靠库(1251KB)来执行。栈(138KB)适中,说明 没有太多许多嵌套函数或特别多的临时变量。VmLck为0说明进程没有锁住任何页。VmRSS表示当前进程使用的物理内存为2956KB。当进程开始使用 已经申请的但还没有用的内存时,VmRSS的值开始增大,但是VmSize保持不变。
[root@localhost 1]# cat /proc/4668/status
Name: gam_server
State: S (sleeping)
SleepAVG: 88%
Tgid: 31999
Pid: 31999
PPid: 1
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 256
Groups: 0 1 2 3 4 6 10
VmSize: 2136 kB
VmLck: 0 kB
VmRSS: 920 kB
VmData: 148 kB
VmStk: 88 kB
VmExe: 44 kB
VmLib: 1820 kB
VmPTE: 20 kB
Threads: 1
SigQ: 1/2047
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001006
SigCgt: 0000000210000800
CapInh: 0000000000000000
CapPrm: 00000000fffffeff
CapEff: 00000000fffffeff
[root@localhost 31999]#4 /proc//statm
包含了所有CPU活跃的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。

[root@localhost ~]# cat /proc/self/statm
654 57 44 0 0 334 0

以下是我自己的理解:

从上面可以看出VmRSS才是我们最关心的内存大小,即

正在使用的物理内存的大小;

而VmSize是进程所拥有的虚拟空间的大小;

“当进程开始使用 已经申请的但还没有用的内存时,

VmRSS的值开始增大,但是VmSize保持不变。”

我们之所以看到许多内存的值的大小超过了内存的总的大小

是因为这里显示的都是虚拟内存的大小,而不是实际的占用的大小;

这是其它的地方的解释

From cat /proc/4743/statm
611450 185001883
18 0 593431 0

1. size :- total program size (611450 X 4096/1024 = 2445800kB = 2388M)
2. resident :- resident set size (185001 X 4096/1024 = 740004kB = 722M)
3. share :- shared pages (883 X 4096 = 3532)
4. trs :- text (code) (18 X 4096/1024 = 72kB = VmExe )
5. drs :- data/stack
6. lrs :- library (593431 X 4096/1024 = 2373724kB = VmData +VmStk)
7. dt :- dirty pages

从这里可以看出第一项是进程的可执行的大小,X4就等于VmSize

而第二项的值X4就等于VmRSS

#补充 by wylhistory:

对于信号那几个段:

SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001006
SigCgt: 0000000210000800

其中前32位分别表示普通的信号,比如:

SigBlk: 0000000000002000
这里表示SIGALRM已经被阻塞了,

因为SIGALRM的值就是14;

而里面的Siglgn:1006就表示:

类型为2,3,13的信号被忽略了,

分别是:SIGINT,SIGQUIT,SIGPIPE,


记得从1开始而不是0,因为信号没有类型为0的信号;

后32位的一般不用管为实时信号;

 
/proc/oom_score
–/proc/self/environ
▪PROCESS_SCHED
–/proc/self/sched
▪PROCESS_MAPS
–/proc/self/maps
▪THREAD_STATE
–/proc/self/task/self/status
▪THREAD_SCHED
▪/proc/self/task/self/sched
▪NE_JBT_TRACES (?)
–/data/anr/jbt.[pid];
–available only java process NE occur
▪Dumpframework (available only JE/ANR/SWT/MANUAL dump)
–dumpsys activity -a
–dumpsys window –w
–dumpsys
 
▪SYS_MEMORY_INFO
–/proc/meminfo
▪SYS_PROCRANK
–Procrank
▪SYS_VIRTUAL_MEMORY_STATS
–/proc/vmstat
▪SYS_VMALLOC_INFO
–/proc/vmallocinfo
▪SYS_SLAB_INFO
–/proc/slabinfo
▪SYS_ZONINFO
–/proc/zoneinfo
 
▪SYS_ANDROID_SYSTEM_LOG
–Logcat –v time –d *:V
▪SYS_EVENT_LOG_TAGS
–/etc/event-log-tags
▪SYS_ANDROID_EVENT_LOG
–logcat –b events –v time –d *:V
▪SYS_ANDROID_RADIO_LOG
–Logcat –b radio –v time –d *:V
d for not block
V for * @ level V
 
▪SYS_KERNEL_LOG
–Dmesg
▪SYS_LAST_KMSG
–/proc/last_kmsg
▪SYS_PANIC_CONSOLE
–/data/dontpanic/apanic_console
▪SYS_PANIC_THREADS
–/data/dontpanic/apanic_threads
 
▪CPUInfo
–SYS_CPU_INFO
•Top –n 1 –d 1 –m 30 –t
–SYS_KERNEL_CPUFREQ
•/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state
▪Process
–SYS_PROCESSES
•Ps
–SYS_PROCESSES_AND_THREADS
•Ps –t -p
 
▪File system info
–SYS_FILE_SYSTEMS
•Df
–SYS_PACKAGE_SETTINGS
•/data/system/pachages.xml
–SYS_PACKAGE_UID_ERRORS
•/data/system/uiderrors.txt
▪SYS_BINDER_INFO
–/proc/binder/failed_transaction_log
–/proc/binder/transaction_log
–/proc/binder/transactions
–/proc/binder/stats
–/proc/binder/proc
 
▪SYS_KERNEL_WAKELOCKS
–/proc/wakelocks
▪SYS_BACKLIGHTS
–/sys/class/leds/lcd-backlight/brightness
–/sys/class/leds/button-backlight/brightness
–/sys/class/leds/keypad-backlight/brightness
–/sys/class/leds/lcd-backlight/als
–/sys/class/leds/lcd-backlight/registers
 
▪SYS_NETWORK_STATE
–Netcfg
–/proc/net/rounte
▪SYS_PROPERTIES
–Print_properties()
▪SYS_VERSION_INFO
–/system/build.prop
–property items (gsm.version.ril-impl; gsm.version.baseband; gsm.imei; gsm.sim.operator.numeric; gsm.operator.alpha)
–/proc/version
–/proc/cmdline
 
▪Step
–/dev/graphics/fb0 ioctl (FBIOGET_VSCREENINFO) to get screen width and screen height.
–/system/bin/fb2bmp /dev/graphics/fb0 SCREEN.bmp [width] [height]
 
 
 
 

抱歉!评论已关闭.