Linux性能系统学习之监控工具

news2024/11/29 8:39:16

目录

  • 前言
  • linux性能度量标准
  • 监控工具
    • top
    • uptime
    • ps/pstree
    • free
    • mpstat
    • vmstat

前言

在实际产品开发过程中遇到一些莫名其妙的问题,比如swap交换分区随着时间增多影响到系统调用,或CPU占用以及内存的监测等,所以有必要系统了解Linux的性能问题。


linux性能度量标准

  • 处理器度量标准

    • CPU使用率
    • 用户进程消耗CPU的时间
    • 内核操作消耗CPU的时间
    • 等待
    • CPU空闲时间
    • Nice消耗CPU时间
    • 平均负载
    • 可运行的进程
    • 阻塞的进程
    • 上下文切换
    • 中断
  • 内存度量标准

    • 空闲内存
    • 使用的swap
    • 缓冲和缓存
    • Slab
    • **活跃与非活跃内存 **。
  • 块设备度量标准

    • I/O等待
    • 平均队列长度
    • 平均等待时间
    • 每秒传输
    • 每秒读取/写入块的数量
    • 每秒读取/写入的字节
  • 网络接口度量标准

    • 收和发送的数据包
    • 接收和发送的字节。 这个指标描述了一个给定网络接口接收和发送的字节数。
    • 每秒钟的冲突数量 。 这个值给出了在网络上连接的每个接口发出冲突的相对数量。如果发生持续冲突通常要关注网络基础设施的问题,而不是服务器。
    • 丢弃的数据包 。已经被内核丢弃的数据包的统计数。丢弃的原因可能是由于防火漆配置,也可能是由于缺乏网络缓冲区。
    • 溢出
    • 错误

监控工具

工具最有用的工具功能
top提供运行系统的动态实时试图
uptime显示系统平均负载
ps/pstree提供当前进程列表
free显示系统中空闲内存和已使用内存的数量
mpstat报告处理器相关的统计数据
vmstat报告进程、内存、磁盘、系统、cpu的统计信息
iostat报告cpu统计数据,还有设备和分区的输入、输出统计数据
netstat,ss显示相关网络统计信息
sar收集报告系统活动信息
numastat显示每个NUMA节点的内存统计信息
pmap报告一个进程的内存映射
iptraf交互式局域网监控程序
tcpdump/wireshark用来捕捉和分析网络流量
straceltrace系统调用和库调用跟踪程序
gnuplot命令行绘图工具
Gnome System MonitorGnome桌面环境的图形性能分析工具
KDE System GuardKDE任务管理器和性能监控器

top

  • 系统摘要信息
    top - 15:34:43 up 21:09, 2 users, load average: 1.22, 1.24, 1.37
  • 任务和CPU状态
    • Tasks: 235 total/*总共任务数量*/, 1 running/*正在运行的任务数*/, 234 sleeping/*睡眠*/, 0 stopped/*中止*/, 0 zombie/*僵尸状态数*/
    • %Cpu(s): 8.5 us(c.1), 13.1 sy(c.2), 0.0 ni(c.3), 64.9 id(c.4), 0.0 wa(c.5), 12.7 hi(c.6), 0.8 si(c.7), 0.0 st(c.8)
      c.1:运行非nice的用户进程时间
      c.2:运行内核进程的时间
      c.3:运行nice的用户进程时间
      c.4:空闲花费的时间
      c.5:IO等待花费的时间
      c.6:服务硬件中断花费的时间
      c.7:服务软件中断花费的时间
      c.8:通过pypervisor虚拟机偷走的时间
  • 内存使用情况
    • KiB Mem : 4059384 total, 135604 free, 1840076 used, 2083704 buff/cache
    • KiB Swap: 2029680 total, 1789196 free, 240484 used. 2001496 avail Mem
  • 内核管理的任务列表
    • PIDd.1 USER``d.2 PRd.3NId.4VIRTd.5RESd.6SHRd.7 Sd.8 %CPUd.9 %MEMd.10 TIME+d.11COMMANDd.12
      d.1:进程标识符
      d.2:任务拥有者(或启用者)的有效用户名
      d.3:任务的优先级
      d.4:任务的nice值。正数nice值意味着较高的优先级
      d.5:任务使用的虚拟内存的总量,包括所有代码,数据,共享库交换出的分页
      d.6:常驻内存的大小。任务所使用的非交换的物理内存。rescode+data
      d.7:任务所使用的共享内存量。它只反映了可与其他进程共享的内存。
      d.8:进程状态。D:不可中断的睡眠R:正在运行 S:睡眠 T:跟踪或停止 Z: 僵尸
      d.9:CPU总时间的百分比
      d.10:任务当前使用的可用物理内存
      d.11:自系统启动开始任务所使用的总共CPU时间
      d.12:显示用于启动任务的命令行或相关程序的名称
  • 热键 详细按h查看

