服务器(Linux)缓冲跟踪类型的系统调用分析

时间:2020-12-25 09:21:06   收藏:0   阅读:37
本文主要讲解缓冲跟踪型的系统调用分析,主要目的是为了探究和分析CPU在内核或与用户空间结合部分的系统调用细节,从中可以发现一些问题,用于性能或者其他问题研究。

首先是两个概念:

系统调用有很多,Linux操作系统可能就有几百个(具体没有统计)。

案例1:

我们以进程间通信相关的一个系统调用kill为例来检测系统中的具体情况。命令如下:

sudo dtrace -qn ‘syscall::kill:entry { printf("%Y: %s (PID %d) sent a SIG %d to PID %d\n",walltimestamp,execname,pid,arg1,arg0);}‘

执行结果如下,其中PID=1位init进程,它是所有其他用户进程的祖先进程,并且会监视其他进程。

我们来分析下第一行:init 进程发送了一个SIG信号 15 到PID -13929,其中SIG 15 是指SIGTERM 信号

技术分享图片

案例2:

我们可以利用dtrace命令对Postgres数据库进程进行系统调用分析。

命令:

sudo dtrace -n ‘syscall:::entry /execname == "postgres"/ { @[probefunc] = count(); }‘

执行结果如下,其中可以看到系统调用lseek/read_nocancel,调用比较多,其都是和文件操作相关,可以猜测此刻postgres数据库在做文件的处理比较多,如果要深入分析还需要再看当前postgresql管理系统的其它指标,比如系统正在执行的动作,SQL,任务等。

技术分享图片

技术分享图片

原文:https://blog.51cto.com/13734261/2571595

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!