top
参数详解
参数与格式 | 参数作用 |
---|---|
-b | 批处理 |
-c | 显示完整的治命令 |
-l | 忽略失效过程 |
-s | 保密模式 |
-S | 累积模式 |
-i<时间> | 设置间隔时间 |
-u<用户名> | 指定用户名 |
-p<进程号> | 指定进程 |
-n<次数> | 循环显示的次数 |
其它使用技巧
在top基本视图中,按键盘数字“1",可监控每个逻辑CPU 的状况再按键盘数字“1”则返回。
敲击键盘“b”(打开/关闭加亮效果),敲击“y”键关闭或打开运行态进程的加亮效果。
敲击键盘“x”(打开/关闭排序列的加亮效果)。
通过“shift + >”或“shift + <”可以向右或左改变排序列。
free
参数详解
参数与格式 | 参数作用 |
---|---|
-b | 以Byte为单位显示内存使用情况。 |
-k | 以kb为单位显示内存使用情况。 |
-m | 以MB为单位显示内存使用情况。 |
-g | 以GB为单位显示内存使用情况。 |
-o | 不显示缓冲区调节列。 |
-s<间隔秒数> | 持续观察内存使用状况。 |
-t | 显示内存总和列。 |
-V | 显示版本信息。 |
[root@SF1150 service]# free total used free shared buffers cached Mem: 32940112 30841684 2098428 0 4545340 11363424-/+ buffers/cache: 14932920 18007192Swap: 32764556 1944984 30819572[root@SF1150 service]# free -g total used free shared buffers cached Mem: 31 29 2 0 4 10-/+ buffers/cache: 14 17Swap: 31 1 29 [root@SF1150 service]# free -m total used free shared buffers cached Mem: 32168 30119 2048 0 4438 11097-/+ buffers/cache: 14583 17584Swap: 31996 1899 30097
可用内存=系统free memory+buffers+cached
cat/proc/meminfo
该文件记录内存使用详细
虚拟内存原理
-
在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或所有物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有需要的进程使用。
-
在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。
-
分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到内存的过程被称作Page-In。当内核需要一个分页时,但发现此分页不在物理内存中(因为已经被Page-Out了),此时就发生了分页错误(Page Fault)。
-
当系统内核发现可运行内存变少时,就会通过Page-Out来释放一部分物理内存。经管Page-Out不是经常发生,但是如果Page-out频繁不断的发生,直到当内核管理分页的时间超过运行程式的时间时,系统效能会急剧下降。这时的系统已经运行非常慢或进入暂停状态,这种状态亦被称作thrashing(颠簸)。
vmstat
参数详解
参数与格式 | 参数详解 |
---|---|
-a | 显示活跃和非活跃内存。 |
-f | 显示从系统启动至今的fork数量。 |
-m | 显示slabinfo。 |
-n | 只在开始时显示一次各字段名称。 |
-s | 显示内存相关统计信息及多种系统活动数量。 |
delay | 刷新时间间隔。若不指定,只显示一条结果。 |
count | 刷新次数。若不指定刷新次数,但指定了刷新时间,则刷新次数为无穷。 |
-d | 显示磁盘相关统计信息。 |
-p | 显示指定磁盘分区统计信息。 |
-S | 使用指定单位显示。参数有k(1000)、K(1024)、m(1000000)、M(1048576),默认k。 |
-V | 显示vmstat版本信息。 |
vstat 字段显示说明
procs 进程 r:运行队列中进程数量 b:等待IO的进程数量
Memory 内存 swpd 使用虚拟内存大小 free 可用内存大小
buff 用作缓冲的内存大小 cache 用作缓存的内存大小
Swap
si 每秒从交换区写到内存的大小 so 每秒写入交换区的内存大小
IO linux版本块的大小为1024bytes bi 每秒读取的块数
bo 每秒写入的块数
系统
in 每秒中断数,包括时钟中断 cs 每秒上下文切换数
CPU 以百分比显示 us 用户进程执行时间 user time
sy 系统进程执行时间system time
id 空闲时间(包括 IO 等待时间),中央处理器的空闲时间。百分比显示。
wa 等待IO时间。
关于vmstat字段显示的参数判断
若r 经常大于4,且id经常少于40,表示cpu的 负荷很重。
若pi po长期不等于0,表示内存不足。
若disk 经常不等于0,且在b中的队列大于3,表示io性能不好。
生产实用
-
显示虚拟内存
vmstat
-
显示活跃和非活跃内存
vmstat -a 2 5
-
查看系统已经fork了多少次
vmstat -f
-
查看内存使用的详细信息
vmstat -s
-
查看磁盘的读/写
vmstat -d
-
查看/dev/sda1磁盘的读/写
vmstat -p /dev/sda1
该显示详细信息来源于 /proc/diskstats
-
reads 来自于这个分区的读的次数。
-
read sectors 来自于这个分区的读扇区的次数。
-
writes 来自于这个分区的写的次数。
-
requested writes 来自于这个分区的写请求次数。
-
-
查看系统的slab信息
vmstat -m
该显示详细信息来源于 /proc/slabinfo
slab详解
slab的含义就是把大块的空间,分解为小块的空间。slab具体的特性是它包含不同的对象,就像书架一样,同一类型的对象就放在什么同一类型的slab(书架)里,因为一个slab可能装不下所有的对象,所以有些对象类型会有多个slab。slab并不是一开始就有的算法,它的出现是为了优化buddy算法,buddy算法以页(4096字节)为单位,进行管理,即使很小的数据修改,也会动用4096字节,花销大,而且数据这一块,那一块,不好管理。 本段文字引用:https://blog.csdn.net/xzongyuan/article/details/20129171