无码a片

Linux内存占用分析的几个方法,你表示几个?

发布日期:2022-06-18 17:09    点击次数:63

Linux内存占用分析的几个方法,你表示几个?

0. 序文:

系统内存是硬件系统中必不可少的部分,定时巡逻系统内存资源运行情况,不错匡助咱们实时发现内存资源是否存在颠倒占用,确保业务的通晓运行。

例如:依期巡逻公司的网站就业器内存使用情况,不错确保就业器的资源是否够用,或者发现就业器内存被占用颠倒不错实时责罚,幸免因内存不够导致无法打听网站或打听速率慢的问题。

因此,对于 Linux 经管员来说,在日常责任中能够练习在 Linux 系统下查验内存的运奇迹况就变得尤为伏击!

巡逻内存的运奇迹态并诽谤事,然而针对不同的情况使用正确的形貌巡逻呢?

一口君整理了几个 个相配实用的 Linux 内存巡逻方法

1、free大喊

2、 vmstat大喊

3、 /proc/meminfo 大喊

4、 top大喊

5、 htop 大喊

6、巡逻进度内存信息

Linux内存总览图

该图很好的姿色了OS内存的使用和分派等属目信息。提出天下合营该图来一道学习和意会内存的一些认识。

一、free大喊

free 大喊不错袒露现时系统未使用的和已使用的内存数量,还不错袒露被内核使用的内存缓冲区。

1. free 大喊语法:
free [options] 

free 大喊选项:

-b # 以Byte为单元袒露内存使用情况; -k # 以KB为单元袒露内存使用情况; -m # 以MB为单元袒露内存使用情况; -g # 以GB为单元袒露内存使用情况。  -o # 不袒露缓冲区障碍列; -s<间隔秒数> # 继续细察内存使用状态; -t # 袒露内存总数列; -V # 袒露版块信息。 
2. free 大喊实例
free -t    # 以总数的体式袒露内存的使用信息 free -h -s 10 # 周期性的查询内存使用信息,每10s 试验一次大喊  free -h -c 10 #输出10次   在版块 v3.2.8,便是输出一次!需要合营 -s 使用。   在版块 v3.3.10,不加-s,就默许1秒输出一次。 free -V #巡逻版块号 

v3.2.8

v3.3.10

底下先讲解一下输出的内容:

内容 含义 Mem 行(第二行)是内存的使用情况 Swap 行(第三行)是交换空间的使用情况 total 总可用物理内存。一般是总物理内存撤退一些预留的和操作系统自己的内存占用,是操作系统不错主管的内存大小。这个在v3.2.8和v3.3.10一样。这个值是/proc/meminfo中MemTotal的值。 used 列袒露如故被使用的物理内存和交换空间。在v3.2.8,这个值是(total - free)得出来的。不错说是系统如故被系统分派,然而本色并不一定正在被真实的使用,其空间不错被回收再分派的。在v3.3.10,这个值是(total - free - cache - buffers)得出来的,是真实目下正在被使用的内存。 free 系统还未使用的物理内存。这个值是/proc/meminfo中MemFree的值 shared 分享内存的空间。这个值是/proc/meminfo中Shmem的值 buff/cache 列袒露被 buffer 和 cache 使用的物理内存大小 available v3.3.10中的项。看起来这个值是不错使用的内存,不外(available + used) < total,也便是available < (free + cache + buffers)。而在v3.2.8中(free + cache + buffers)是一般认为的可用内存,既然在新版块中有这个available数据,应该是更准确的吧。毕竟并不是通盘的未使用的内存就一定是可用的。这个值是取的/proc/meminfo中MemAvailable的值,要是meminfo中莫得这个值,会依据meminfo中的Active(file),Inactive(file),MemFree,SReclaimable等值计议一个。 -/+ buffers/cache v3.2.8有这一滑,v3.3.10 莫得。其中,used 这一项是(used - buffers - cached)的值,即(total - free - buffers - cached)的值,是真确凿使用的内存的值。free 这一项是(free + buffers + cached)的值,是真实未使用的内存的值。个人以为有 -/+ buffers/cache,这一栏看的挺习尚。。不外新版块v3.3.10的used更明确。确信有不少人和我一样,刚看到v3.2.8里面的used占了这样多内存的时候,有点迷朦拢糊。 二、vmstat 教导

