gdb:调试神器,线上原则上禁用,太重,多用于开发调试或测试环境,危险系数:

strace:跟踪程序当前的系统调用,线上慎用,可能造成进程hang死,崩掉,或搞成僵尸,危险系数:

lstrace:跟踪程序当前的库调用,线上慎用,危险系数:

perf:不影响稳定性的情况下可以使用,危险系数:

valgrind/AddressSanitizer:内存泄露检测,线上慎用,会降低程序性能,asan &nb...

Continue reading >>

1 基本概念

1.1 虚拟内存空间管理示意图(重点理解)
1.2 虚拟内存(重点理解)
1.3 SWAP
1.4 页表(重点理解)
1.5 Translation Lookaside Buffer (TLB)与缺页中断(初学了解即可)
1.6 进程的内存结构
1.6.1 共享内存(重点理解)
1.6.2 程序段与lib(初学了解即可)
1.6.3 内存碎片(初学了解即可)
1.6.4 Slab内存(初学了解即可)
1....

Continue reading >>

1. 简介

Address Sanitizer(ASan)是一个快速的内存错误检测工具。它非常快,只拖慢程序两倍左右(比起Valgrind快多了)。它包括一个编译器instrumentation模块和一个提供malloc()/free()替代项的运行时库。

从gcc 4.8开始,AddressSanitizer成为gcc的一部分。当然,要获得更好的体验,最好使用4.9及以上版本,因为gcc 4.8的A...

Continue reading >>

线上有服务器每隔差不多15分钟io.util就会飙升一下,使用率>40%,RD反馈影响线上服务一直没找到原因。服务器操作系统为centos6.7版本,配置挺高,用iotop抓出飙升时执行的程序是jbd2。它是负责写脏页,机器上log-agent刷日志脏页比较多的话jbd2会来处理,影响应该不大,查看机器已经启动快4年没重启了,重启了一下机器,释放下脏页问题解决,彻底解决要更改磁盘的写入方式。...

Continue reading >>