共计 1239 个字符,预计需要花费 4 分钟才能阅读完成。
Linux 下过程状态详解
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 子系统文档
常见目录项
- cmdline:命令行参数
- cwd
- exe
- fd
- maps
- cgroup
top 命令详解
top 命令常见参数
- -c:输入残缺命令行
- -H:显示每个线程而非过程的汇总(通过 pthread_setname_np)更敌对
- -p pid:显示特定过程的信息
交互命令:
- m:切换显示内存的形式
- t:切换显示 CPU 负载的形式
- c:切换显示残缺命令行与否
- M:按内存排序
- P:按 CPU 排序
- T:按运行工夫排序
- perf perf record 通过挂载到某个过程上生成 perf.data,perf report 读取 perf.data 取得信息
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 命令详解
iostat 各列阐明:个别开启 -x 参数取得具体数据
- rrqm/wrqm:向该设施申请次数
- r/w:每秒读写次数
- rkB/wkB:每秒读写数据量
- avgrq_sz:每次 IO 操作的均匀扇区数
- avgqu_sz:每次 IO 操作的期待队列长度
- await:IO 等待时间 (ms)
- svctm:IO 解决工夫 (ms)
- util:IO 队列非空的工夫比例
netstat 命令详解
netstat 参数
- -a:列出所有(不含 listen)
- -t/u : tcp/ udp
- -n:优先数字
- -l:列出处于监听状态
- -p:列出程序名
- -s:依照协定划分
- 丢包场景划分
- 缓冲区满:netstat RecvQ 很大
- 半连贯满:syn 并发数量大,syn flooding。调节 net.ipv4.tcp_max_syn_backlog
- 链路丢包、网卡丢包
正文完