vmstat大喊是最常见的Linux/Unix监控器具,用于巡逻系统的内存存储信息,是一个证明臆造内存统计信息的吝惜具,属于sysstat包。

vmstat 大喊证明包括:进度、内存、分页、窒碍 IO、中断、磁盘、CPU。

不错展现给定时辰间隔的就业器的状态值,包括就业器的CPU使用率,内存使用,臆造内存交换情况,IO读写情况。

这个大喊是我巡逻Linux/Unix最嗜好的大喊,一个是Linux/Unix都相沿,二是比较top,我不错看到通盘机器的CPU,内存,IO的使用情况,而不是单单看到各个进度的CPU使用率和内存使用率(使用场景不一样)。

1. 大喊花式:
vmstat -s(参数) 
2. 例如

一般vmstat器具的使用是通过两个数字参数来完成的,第一个参数是采样的时辰间隔数,单元是秒,第二个参数是采样的次数,如:

root@local:~# vmstat 2 1 rocs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa 1  0      0 3498472 315836 3819540    0    0     0     1    2    0  0  0 100  0 

2示意每个两秒汇集一次就业器状态,1示意只汇集一次。

本色上,在诳骗经由中,咱们会在一段时辰内一直监控,不想监控径直界限vmstat就行了,例如:

这示意vmstat每2秒汇集数据,按下ctrl + c界限次第,这里汇集了3次数据我就界限了次第。

类别

样式

含义

阐明

Procs(进度)

r

恭候试验的任务数

展示了正在试验和恭候cpu资源的任务个数。当这个值跳跃了cpu个数,就会出现cpu瓶颈。

B

恭候IO的进度数量

 

Memory(内存)

swpd

正在使用臆造的内存大小,单元k

 

free

欢乐内存大小

 

buff

已用的buff大小,对块栽植的读写进行缓冲

 

cache

已用的cache大小,文献系统的cache

 

inact

非活跃内存大小,即被表明可回收的内存,区别于free和active

具体含义见:认识补充(当使用-a选项时袒露)

active

活跃的内存大小

具体含义见:认识补充(当使用-a选项时袒露)

Swap

si

每秒从交换区写入内存的大小(单元:kb/s)

 

so

每秒从内存写到交换区的大小

 

IO

bi

每秒读取的块数(读磁盘)

块栽植每秒继承的块数量,单元是block,这里的块栽植是指系统上通盘的磁盘和其他块栽植,当今的Linux版块块的大小为1024bytes

bo

每秒写入的块数(写磁盘)

块栽植每秒发送的块数量,单元是block

system

in

每秒中断数,包括时钟中断

这两个值越大,会看到由内核销耗的cpu时辰sy会越多

 

秒崎岖文切换次数,例如咱们调用系统函数,就要进行崎岖文切换,线程的切换,也要进度崎岖文切换,这个值要越小越好,太大了,要筹商调低线程或者进度的数量

cs

每秒崎岖文切换数

CPU(以百分比示意)

us

用户进度试验销耗cpu时辰(user time)

us的值比较高时,阐明用户进度销耗的cpu时辰多,然而要是持久跳跃50%的使用,那么咱们就该筹商优化次第算法或其他措施了

sy

系统进度销耗cpu时辰(system time)

sys的值过高时,阐明系统内核销耗的cpu资源多,这个不是良性的施展,咱们应该查验原因。这里us + sy的参考值为80%,要是us+sy 大于 80%阐明可能存在CPU不及

Id

欢乐时辰(包括IO恭候时辰)

一般来说 us+sy+id=100

wa

恭候IO时辰

wa过高时,阐明io恭候比较严重,这可能是由于磁盘大宗立地打听酿成的,也有可能是磁盘的带宽出现瓶颈。

  3. 常见问题处理

常见问题及责罚方法

要是r时时大于4,且id时时少于40,示意cpu的负荷很重。

要是pi,po持久不等于0,示意内存不及。

要是disk时时不等于0,且在b中的队伍大于3,示意io性能不好。

要是在processes中运行的序列(process r)是趋奉的大于在系统中的CPU的个数示意系统当今运行比较慢,有多数的进度恭候CPU。 要是r的输出数大于系统中可用CPU个数的4倍的话,则系统濒临着CPU零落的问题,或者是CPU的速率过低,系统中有多数的进度在恭候CPU,酿成系统中进度运行过慢。 要是欢乐时辰(cpu id)继续为0况兼系统时辰(cpu sy)是用户时辰的两倍(cpu us)系统则濒临着CPU资源的零落。

