Linux工具

程序构建

1.配置 -> 2.编译 -> 3.安装

  1. 配置做的工作主要是检查当前环境是否满足要安装软件的依赖关系,以及设置程序安装所需要的初始化信息,比如安装路径,需要安装哪些组件;配置完成,会生成makefile文件供第二步make使用;
  2. 编译是对源文件进行编译链接生成可执行程序;
  3. 安装做的工作就简单多了,就是将生成的可执行文件拷贝到配置时设置的初始路径下;
1
2
3
4
./configure --help
./configure --prefix=/usr/local/snmp
make -f myMakefile
make install

程序调试

gdb 程序交互调试


性能优化

系统

1
2
3
top
free
vmstat

进入交互模式后:
输入M,进程列表按内存使用大小降序排序,便于我们观察最大内存使用者使用有问题(检测内存泄漏问题);
输入P,进程列表按CPU使用大小降序排序,便于我们观察最耗CPU资源的使用者是否有问题;
top第三行显示当前系统的,其中有两个值很关键:
%id:空闲CPU时间百分比,如果这个值过低,表明系统CPU存在瓶颈;
%wa:等待I/O的CPU时间百分比,如果这个值过高,表明IO存在瓶颈;

程序

如果IO存在性能瓶颈,top工具中的%wa会偏高;
进一步分析使用iostat工具
如果%iowait的值过高,表示硬盘存在I/O瓶颈。
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;
如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。
如果avgqu-sz比较大,也表示有大量io在等待。

分析进程调用

  • pstack用来跟踪进程栈

    pstack [pid]

  • strace用来跟踪进程中的系统调用