top命令是Linux下常用的性能分析工具,可以实时显示系统中各个进程的资源使用情况,类似于Windows的任务管理器top-17:31:2256天,59分钟,1个用户,平均负载:0.00、0.00、0.00任务:总共103个,1个正在运行,102个正在睡眠,0个已停止,0个僵尸%Cpu(s):0.3us,0.3sy,0.0ni,99.2id,0.0wa,0.2hi,0.0si,0.0stMiBMem:总计3736.7,免费208.5,已使用189.4,3338.8buff/cacheMiB交换:总计0.0,免费0.0,已使用0.0。3278.0availMemPIDUSERPRCPUHRNIMEVIRT%RESS%TIME+COMMAND1root200185084116848900S0.00.339:14.19systemd2root200000S0.00.00:00.92kthreadd10root200000S0.00.02:42.08kthreadd0软2000I0.00.09:38.83rcu_sched12rootrt0000S0.00.00:15.42迁移/013根rt0000S0.00.00:00.75看门狗/014根2000000S0.00.00:00.00cpuhp/015根200000S0.00.00:00.00cpuhp/116根rt0000S0.00.00:03.25看门狗/117根rt0000S0.00.00:16.47迁移/118根200000S0.00.02:39.65ksoftirqd/1us:用户进程占用CPU百分比sy:系统CPU占用百分比ni:用户进程空间中优先级改变的进程占用CPU百分比id:CPU闲置率wa:CPU时间percentagehiwaitingforIO:硬件IRQ占用CPU百分比si:软件中断占用CPU百分比st:虚拟机占用百分比PR:进程优先级NI:nice值,值越小优先级越高,该值range-20~19VIRT:进程的虚拟内存大小,只要是进程申请过的内存,即使物理内存还没有真正分配,也会被统计RES:常驻内存的大小,即进程实际使用的物理内存的大小,不包括Swap和共享内存。SHR:共享内存的大小,比如与其他进程使用的共享内存、加载的动态链接库、程序代码段等。S:过程状态。D=不间断睡眠状态R=运行S=睡眠T=跟踪/停止Z=僵尸进程%MEM是进程使用的物理内存占系统总内存的百分比Systemloadaverage(平均负载)是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,即平均活跃进程数,与CPU占用率没有直接关系。所谓可运行进程是指正在使用CPU或等待CPU的进程。就是我们经常用ps命令看到的处于R状态(Running或Runnable)的进程。处于不可中断状态的进程是内核态关键进程中的进程,这些进程是不可中断的。比如最常见的就是等待硬件设备的I/O响应,也就是我们在ps命令中看到的。理想状态(UninterruptibleSleep,又称DiskSleep)进程平均负载等于CPU个数,依次为过去1分钟、5分钟、15分钟的平均负载,三个不同时间间隔的平均值,事实上,它为我们提供了分析系统负载趋势的数据源,让我们更全面、更立体地了解当前的负载状况。平均负载的含义就出来了。平均负载是指单位时间内处于运行和不可中断状态的进程数,它不仅包括正在使用CPU的进程,还包括等待CPU和等待I/O的进程。CPU使用率是单位时间内CPU繁忙度的统计,不一定与平均负载完全对应。例如:对于一个CPU密集型进程,大量使用CPU会导致平均负载增加,此时两者是一致的;对于I/O密集型进程,等待I/O也会导致平均负载增加,但CPU占用率不一定很高;大量等待CPU的进程也会导致平均负载增加,此时CPU占用率会比较高。分析工具stress是一款Linux系统压力测试工具。这里我们将其作为一个异常过程来模拟平均负载的增加。针对场景,sysstat包含常用的Linux性能工具,用于监控和分析系统性能。我们的案例将使用这个包的两个命令mpstat和pidstat。mpstat是一款常用的多核CPU性能分析工具,用于实时查看各个CPU的性能指标,以及所有CPU的平均指标。pidstat是一个常用的进程性能分析工具,用于实时查看进程的CPU、内存、I/O和上下文切换等性能指标。CPU上下文切换vmstat是一个常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析CPU上下文切换和中断的次数#每5秒输出一组数据[lighthouse@VM-4-5-centos~]$vmstat5procs----------内存-----------swap-------io-----system--------cpu-----rbswpdfreebuffcachesisobiboincsUSSYIDWAST10196804825643353000001510000000097120825643353008004196301000000019608883530880044318488229500cs(上下文切换)是每秒上下文切换的次数。in(interrupt)是每秒的中断次数。r(Running或Runnable)是就绪队列的长度,即正在运行并等待CPU的进程数。b(Blocked)是处于不可中断睡眠状态的进程数。pidstat是一个常用的进程性能分析工具,用于实时查看进程的CPU、内存、I/O、上下文切换等性能指标#每5秒输出1组数据$pidstat-w5Linux4.15.0(ubuntu)09/23/18_x86_64_(2个CPU)08:18:26UIDPIDcswch/snvcswch/sCommand08:18:31010.200.00systemd08:18:31085.400.00rcu_sched...cswch,意思是voluntarycontextswitcheverysecond(voluntarycontextswitches)的次数(voluntarycontextswitching是指由于进程无法获取所需资源而导致的上下文切换。例如,当系统资源如I/Oandmemoryareinsufficient,voluntarycontextswitcheswilloccur)nvcswch,表示每秒非自愿上下文切换(non-voluntarycontextswitches)的次数(non-voluntarycontextswitches是指由于进程被强制而发生的上下文切换由于时间片已过等原因被系统调度。例如,当大量进程争用CPU时,容易发生非自愿的上下文切换。)Zombieprocessfree检查内存使用情况,这与top输出中内存使用相关列的含义是一致的。可以使用man命令查看列含义[lighthouse@VM-4-5-centos~]$free-mtotalusedfreesharedbuff/cacheavailableMem:3736190207133383277Swap:000total是总内存尺寸;used是已用内存的大小,包括共享内存;free是未使用内存的大小;shared是共享内存的大小;buff/cache是cache和buffer的大小;available是新进程可用内存的大小(不仅包括未使用的内存,还包括可回收的缓存,所以一般会比未使用的内存大。但是并不是所有的缓存都可以回收,因为有些缓存可能正在使用)buff/cachebuffers/cached使用情况可以从proc文件系统查看ubuntu@VM-4-5-ubuntu:~$cat/proc/meminfoMemTotal:3875264kBMemFree:1799068kBMemAvailable:3363268kBBuffers:143444kBCached:1570216kB使用man查看free命令buffers的输出中buff/cache列的含义内核缓冲区使用的内存(Buffersin/proc/meminfolab)cache使用的内存而通过页面缓存(/proc/meminfo中的Cached和SReclaimable)buff/cachebuffers和cacheBuffers之和就是内核缓冲区使用的内存,对应/proc/meminfo中的Buffers值。Cache是??内核pagecache和Slab使用的内存。对应/proc/meminfo中Cached和SReclaimable的总和。/proc是Linux内核提供的特殊文件系统,是用户与内核交互的接口。例如,用户可以从/proc查询内核的运行状态和配置选项,查询进程的运行状态和统计数据。当然你也可以通过/proc修改内核的配置。proc文件系统也是许多性能工具的最终数据源。比如刚才我们看到的free就是通过读取/proc/meminfo来获取内存使用情况。回到/proc/meminfo,由于Buffers、Cached、SReclaimable三个指标不太好理解,我们还得继续查看proc文件系统,获取它们的详细定义。执行manproc,可以得到proc文件系统的详细说明文件。缓冲区%lu原始磁盘块的相对临时存储,不应变得非常大(20MB左右)。缓存%lu用于从磁盘读取的文件的内存缓存(页面缓存)。不包括SwapCached....SReclaimable%lu(自Linux2.6.19起)Slab的一部分,可能会被回收,例如缓存。SUnreclaim%lu(自Linux2.6.19起)Slab的一部分,在内存压力下无法回收。通过这个文件,我们可以看出:Buffers是对原始磁盘块的暂存,也就是用来缓存磁盘的数据,一般不会特别大(20MB左右)。通过这种方式,内核可以收集分散的写入并统一优化磁盘写入。例如,多个小写可以合并为一个大写等。Cached是从磁盘读取文件的pagecache,即用来缓存从文件读取的数据。这样,下次访问这些文件数据时,可以直接从内存中快速获取,而不必再次访问慢盘。SReclaimable是Slab的一部分。Slab由两部分组成,可回收部分用SReclaimable记录;不可回收的部分用SUnreclaim记录。filediskmount--挂载设备umount--卸载设备showmount--查看挂载设备信息df[-h]--查看挂载磁盘使用情况du--显示当前目录下所有文件或目录的磁盘使用情况fdiskw,who,whoamisuiptablesservice,chkconfigtype--显示指定命令的类型,判断给定的命令是内部命令还是外部命令*环境变量相关设置--显示环境变量printenv--查看全局环境变量echo${name}--输出单个环境变量值export{name}--将局部环境变量转换为全局环境变量unset{name}--删除环境变量--系统变量文件/etc/profile--bashshell的主启动文件,只要你登录linux系统,bash会执行这个文件里的命令--查看系统总句柄数cat/proc/sys/fs/file-nr--查看当前应用打开的文件句柄数ls-l/proc/