当发生以上问题的时候请先调理诳骗次第对CPU的占用情况.使得诳骗次第能够更灵验的使用CPU.同期不错筹商增多更多的CPU. 对于CPU的使用情况还不错鸠集mpstat, ps aux top prstat –a等等一些相应的大喊来概述筹商对于具体的CPU的使用情况,和那些进度在占用大宗的CPU时辰.一般情况下,诳骗次第的问题会比较大一些.比如一些sql语句不对理等等都会酿成这样的征象.

4. 内存问题征象:

内存的瓶颈是由scan rate (sr)来决定的.scan rate是通过每秒的恒久算法来进行页扫描的.要是scan rate(sr)趋奉的大于每秒200页则示意可能存在内存弱势.一样的要是page项中的pi和po这两栏示意每秒页面的调入的页数和每秒调出的页数.要是该值时时为非零值,也有可能存在内存的瓶颈,天然,要是个别的时候不为0的话,属于畴昔的页面调度这个是臆造内存的主要旨趣.

责罚方针:

障碍applications & servers使得对内存和cache的使用愈加灵验. 增多系统的内存. Implement priority paging in s in pre solaris 8 versions by adding line "set priority paging=1" in /etc/system. Remove this line if upgrading from Solaris 7 to 8 & retaining old /etc/system file.

对于内存的使用情况还不错结ps aux top prstat –a等等一些相应的大喊来概述筹商对于具体的内存的使用情况,和那些进度在占用大宗的内存.

一般情况下,要是内存的占用率比较高,然而,CPU的占用很低的时候,不错筹商是有许多的诳骗次第占用了内存莫得开释,然而,并莫得占用CPU时辰,不错筹商诳骗次第,对于未占用CPU时辰和一些后台的次第,开释内存的占用。

r 示意运行队伍(便是说几许个进度确实分派到CPU),我测试的就业器目下CPU比较欢乐,没什么次第在跑,当这个值跳跃了CPU数量,就会出现CPU瓶颈了。

这个也和top的负载相联系,一般负载跳跃了3就比较高,跳跃了5就高,跳跃了10就不畴昔了,就业器的状态很危急。

top的负载肖似每秒的运行队伍。要是运行队伍过大, 小12萝8禁在线喷水观看示意你的CPU很繁重,一般会酿成CPU使用率很高。

5. 常见性能问题分析

IO/CPU/men四百四病

1.free急剧着落 2.buff和cache被回收着落,但也船到急时抱佛脚迟 3.依旧需要使用大宗swap交换分区swpd 4.恭候进度数,b增多 5.读写IO,bi bo增多 6.si so大于0运转从硬盘中读取 7.cpu恭候时辰用于 IO恭候,wa增多 

内存不及

1.运转使用swpd,swpd不为0 2.si so大于0运转从硬盘中读取 

io瓶颈

1.读写IO,bi bo增多跳跃2000 2.cpu恭候时辰用于 IO恭候,wa增多 跳跃20 3.sy 系统调用时辰长,IO操作频繁会导致增多 >30% 4.wa io恭候时辰长     iowait% <20%            风雅     iowait% <35%            一般     iowait% >50% 5.进一步使用iostat细察 

CPU瓶颈:load,vmstat中r列

1.反映为CPU队伍长度 2.一段时辰内,CPU正在处理和恭候CPU处理的进度数之和,径直反映了CPU的使用和肯求情况。 3.梦想的load average:核数*CPU数*0.7     CPU个数:grep 'physical id' /proc/cpuinfo | sort -u     核数:grep 'core id' /proc/cpuinfo | sort -u | wc -l 4.跳跃这个值就阐明如故是CPU瓶颈了 
三、/proc/meminfo

用途:用于从/proc文献系统中索求与内存联系的信息。这些文献包含有 系统和内核的里面信息。其实 free 大喊中的信息都来自于 /proc/meminfo 文献。/proc/meminfo 文献包含了更多更原始的信息,仅仅看起来不太直觉。

