Linux下过程状态详解

  1. top 、uptime 等命令展现出的 load average,并非 CPU load average,而是零碎整体负载,包含了对磁盘资源的申请

    然而通常状况下,load average / CPU core number > 1 暗示零碎可能是CPU BOUND

    计算公式: load average = TASK_RUNNING + TASK_UNINTERRUPTABLE

    Linux下过程状态的划分:

    • R:TASK_RUNNING
    • S:TASK_INTERRUPTABLE
    • D:TASK_UNINTERRUPTABLE:这个状态个别呈现在过程与外部设备替换,内核的一些解决流程是无奈被中断的,如果此时容许中断,原有流程被插入一段解决异步信号的流程,过程与外部设备交互过程被中断,那么外部设备可能陷入不可控的状态,因而,此时不响应异步信号(kill -9 无奈杀死)
    • Z:TASK_ZOMBIE

Linux /proc子系统文档

  1. 常见目录项

    • cmdline:命令行参数
    • cwd
    • exe
    • fd
    • maps
    • cgroup

top命令详解

  1. top命令常见参数

    • -c :输入残缺命令行
    • -H:显示每个线程而非过程的汇总 (通过pthread_setname_np)更敌对
    • -p pid:显示特定过程的信息
    • 交互命令:

      • m:切换显示内存的形式
      • t:切换显示CPU负载的形式
      • c:切换显示残缺命令行与否
      • M:按内存排序
      • P:按CPU排序
      • T:按运行工夫排序
  2. perf perf record 通过挂载到某个过程上生成 perf.data,perf report 读取perf.data 取得信息
  3. address-sanitizer:原理是 shadow poison,可能探测dangling pointer、buffer overflow、memory leak

    • [Use after free] (dangling pointer dereference)
    • [Heap buffer overflow]
    • [Stack buffer overflow]
    • [Global buffer overflow]
    • [Use after return]
    • [Use after scope]
    • [Initialization order bugs]
    • [Memory leaks]

iostat命令详解

  1. iostat 各列阐明:个别开启 -x 参数取得具体数据

    • rrqm/wrqm:向该设施申请次数
    • r/w:每秒读写次数
    • rkB/wkB:每秒读写数据量
    • avgrq_sz:每次IO操作的均匀扇区数
    • avgqu_sz:每次IO操作的期待队列长度
    • await:IO等待时间(ms)
    • svctm:IO解决工夫(ms)
    • util:IO队列非空的工夫比例

netstat命令详解

  1. netstat参数

    • -a:列出所有(不含listen)
    • -t/u : tcp/ udp
    • -n :优先数字
    • -l: 列出处于监听状态
    • -p:列出程序名
    • -s:依照协定划分
  2. 丢包场景划分
  • 缓冲区满:netstat RecvQ很大
  • 半连贯满:syn并发数量大,syn flooding。 调节net.ipv4.tcp_max_syn_backlog
  • 链路丢包、网卡丢包