uptime

16:23:33a. up 21:58b., 2 usersc., load average: 0.29, 1.00, 1.23d.
a.: 系统时间 b.:cpu时间 c.:当前用户登录数 d.:服务器在过去1分钟,5分钟和15分钟的系统平均负载

  • 系统平均负载是可运行状态进程或不可中断状态进程的平均数。处在可运行状态的进程要么是正在使用CPU,要么是等待使用CPU。处在不可中断状态的进程正在等待一些I/O访问,例如等待磁盘。平均值有3个时间间隔。因为系统中CPU的数量、平均负载不是规范化的,所以,平均负载为1意味着一个单CPU系统始终是有负载的,在一个4核CPU系统上则意味着它有75%的空闲时间。

  • 平均负载最佳值为1,这意味着每个进程都能立刻访问CPU,并且没有丢失CPU周期。对于单(核)处理器工作站,1或2是可以接受的,而在多处理器服务器上你可能会看到8到10的数字(单核CPU负载是2,4核CPU负载可能是8)。

  • 可以使用uptime确定问题出在服务器还是网络。例如,如果一个网络应用程序运行很糟糕,则可以运行uptime,查看系统负载是否很高。如果没有,则这个问题很可能关系到你的网络,而不是你的服务器。

ps/pstree

  • 查看进程号的几种方式
ps -ef |grep P1 |grep -v color |awk '{print $2}' 
ps -C P1 -o pid=
pgrep  P1
  • pstree
    • 可能使用的最多的是确认多进程和当前进程有多少线程吧。pstree -p
      一个main函数中增加2个线程确认如下,main作为一个进程也是一个线程,增加复杂线程或内存使用多样化的线程中可以增加线程名,后续方便排查问题。
      在这里插入图片描述

free

基本的用法不在此展开,只做一些自己开发过程中的需求记录。

  • 在使用过程中需要申请大块内存,可能导致OOM问题,所以在申请过程中按照剩余内存的.9系数申请 ,
    代码获取剩余内存方式:
    • 使用popen方式获取系统调用返回值,然后解析返回的剩余内存
    • 读取虚拟/proc/meminfo获取剩余内存

mpstat

因为开发板没有该命令,因此再次不做更新记录

vmstat

vmstat用来报告关于进程,内存,分页,块io,中断,cpu活动的信息。
vmstat命令显示平均数据或实际样本。通过vmstat命令提供一个采样频率和采样次数可启用采样模式。

  • vmstat -n {n为采样频率}

第一行产生的报告是自上次重启之后的平均值,因此应该考虑排除它。可以使用delay给出采样周期的长度报告更多的信息。进程和内存的报告是瞬时的。
运行结果

  • Procs

    • r, 可运行进程的数量(正在运行或等待运行时间。)
    • b, 不可中断睡眠状态进程的数量。
  • memory

    • swpd,虚拟内存使用的数量。
    • free,用作空闲内存的数量。
    • buff,用作缓冲区的内存数量。
    • cache,用作缓存的内存数量。
    • nact,非活跃内存的数量(使用-a选项)。
    • active,活跃内存的数量(使用-a选项)。
  • swap

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1286271.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CUDA简介——For循环并行化

1. 引言 前序博客: CUDA简介——基本概念CUDA简介——编程模式 kernel相关语法定义为: kernel函数定义,与常规C函数定义类似。不同之处在于,有__global__关键字。 为说明符,告诉编译器该函数应编译运行在device上&a…

极客大挑战2023 Reverse wp