1. 巡逻方法:
cat /proc/meminfo 
2. 实例及信息讲解
peng@ubuntu:~$ cat /proc/meminfo MemTotal:        2017504 kB //通盘可用的内存大小, 物理内存减去预留位和内核使用。系统从加电运转到引导完成,firmware/BIOS要预留一 些内存,内核自己要占用一些内存,终末剩下可供内核主管的内存便是MemTotal。这个值 在系统运行工夫一般是固定不变的,重启会更正。 MemFree:          511052 kB //示意系统尚未使用的内存。 MemAvailable:     640336 kB //真实的系统可用内存, 系统中有些内存天然已被使用然而不错回收的,比如cache/buffer、slab都有一部分可 以回收,是以这部分可回收的内存加上MemFree才是系统可用的内存 Buffers:          114348 kB //用来给块栽植做缓存的内存,(文献系统的 metadata、pages) Cached:           162264 kB //分派给文献缓冲区的内存,例如vi一个文献,就会将未保存的内容写到该缓冲区 SwapCached:         3032 kB //被高速缓冲存储用的交换空间(硬盘的swap)的大小 Active:           555484 kB //时时使用的高速缓冲存储器页面文献大小 Inactive:         295984 kB //常常常使用的高速缓冲存储器文献大小 Active(anon):     381020 kB //活跃的匿名内存 Inactive(anon):   244068 kB //不活跃的匿名内存 Active(file):     174464 kB //活跃的文献使用内存 Inactive(file):    51916 kB //不活跃的文献使用内存 Unevictable:          48 kB //不成被开释的内存页 Mlocked:              48 kB //系统调用 mlock  SwapTotal:        998396 kB //交换空间总内存 SwapFree:         843916 kB //交换空间欢乐内存 Dirty:               128 kB //恭候被写回到磁盘的 Writeback:             0 kB //正在被写回的 AnonPages:        572776 kB //未映射页的内存/映射到用户空间的非文献页表大小 Mapped:           119816 kB //映射文献内存 Shmem:             50212 kB //如故被分派的分享内存 Slab:             113700 kB  //内核数据结构缓存 SReclaimable:      68652 kB //可收回slab内存 SUnreclaim:        45048 kB //不可收回slab内存 KernelStack:        8812 kB //内核销耗的内存 PageTables:        27428 kB //经管内存分页的索引表的大小 NFS_Unstable:          0 kB //不通晓页表的大小 Bounce:                0 kB //在低端内存均分派一个临时buffer算作跳转,把位 于高端内存的缓存数据复制到此处销耗的内存 WritebackTmp:          0 kB //FUSE用于临时写回缓冲区的内存 CommitLimit:     2007148 kB //系统本色可分派内存 Committed_AS:    3567280 kB //系统现时已分派的内存 VmallocTotal:   34359738367 kB //预留的臆造内存总量 VmallocUsed:           0 kB //如故被使用的臆造内存 VmallocChunk:          0 kB //可分派的最大的逻辑趋奉的臆造内存 HardwareCorrupted:     0 kB //示意“中毒页面”中的内存量 即has failed的内存(等闲由ECC标志). ECC代表“纠错码”. ECC memory能够考订小不实并检测较大不实; 在具有非ECC内存的典型PC上,内存不实未被检测到.要是使用ECC检测到无法考订的不实(在内存或缓存中, 具体取决于系统的硬件相沿),则Linux内核会将相应的页面标志为中毒. AnonHugePages:         0 kB //匿名大页 【/proc/meminfo的AnonHugePages==通盘进度的/proc/<pid>/smaps中AnonHugePages之和】 ShmemHugePages:        0 kB  //用于分享内存的大页 ShmemPmdMapped:        0 kB CmaTotal:              0 kB //趋奉内存区经管总量 CmaFree:               0 kB //趋奉内存区经管欢乐量 HugePages_Total:       0    //预留HugePages的总个数 HugePages_Free:        0    //池中尚未分派的 HugePages 数量, 真实欢乐的页数等于HugePages_Free - HugePages_Rsvd HugePages_Rsvd:        0    //示意池中如故被诳骗次第分派但尚未使用的 HugePages 数量 HugePages_Surp:        0    //这个值得趣味是当运转配置了20个大页,当今修改配置为16,那么这个参数就会袒露为4,一般不修改配置,这个值都是0 Hugepagesize:       2048 kB //大内存页的size //指径直映射(direct mapping)的内存大小,从代码上来看,值记载经管页表占用的内存,便是姿色线性映射空间中,有多个空间分裂使用了2M/4K/1G页映射 DirectMap4k:       96128 kB DirectMap2M:     2000896 kB  DirectMap1G:           0 kB 

按捺这个文献袒露的单元是kB而不是KB,1kB=1000B,然而本色上应该是KB,1KB=1024B

