Python测开28期-zhuozhuo-学习笔记-Linux性能与统计命令-L2

为什么学习性能统计?

两个主要场景:

  1. 性能测试 - 了解应用程序的资源占用和行为特征,查找性能瓶颈。
  2. 日常性能分析 - 包括手机应用性能、服务器负载、浏览器性能等,了解和监控运行状况。

性能统计的维度

  • 系统级别性能数据分析 - 查看整体系统状态如CPU负载、内存使用情况等。
  • 进程级别性能数据分析 - 关注特定进程的资源使用与性能表现。

性能统计指标

  • 核心指标:CPU和内存利用率。
  • 附属指标:网络连接、磁盘I/O、数据库慢查询等(它们会影响核心指标)。

常用命令和工具

  • 交互式命令top, vmstat, iostat, mpstat, free等。
  • 监控平台:Prometheus + Grafana,用于系统性分析和数据长期存储。

CPU性能统计

获取CPU基本信息

cat /proc/cpuinfo

系统级别和进程级别的CPU使用

使用top命令查看整体和个别进程的CPU使用情况。

进程级别的详细CPU统计

查看特定进程的CPU使用详细信息:

cat /proc/[pid]/stat

关键指标

  • CPU利用率
  • 系统负载

内存性能统计

使用top命令了解内存使用情况。

关键指标

  • 内存利用率
  • 进程内存使用

Linux 内存管理命令

主要命令

  1. free
    • 显示系统内存的总量、使用情况和可用空间。
    • 输出值一般按照 KB 单位。
    • 关键指标:
      • total: 整体内存大小。
      • used: 已使用的内存量。
      • free: 空闲的内存量。
      • shared: 共享内存的数量。
      • buffers/cached: 缓冲区和缓存使用的内存量。
      • available: 可被新进程使用的内存量(考虑了缓存和buffer的回收能力)。

内存相关指标解释

  • BuffersCached:
    • 存储临时数据,常用于磁盘读写操作,可以优化系统性能。
  • Available:
    • 是指系统可以立即回收的内存,对于启动新进程等操作十分关键。

/proc 文件系统

  • /proc/meminfo:
    • 提供详细的内存使用情况,内容比 free 命令更丰富。

Linux 性能和资源监控命令

  1. top

    • 实时显示系统进程的资源使用情况。
    • 包括 CPU 和内存的使用率,以及其他关键的性能指标。
    • 可以通过不同参数进行排序和筛选。
  2. ps

    • 列出当前系统的进程和其状态。
    • ps aux 可以查看详细信息,包括 CPU 和内存使用率。
    • 尽管 CPU 统计可能不够准确,内存统计是准确的。

进程内存相关指标

  • RSS (Resident Set Size)
    • 进程实际使用的物理内存量。
  • PSS (Proportional Set Size)
    • 将共享内存平均分配到各进程后的内存占用估计。
  • USS (Unique Set Size)
    • 进程独立使用的内存量。
  • VSS (Virtual Set Size)
    • 进程分配的总虚拟内存量,包括所有分配的内存(使用中、空闲、共享)。

监控和自动化

  • 在工作环境中,更高效的方法是建立监控平台。
  • 使用 agent 收集数据,并利用诸如 Prometheus 和 Grafana 这样的工具进行数据的可视化和警报。

Linux 排序和统计命令

sort 命令

sort 命令在 Linux 中是用于排序文本文件中的行的工具。使用不同的选项和参数可以控制排序的行为。

基本用法
  • sort:默认对内容进行升序排序。
  • sort -r:对内容进行降序排序。
常用参数
  • -b:忽略开头的空白字符
  • -f:将小写字母看做大写字母
  • -h:根据存储容量排序(KB、MB、GB)
  • -n:按数字排序
  • -o:把结果写入文件
  • -r:以相反的顺序来排序
  • -t:指定分隔符,默认为空格
  • -V:按照数字版本排序
  • -k:指定排序的关键字,与-t 参数配合使用
实例
  1. 忽略空白字符排序:
    sort -b fileName
    
  2. 按照数字大小排序:
    sort -n fileName
    
  3. 根据特定列排序:
    sort -t ',' -k 2 fileName
    
  4. 指定输出文件:
    sort fileName -o sortedFileName
    
  5. 逆序排序(例如数值的降序):
    sort -nr fileName
    
  6. 按版本号排序:
    sort -V fileName
    

uniq 命令

uniq 命令用于从输入中过滤掉重复的行。它通常与 sort 命令结合使用,因为 uniq 需要排序过的输入以便正确地检测重复。

基本用法

  • uniq:过滤连续的重复行。
  • -c:统计重复出现的次数
  • -d:所有邻近的重复行只被打印一次。重复次数要大于等于 2
  • -D:所有邻近的重复行将全部打印
  • -f:跳过对前 n 个列的比较
  • -s:跳过对前 n 个字符的比较
  • -w:只对每行前 n 个字符进行比较

wc 命令

wc (word count) 命令用于统计文本中的行数、单词数和字符数。

基本用法

  • wc fileName:显示文件中的行数、单词数和字符数。
  • wc -l fileName:仅显示行数。
  • wc -w fileName:仅显示单词数。
  • wc -c fileName:仅显示字符数。

进程(Process)

进程是 Linux 平台上一个可执行程序的运行实例。在操作系统中,进程是资源分配和调度的基本单位。当启动一个程序时,操作系统会为该程序创建一个进程,并分配必要的内存和其他资源,以执行程序指令。

线程(Thread)

线程是进程中的执行单元。它是进程的一个组成部分,可以被操作系统调度执行。一个进程中可以有多个线程,共享进程资源,但是有它们自己的执行路径和执行状态。

进程周期

image

  1. Created:进程被创建。
  2. Ready:进程准备好运行并等待 CPU 分配。
  3. Running:进程正在CPU上执行。
  4. Waiting:进程等待某些事件发生或正在请求服务。
  5. Terminated:进程已完成执行或被终止。

进程状态(Process States)

管理进程和线程的常用命令

ps:列出系统中的进程

  • ps -ef:显示当前所有进程。
  • ps aux:BSD 风格,列出详细进程信息。
  • ps -o pid,ppid,pcpu,pmem,cmd:自定义输出进程信息。

top:交互式监视进程及资源利用率

  • 实时显示系统中进程的资源占用状况。

kill:通过进程 ID 终止进程。

fg, bg:将作业放回前台或后台。

  • fg:操作系统中将后台进程调至前台。
  • bg:让被挂起的进程在后台继续运行。

Ctrl + Z:快捷键,用于挂起当前前台进程