网站开发网校,湖北免费相亲网站,西安竞价推广托管,福州模板建站代理文章目录 1. CPU相关介绍1.1 物理CPU1.2 物理CPU内核1.3 逻辑CPU1.4 几核几线程1.5 CPU设计图 2. top 查看系统负载、CPU使用情况2.1 系统整体的统计信息2.2 进程信息2.3 top命令使用 3. lscpu 显示有关 CPU 架构的信息4. free 查看内存信息5. iostat 查看io信息 1. CPU相关介绍… 文章目录 1. CPU相关介绍1.1 物理CPU1.2 物理CPU内核1.3 逻辑CPU1.4 几核几线程1.5 CPU设计图 2. top 查看系统负载、CPU使用情况2.1 系统整体的统计信息2.2 进程信息2.3 top命令使用 3. lscpu 显示有关 CPU 架构的信息4. free 查看内存信息5. iostat 查看io信息 1. CPU相关介绍
1.1 物理CPU 物理cpu就是计算机上实际安装的cpu物理cpu数就是主板上实际插入的CPU数量。 在Linux上查看/proc/cpuinfo其中的physical id就是每个物理cpu的id有几个不同的physical id就有几个物理cpu。 # 查看物理CPU个数
grep physical id /proc/cpuinfo | uniq | wc -l1.2 物理CPU内核 每颗物理CPU可以有1个或者多个物理内核通常每颗物理CPU的内核数都是固定的 单核CPU就是有1个物理内核双核CPU就是有2个物理内核。 在Linux上查看/proc/cpuinfo其中的core id就是每颗物理CPU的物理内核id有几个不同的core id就有几个物理内核。 总的CPU物理内核数 物理CPU数 * 每颗物理CPU的内核数。 # 查看每个物理CPU核心数
grep core id /proc/cpuinfo | uniq | wc -l
# 或
cat /proc/cpuinfo | grep cpu cores | uniq1.3 逻辑CPU 操作系统可以使用逻辑CPU来模拟真实CPU。在没有多核处理器时一个物理CPU只能有一个物理内核。 现在有了多核技术一个物理CPU可以有多个物理内核可以把一个CPU当做多个CPU使用也就是所谓的逻辑CPU。 没有开启超线程的时逻辑CPU的个数就是总的CPU物理内核数。 开启超线程后逻辑CPU的个数就是总的CPU物理内核数的两倍。 在Linux查看/proc/cpuinfo/其中的processor就是逻辑CPU,有几个processor就有几个逻辑CPU。 总的逻辑CPU数 总的物理CPU内核数 * 超线程数。 超线程(hyper-threading)其实就是同时多线程(simultaneous multi-theading), 是一项允许一个CPU执行多个控制流的技术 一核当两核使用 # 查看总的逻辑CPU的个数
grep processor /proc/cpuinfo | wc -l# 查看单个物理CPU中逻辑CPU的个数
cat /proc/cpuinfo | grep siblings | uniq# 查看单个物理CPU中核数和逻辑CPU的个数
cat /proc/cpuinfo | grep -e cpu cores -e siblings | sort | uniq# 逻辑CPU数量和型号
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c1.4 几核几线程 如果计算机有一个物理CPU且是双核的支持超线程那么这台计算机就是双核四线程。实际上几核几线程中的线程数就是逻辑CPU数。 对于两路四核超线程计算机两路指计算机有2个物理CPU每颗CPU中有4个物理内核CPU支持超线程 就有2 * 4 * 2 16个逻辑CPU这就是通常所谓的16核计算机。 1.5 CPU设计图 2. top 查看系统负载、CPU使用情况
top第一部分是前5行是系统整体的统计信息 第二部分是第8行开始的进程信息我们从上往下逐行依次进行说明。 2.1 系统整体的统计信息
top - 09:50:21 up 1 day, 18:36, 1 user, load average: 0.05, 0.12, 0.13
Tasks: 180 total, 1 running, 179 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 2.4 sy, 0.0 ni, 97.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 995676 total, 72108 free, 746344 used, 177224 buff/cache
KiB Swap: 2097148 total, 379132 free, 1718016 used. 87544 avail Mem第一行 top - 09:50:21 up 1 day, 18:36, 1 user, load average: 0.05, 0.12, 0.13 top当前时间 up机器运行了多长时间 users当前登录用户数 load average系统负载即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。 这里具体需要关注的还是load average三个数值。先来说说定义吧在一段时间内CPU正在处理以及等待CPU处理的进程数之和。三个数字分别代表了1分钟5分钟15分钟的统计值这个数值的确能反应服务器的负载情况。但是这个数值高了也并不能直接代表这台机器的性能有问题可能是因为正在进行CPU密集型的计算也有可能是因为I/O问题导致运行队列堵了。所以当我们看到这个数值飙升的时候还得具体问题具体分析。大家都知道一个CPU在一个时间片里面只能运行一个进程CPU核数的多少直接影响到这台机器在同时间能运行的进程数。所以一般来说Load Average的数值别超过这台机器的总核数就基本没啥问题。 第二行 Tasks: 180 total, 1 running, 179 sleeping, 0 stopped, 0 zombie Tasks当前有多少进程 running正在运行的进程数, 这里running越多服务器自然压力就越大。 sleeping正在休眠的进程数 stopped停止的进程数 zombie僵尸进程数 第三行 %Cpu(s): 0.3 us, 2.4 sy, 0.0 ni, 97.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st us用户空间占CPU的百分比像shell程序、各种语言的编译器、各种应用、web服务器和各种桌面应用都算是运行在用户地址空间的进程这些程序如果不是处于idle状态那么绝大多数的CPU时间都是运行在用户态 sy 内核空间占CPU的百分比所有进程要使用的系统资源都是由Linux内核处理的对于操作系统的设计来说消耗在内核态的时间应该是越少越好在实践中有一类典型的情况会使sy变大那就是大量的IO操作因此在调查IO相关的问题时需要着重关注它 ni用户进程空间改变过优先级ni是nice的缩写可以通过nice值调整进程用户态的优先级这里显示的ni表示调整过nice值的进程消耗掉的CPU时间如果系统中没有进程被调整过nice值那么ni就显示为0 id 空闲CPU占用率 wa 等待输入输出的CPU时间百分比和CPU的处理速度相比磁盘IO操作是非常慢的有很多这样的操作比如CPU在启动一个磁盘读写操作后需要等待磁盘读写操作的结果。在磁盘读写操作完成前CPU只能处于空闲状态。Linux系统在计算系统平均负载时会把CPU等待IO操作的时间也计算进去所以在我们看到系统平均负载过高时可以通过wa来判断系统的性能瓶颈是不是过多的IO操作造成的 hi 硬中断占用百分比硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息当CPU收到中断消息后需要进行适当的处理(消耗CPU时间)。 si软中断占用百分比软中断是由程序发出的中断最终也会执行相应的处理程序消耗CPU时间 ststeal time 第四行 KiB Mem : 995676 total, 72108 free, 746344 used, 177224 buff/cache total物理内存总量 free空闲内存量 used使用的内存量 buffer/cache用作内核缓存的内存量 第五行 KiB Swap: 2097148 total, 379132 free, 1718016 used. 87544 avail Mem total交换区内存总量 free空闲交换区总量 used使用的交换区总量 buffer/cache缓冲的交换区总量 第四第五行分别是内存信息和swap信息所有程序的运行都是在内存中进行的所以内存的性能对与服务器来说非常重要。不过当内存的free变少的时候其实我们并不需要太紧张。真正需要看的是Swap中的used信息。Swap分区是由硬盘提供的交换区当物理内存不够用的时候操作系统才会把暂时不用的数据放到Swap中。所以当这个数值变高的时候说明内存是真的不够用了。 2.2 进程信息 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND21712 root 20 0 720752 2628 596 S 0.7 0.3 1:19.50 containerd-shim21735 polkitd 20 0 1314948 37304 140 S 0.7 3.7 4:38.99 mysqld21410 root 20 0 720496 2524 656 S 0.3 0.3 1:18.03 containerd-shim21432 polkitd 20 0 1376352 14576 0 S 0.3 1.5 4:44.28 mysqld21597 polkitd 20 0 1314948 5156 0 S 0.3 0.5 4:39.84 mysqld42336 root 20 0 162108 2364 1572 R 0.3 0.2 0:00.77 top1 root 20 0 194096 4680 2624 S 0.0 0.5 0:19.29 systemd2 root 20 0 0 0 0 S 0.0 0.0 0:00.09 kthreadd4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0HPID 进程id USER 进程所有者的用户名 PR 优先级 NI nice值负值表示高优先级正值表示低优先级 VIRT 进程使用的虚拟内存总量单位kb。VIRTSWAPRES RES 进程使用的、未被换出的物理内存大小单位kb。RESCODEDATA SHR 共享内存大小单位kb S 进程状态。D不可中断的睡眠状态 R运行 S睡眠 T跟踪/停止 Z僵尸进程 %CPU 上次更新到现在的CPU时间占用百分比 %MEM 进程使用的物理内存百分比 TIME 进程使用的CPU时间总计单位1/100秒 COMMAND 命令名/命令行 默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME、COMMAND 列还有一些参数例如 PPID 父进程id GROUP 进程所有者的组名 SWAP: 进程使用的虚拟内存中被换出的大小 CODE 可执行代码占用的物理内存大小单位kb DATA 可执行代码以外的部分(数据段栈)占用的物理内存大小单位kb nFLT 页面错误次数 nDRT 最后一次写入到现在被修改过的页面数。 WCHAN 若该进程在睡眠则显示睡眠中的系统函数名 Flags 任务标志 2.3 top命令使用 top命令常用的选项参数 选项功能-d指定每两次屏幕信息刷新之间的时间间隔如希望每秒刷新一次则使用top -d 1-p通过指定PID来仅仅监控某个进程的状态-S指定累计模式-s使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险-i使top不显示任何闲置或者僵死的进程-c显示整个命令行而不只是显示命令名 top 每隔3秒显式所有进程的资源占用情况 top -d 1 每隔1秒显式所有进程的资源占用情况 top -c 每隔3秒显式进程的资源占用情况并显示进程的命令行参数(默认只有进程名) top -p 28820 -p 38830 每隔3秒显示pid是28820和pid是38830的两个进程的资源占用情况 top -d 2 -c -p 69358 每隔2秒显示pid是69358的进程的资源使用情况并显式该进程启动的命令行参数 敲top后按键盘数字“1”可以监控每个逻辑CPU的状况 敲top后输入u然后输入用户名则可以查看相应的用户进程 敲top后top命令默认以K为单位显示内存大小我们可以通过大写字母E来切换内存信息区域的显示单位如下按一下E切换到MB 3. lscpu 显示有关 CPU 架构的信息 参数说明Architecture#架构CPU op-mode(s)#支持的模式Byte Order#字节排序的模式常用小端模式CPU(s)#逻辑cpu颗数On-line CPU(s) list#在线的cpu数量 有故障或者过热时某些CPU会停止运行而掉线Thread(s) per core#每个核心线程Core(s) per socket#每个cpu插槽核数/每颗物理cpu核数CPU socket(s)#cpu插槽数即物理cpu的数量NUMA node(s)#有几个NUMA节点Vendor ID#cpu厂商IDCPU family#厂商设定的CPU家族编号Model#型号Model name#型号名称Stepping#步进,可以理解为同一型号cpu的版本号CPU MHz#cpu主频BogoMIPS#估算MIPS, MIPS是每秒百万条指令Hypervisor vendor#虚拟化技术的提供商Virtualization type#cpu支持的虚拟化技术的类型L1d cache#一级高速缓存 dcache 用来存储数据L1i cache#一级高速缓存 icache 用来存储指令L2 cache#二级缓存L3 cache#三级缓存NUMA node0 CPU(s)0-3 //四个cpu在同一个numa节点node0上Flagscpu支持的技术特征
4. free 查看内存信息
# 查看内存信息
cat /proc/meminfo显示系统使用和空闲的内存情况包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略。 # 查看内存信息
free -m参数解释 参数解释taotal总计物理swap内存的大小used已使用物理内存swap的大小free可用的物理内存swap大小shared多个进程共享的内存总额buff/cache磁盘的缓存大小available可以被新应用程序使用的内存大小 常用命令参数 参数说明-b以Byte为单位显示内存使用情况-k以KB为单位显示内存使用情况-m以MB为单位显示内存使用情况-g以GB为单位显示内存使用情况-h以有好的方式显示内存的使用情况-o不显示缓冲区调节列-s间隔秒数持续观察内存使用状况-t显示内存总和列-V显示版本信息 在进行资源监控时我们可以使用如下命令查看剩余内存大小 # 查看剩余内存大小
free -m |awk /Mem/{print $4}5. iostat 查看io信息 iostat 主要用于输出磁盘IO 和 CPU的统计信息。 iostat属于sysstat软件包。可以用yum install sysstat 直接安装。 命令参数 参数说明-c显示CPU使用情况-d显示磁盘使用情况-N显示磁盘阵列(LVM) 信息-n显示NFS 使用情况-k以 KB 为单位显示-m以 M 为单位显示-t报告每秒向终端读取和写入的字符数和CPU的信息-V显示版本信息-x显示详细信息-p[磁盘] 显示磁盘和分区的情况 cpu属性值说明 %userCPU处在用户模式下的时间百分比。 %niceCPU处在带NICE值的用户模式下的时间百分比。 %systemCPU处在系统模式下的时间百分比。 %iowaitCPU等待输入输出完成时间的百分比。 %steal管理程序维护另一个虚拟处理器时虚拟CPU的无意识等待时间百分比。 %idleCPU空闲时间百分比。 备注如果%iowait的值过高表示硬盘存在I/O瓶颈%idle值高表示CPU较空闲如果%idle值高但系统响应慢时有可能是CPU等待分配内存此时应加大内存容量。%idle值如果持续低于10那么系统的CPU处理能力相对较低表明系统中最需要解决的资源是CPU。 device:磁盘名称 tps:每秒钟发送到的I/O请求数. Blk_read/s:每秒读取的block数. Blk_wrtn/s:每秒写入的block数. Blk_read:读入的block总数. Blk_wrtn:写入的block总数.