还不错使用大喊 less /proc/meminfo 径直读取该文献。通过使用 less 大喊,不错在长长的输出中进取和向下转化,找到你需要的内容。

从中咱们不错很显著明了的看出内存中的各式贪图情况,例如 MemFree的欢乐内存和SwapFree中的交换内存。

3. 代码实例

发达输出/proc/meminfo的源代码是:

fs/proc/meminfo.c : meminfo_proc_show() 
static int meminfo_proc_show(struct seq_file *m, void *v) {  struct sysinfo i;  unsigned long committed;  long cached;  long available;  unsigned long pages[NR_LRU_LISTS];  int lru;    si_meminfo(&i);  si_swapinfo(&i);  committed = percpu_counter_read_positive(&vm_committed_as);    cached = global_node_page_state(NR_FILE_PAGES) -    total_swapcache_pages() - i.bufferram;  if (cached < 0)   cached = 0;    for (lru = LRU_BASE; lru < NR_LRU_LISTS; lru++)   pages[lru] = global_node_page_state(NR_LRU_BASE + lru);    available = si_mem_available();    show_val_kb(m, "MemTotal:       ", i.totalram);  show_val_kb(m, "MemFree:        ", i.freeram);  show_val_kb(m, "MemAvailable:   ", available);  show_val_kb(m, "Buffers:        ", i.bufferram);  show_val_kb(m, "Cached:         ", cached);  show_val_kb(m, "SwapCached:     ", total_swapcache_pages());  show_val_kb(m, "Active:         ", pages[LRU_ACTIVE_ANON] +         pages[LRU_ACTIVE_FILE]);  show_val_kb(m, "Inactive:       ", pages[LRU_INACTIVE_ANON] +         pages[LRU_INACTIVE_FILE]);  show_val_kb(m, "Active(anon):   ", pages[LRU_ACTIVE_ANON]);  show_val_kb(m, "Inactive(anon): ",精品国产综合区久久久久久 pages[LRU_INACTIVE_ANON]);  show_val_kb(m, "Active(file):   ", pages[LRU_ACTIVE_FILE]);  show_val_kb(m, "Inactive(file): ", pages[LRU_INACTIVE_FILE]);  show_val_kb(m, "Unevictable:    ", pages[LRU_UNEVICTABLE]);  show_val_kb(m, "Mlocked:        ", global_zone_page_state(NR_MLOCK));   #ifdef CONFIG_HIGHMEM  show_val_kb(m, "HighTotal:      ", i.totalhigh);  show_val_kb(m, "HighFree:       ", i.freehigh);  show_val_kb(m, "LowTotal:       ", i.totalram - i.totalhigh);  show_val_kb(m, "LowFree:        ", i.freeram - i.freehigh); #endif   #ifndef CONFIG_MMU  show_val_kb(m, "MmapCopy:       ",       (unsigned long)atomic_long_read(&mmap_pages_allocated)); #endif    show_val_kb(m, "SwapTotal:      ", i.totalswap);  show_val_kb(m, "SwapFree:       ", i.freeswap);  show_val_kb(m, "Dirty:          ",       global_node_page_state(NR_FILE_DIRTY));  show_val_kb(m, "Writeback:      ",       global_node_page_state(NR_WRITEBACK));  show_val_kb(m, "AnonPages:      ",       global_node_page_state(NR_ANON_MAPPED));  show_val_kb(m, "Mapped:         ",       global_node_page_state(NR_FILE_MAPPED));  show_val_kb(m, "Shmem:          ", i.sharedram);  show_val_kb(m, "Slab:           ",       global_node_page_state(NR_SLAB_RECLAIMABLE) +       global_node_page_state(NR_SLAB_UNRECLAIMABLE));    show_val_kb(m, "SReclaimable:   ",       global_node_page_state(NR_SLAB_RECLAIMABLE));  show_val_kb(m, "SUnreclaim:     ",       global_node_page_state(NR_SLAB_UNRECLAIMABLE));  seq_printf(m, "KernelStack:    %8lu kB\n",      global_zone_page_state(NR_KERNEL_STACK_KB));  show_val_kb(m, "PageTables:     ",       global_zone_page_state(NR_PAGETABLE)); #ifdef CONFIG_QUICKLIST  show_val_kb(m, "Quicklists:     ", quicklist_total_size()); #endif    show_val_kb(m, "NFS_Unstable:   ",       global_node_page_state(NR_UNSTABLE_NFS));  show_val_kb(m, "Bounce:         ",       global_zone_page_state(NR_BOUNCE));  show_val_kb(m, "WritebackTmp:   ",       global_node_page_state(NR_WRITEBACK_TEMP));  show_val_kb(m, "CommitLimit:    ", vm_commit_limit());  show_val_kb(m, "Committed_AS:   ", committed);  seq_printf(m, "VmallocTotal:   %8lu kB\n",      (unsigned long)VMALLOC_TOTAL >> 10);  show_val_kb(m, "VmallocUsed:    ", 0ul);  show_val_kb(m, "VmallocChunk:   ", 0ul);   #ifdef CONFIG_MEMORY_FAILURE  seq_printf(m, "HardwareCorrupted: %5lu kB\n",      atomic_long_read(&num_poisoned_pages) << (PAGE_SHIFT - 10)); #endif   #ifdef CONFIG_TRANSPARENT_HUGEPAGE  show_val_kb(m, "AnonHugePages:  ",       global_node_page_state(NR_ANON_THPS) * HPAGE_PMD_NR);  show_val_kb(m, "ShmemHugePages: ",       global_node_page_state(NR_SHMEM_THPS) * HPAGE_PMD_NR);  show_val_kb(m, "ShmemPmdMapped: ",       global_node_page_state(NR_SHMEM_PMDMAPPED) * HPAGE_PMD_NR); #endif   #ifdef CONFIG_CMA  show_val_kb(m, "CmaTotal:       ", totalcma_pages);  show_val_kb(m, "CmaFree:        ",       global_zone_page_state(NR_FREE_CMA_PAGES)); #endif    hugetlb_report_meminfo(m);    arch_report_meminfo(m);    return 0; } 
四、top 教导

用途:用于打印系统中的CPU和内存使用情况。输出恶果中,不错很显著的看出已用和可用内存的资源情况。top 最佳的地点之一便是发现可能如故失控的就业的进度 ID 号(PID)。有了这些 PID,你不错对有问题的任务进行故障摈斥(或 kill)。

语法
top [-] [d delay] [q] [c] [S] [s] [i] [n] [b] 

参数阐明:

d : 更正袒露的更新速率,或是在交谈式教导列( interactive command)按 s q : 莫得任何延长的袒露速率,要是使用者是有 superuser 的权限,则 top 将会以最高的优先序试验 c : 切换袒露模式,共有两种模式,一是只袒露试验档的称呼,另一种是袒露齐备的旅途与称呼 S : 积累模式,会将己完成或消失的子进度 ( dead child process ) 的 CPU time 积累起来 s : 安全模式,将交谈式教导取消, 幸免潜在的危机 i : 不袒露任何闲置 (idle) 或毋庸 (zombie) 的进度 n : 更新的次数,完成后将会退出 top b : 批次档模式,搭配 "n" 参数一道使用,不错用来将 top 的恶果输出到档案内 
例如

第一滑,任务队伍信息,同 uptime 大喊的履作恶果

系统时辰:02:19:10 运行时辰:up 2:26 min, 现时登托付户:1 user 负载平衡(uptime) load average: 0.00, 0.06, 0.07 average背面的三个数分裂是1分钟、5分钟、15分钟的负载情况。load average数据是每隔5秒钟查验一次活跃的进度数,然后按特定算法计议出的数值。要是这个数除以逻辑CPU的数量,恶果高于5的时候就表明系统在超负荷运转了

第二行,Tasks — 任务(进度)

总进度:229 total, 运行:1 running, 寝息:163 sleeping, 罢手: 0 stopped, 僵尸进度: 0 zombie

第三行,cpu状态信息

0.7%us【user space】— 用户空间占用CPU的百分比。1.0%sy【sysctl】— 内核空间占用CPU的百分比。0.0%ni【】— 更正过优先级的进度占用CPU的百分比 97.9%id【idolt】— 欢乐CPU百分比 0.3%wa【wait】— IO恭候占用CPU的百分比 0.0%hi【Hardware IRQ】— 硬中断占用CPU的百分比 0.0%si【Software Interrupts】— 软中断占用CPU的百分比

第四行,内存状态

2017504 total, 653616 free, 1154200 used, 209688 buff/cache【缓存的内存量】

第五行,swap交换分区信息

998396 total, 771068 free, 227328 used. 635608 avail Mem

第七行以下:各进度(任务)的状态监控

PID — 进度id USER — 进度通盘者 PR — 进度优先级 NI — nice值。负值示意高优先级,刚巧示意低优先级 VIRT — 进度使用的臆造内存总量,单元kb。VIRT=SWAP+RES RES — 进度使用的、未被换出的物理内存大小,单元kb。RES=CODE+DATA SHR — 分享内存大小,单元kb S —进度状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=追踪/罢手 Z=僵尸进度 %CPU — 前次更新到当今的CPU时辰占用百分比 %MEM — 进度使用的物理内存百分比 TIME+ — 进度使用的CPU时辰共计,单元1/100秒 COMMAND — 进度称呼(大喊名/大喊行)

常用实例

袒露进度信息

# top 

袒露齐备大喊

# top -c 

以批处理模式袒露次第信息

# top -b 

以积累模式袒露次第信息

# top -S 

成立信息更新次数

top -n 2 

//示意更新两次后圮绝更新袒露

成立信息更新时辰

# top -d 3 

//示意更新周期为3秒

袒露指定的进度信息

# top -p 139 

//袒露进度号为139的进度信息,CPU、内存占用率等

袒露更新十次后退出

top -n 10 
五、htop 教导

htop 它肖似于 top 大喊,但不错让你在垂直和水平方进取转化,是以你不错看到系统上运行的通盘进度,以及他们齐备的大喊行。

不错不消输入进度的 PID 就不错对此进度进行联系的操作 (killing, renicing)。

htop快照:

不错使用快捷键

F1,h,?:巡逻htop使用阐明, F2,s  :成立选项 F3,/  :搜索进度 F4,\  :过滤器,输入要津字搜索 F5,t  :袒露属性结构 F6,<,>:遴选排序形貌 F7, [,:减少进度的优先级(nice) F8,] :增多进度的优先级(nice) F9,k :杀掉选中的进度 F10,q:退出htop u:袒露通盘用户,并不错选中某一特定用户的进度 U:取消标志通盘的进度 

第1行-第4行:袒露CPU现时的运行负载,有几核就有几行,我的是1核

Mem:袒露内存的使用情况,3887M约略是3.8G,此时的Mem不包含buffers和cached的内存,是以和free -m会不同Swp:袒露交换空间的使用情况,交换空间是当内存不够和其中有一些持久不消的数据时,ubuntu会把这些暂时放到交换空间中

其他信息不错参考top大喊阐明。

PS:要是你终局没安设 htop,先通过教导来安设。sudo apt-get update sudo apt install htop

六、巡逻制定进度的内存

通过/proc/procid/status巡逻进度内存

peng@ubuntu:~$ cat /proc/4398/status Name: kworker/0:0    //进度名 Umask: 0000 State: I (idle)   //进度的状态 //R (running)", "S (sleeping)", "D (disk sleep)", "T (stopped)", "T(tracing stop)", "Z (zombie)", or "X (dead)" Tgid: 4398 //线程组的ID,一个线程一定属于一个线程组(进度组). Ngid: 0 Pid: 4398 //进度的ID,更准确的说应该是线程的ID. PPid: 2  //现时进度的父进度 TracerPid: 0 //追踪现时进度的进度ID,要是是0,示意莫得追踪 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 64 //现时分派的文献姿色符,该值不是上限,要是掀开文献跳跃64个文献姿色符,将以64进行递加 Groups: //启动这个进度的用户所在的组 NStgid: 4398 NSpid: 4398 NSpgid: 0 NSsid: 0 Threads: 1 SigQ: 0/7640 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: ffffffffffffffff SigCgt: 0000000000000000 CapInh: 0000000000000000 CapPrm: 0000003fffffffff CapEff: 0000003fffffffff CapBnd: 0000003fffffffff CapAmb: 0000000000000000 NoNewPrivs: 0 Seccomp: 0 Speculation_Store_Bypass: vulnerable Cpus_allowed: 00000000,00000000,00000000,00000001 Cpus_allowed_list: 0 Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 5 nonvoluntary_ctxt_switches: 0 
回来:

详情内存使用情况是Linux运维工程师必要的手段,尤其是某个诳骗次第变得颠倒和占用系统内存时。当发生这种情况时,表示有多种器具不错匡助你进行故障摈斥十分浅显的。

 



栏目分类



Powered by 无码a片 @2013-2022 RSS地图 HTML地图