文章目录 [toc] shiftjmp点击就送的逆向题幸运数字flower-or-tea小黄鸭mySelfeasymath听说cpp很难?砍树浪漫至死不渝是男人就来扎针ezandroid shiftjmp 64bit的ELF文件,IDA打开 考察花指令去除、将E9 nop掉 EXP: enc [ 0x53, 0x58, 0x41, 0…

面向注解编程—Spring 注解看这一篇就够了(2)

面向注解编程—Spring注解大全(AOP篇) AOP英文全称:Aspect Oriented Programming(面向切面编程、面向方面编程),其实说白 了,面向切面编程就是面向特定方法编程。 AOP的作用:在程序…

【好书推荐】Flutter入门经典

目录 作者简介内容简介文章详解介绍《Flutter入门经典》读者对象《Flutter入门经典》内容要点《Flutter入门经典》内容结构第I部分:Flutter编程基础第II部分:充当媒介的Flutter:具象化一个应用第III部分:创建可用于生产环境的应用…

广州数字孪生赋能工业制造,加速推进制造业数字化转型

广州数字孪生赋能工业制造,加速推进制造业数字化转型。数字孪生系统基于历史数据、实时数据,采用人工智能、大数据分析等新一代信息技术对物理实体的组成、特征、功能和性能进行数字化定义和建模。通过构建在信息世界对物理实体的等价映射,对…

Geodesic in Heat: 一种测地线计算方法

在之前的博客中,我已经介绍过了使用Fast Marching算法计算测地线。Fast Marching的好处是实现简单,方便扩展在点云上。但是缺点是精度不够,求解不平滑。早在2013年,Crane et al. [1]就已经提出利用热流来估算测地距离。我很早就知…

深入理解Java核心技术:Java工程师的实用干货笔记

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 在Java工程师的职业生涯中,深入理解…

使用C语言创建高性能网络爬虫IP池

目录 一、引言 二、IP池的设计 1、需求分析 2、架构设计 3、关键技术 三、IP池的实现 1、存储实现 2、调度实现 3、通信实现 4、异常处理实现 四、代码示例 五、性能优化 六、测试与分析 七、结论 一、引言 随着互联网的快速发展,网络爬虫成为了获取…

日志JavaAgent-NoClassDefFoundError

一、引言 组内最近做了一个日志公共组件,用的是javaagent的方式,之前搞的maven jar包每次都要把所有系统都发一遍,太麻烦。 javaagent通过Java虚拟机(JVM)的Instrumentation API来实现代码的侵入。通过Instrumentation…

matlab diff和gradient

gradient 求解梯度。 示例 FX gradient(F) 返回向量 F 的一维数值梯度。输出 FX 对应于 ∂F/∂x,即 x(水平)方向上的差分。点之间的间距假定为 1。 使用方法: x -2:0.2:2; y x’; z x .* exp(-x.^2 - y.^2); [px,py] gradien…

K8S部署nginx并且使用NFS存储数据

安装NFS 在master安装NFS systemctl start nfs-server修改配置 /etc/exports /data *(rw,no_root_squash,no_all_squash,sync)目录为 /data 允许所有地址访问 验证下 [rootmaster nginx]# showmount -e 192.168.57.61 Export list for 192.168.57.61: /data *共享可以正常…

1.uniapp基础

1.uniapp基础 官方文档:uni-app官网 1.1开发工具 (1)工具: HBuilderX HBuilderX-高效极客技巧 1.2 新建项目 (1) 文件》新建项目 ​ (2)选择相应的配置信息,填写项目根路…

python超详细基础文件操作【建议收藏】

文章目录 前言1 文件操作1.1 文件打开与关闭1.1.1 打开文件1.1.2 关闭文件 1.2 访问模式及说明 2 文件读写2.1 写数据(write)2.2 读数据(read)2.3 读数据(readlines)2.3 读数据(readline&#x…

数据结构 / 队列 / 循环队列 / 概念

1. 定义 为充分利用向量空间,克服假溢出现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。循环队列是把顺序队列首尾相连,把存储…

正式发布! 加速科技ST2500A飙速赶来!

在新场景、新应用海量增长的驱动下,芯片测试需求也在日益多元化和快速扩展。加速科技始终致力于以客户的实际需求为导向,基于领先的半导体测试技术为千行百业提供全场景的测试解决方案,推出新一代ST2500A数模混合信号测试机。 ST2500A是基于…

(六)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)

一、无人机模型简介: 单个无人机三维路径规划问题及其建模_IT猿手的博客-CSDN博客 参考文献: [1]胡观凯,钟建华,李永正,黎万洪.基于IPSO-GA算法的无人机三维路径规划[J].现代电子技术,2023,46(07):115-120 二、Tiki-taka算法(TTA&#xf…

Linux-Linux安装JDK及配置环境 及 遇到的问题

下载linux环境对应的JDK的tar.gz包 配置JDK环境:编辑 sudo vim /etc/profile 在文件的最下方,填写 export JAVA_HOME/usr/local/src/software/jdk1.8 export CLASSPATH.:$JAVA_HOME/lib/tools.jar export PATH$JAVA_HOME/bin:$PATH 执行生效命令&…

UVM实现component之间transaction级别的通信

my_model是从i_agt中得到my_transaction,并把 my_transaction传递给my_scoreboard。在UVM中,通常使用TLM(Transaction Level Modeling)实现component之间transaction级别 的通信。 在UVM的transaction级别的通信 中,数…

Git介绍与安装使用

目录 1.Git初识 1.1提出问题 1.2如何解决--版本控制器 1.3注意事项 2.Git安装 2.1Linux-centos安装 2.2Linux-ubuntu安装 2.3Windows安装 3.Git基本操作 3.1创建Git本地仓库 3.2配置Git 4.认识⼯作区、暂存区、版本库 1.Git初识 1.1提出问题 不知道你工作或学习时…

Spring AOP解析

基本概念 之前写过如何实现方法增强,见链接:一篇文章了解如何实现方法增强,实现原理即采用的是AOP,那么本篇文章就主要是为了了解Spring AOP的实现。 面向切面编程(Aspect Oriented Programming) 在软件…