跳转至

Proc

https://man7.org/linux/man-pages/man5/proc.5.html

虚拟内存:是进程运行时全部内存空间的总和,Java的-Xmx分配的是虚拟内存的空间;

/proc/self

当前进程的信息,不同线程访问时获取的其线程的信息。

/proc/[pid]/io

rchar:从存储器读取的字节数,是read(2)类似系统调用的字节数之和,跟实际物理磁盘读取无关

wchar:写入磁盘的字节数,类似rchar;

syscr:读的系统调用

syscw:写的系统调用

read_bytes进程实际读取从存储器中的字节数

write_bytes:进程实际写入从存储器中的字节数

/proc/stat

# cpu   user     nice   system   idle     iowait irq softirq steal guest   guest_nice 
 cpu    10132153 290696 3084719 46828483  16683   0   25195   0     175628   0
 cpu0   1393280  32966  572056  13343292  6130    0   17875   0     23933    0

时间的单位是USER_HZ

user:用户模式下花费的时间;

nice:用户模式下以低优先级花费的时间;

system:系统模式下花费的时间;

idle:空闲的时间

iowait:等待I/O的时间,由于以下原因,不是很可靠

  • 任务等待I/O,而不是CPU等待,CPU空闲时会有其他任务被调度在这个CPU上;
  • 在多核CPU上,等待I/O的任务未在任何CPU上运行,因此每个CPU的iowait是很难计算的;
  • 该字段的值可能会降低

/proc/[pid]/stat

进程的状态信息

/proc/[pid]/status

/proc/[pid]/stat/proc/[pid]/statm的大部分信息,可阅读性好。

VmPeak:虚拟内存的峰值;

VmSize:虚拟内存大小;

VmRss:应用程序正在使用的物理内存的大小不精确,ps命令的参数rss的值 (rss);

VmHWM:应用程序正在使用的物理内存的峰值不精确

VmLck:锁定的物理内存大小,锁住的物理内存不能交换到硬盘 (locked_vm);

VmPin:Pinned的物理内存大小,不能移动;

VmData:程序数据段的大小(所占虚拟内存的大小)

TOP

VIRT(即VmSize):进程使用的虚拟内存总量

RES(即VmRss):进程使用的未被换出的物理内存大小,单位kb

SHR:共享内存大小,单位kb

%MEM:进程使用的物理内存百分比