原始:浸入日记(微信公共帐户ID:CODELOGS),欢迎分享,请保留来源。
Linux上有很多问题的诊断工具,例如Perf,BCC等,但是这些诊断工具虽然功能强大,但需要高度使用。
0x.tools工具提供了一个好主意。该问题是通过采样目录诊断出的,该目录几乎对测量程序没有性能影响,只要它具有与目标过程相同的权限水平,就可以正常使用。
不要低估这一权威。在Internet工厂中,发展学生通常只能获得容器限制的外壳环境。获得机器的根本权限几乎是不可能的。
实际上,0x中的大多数工具是脚本。例如,PSN工具是一个Python脚本,因此可以直接删除代码克隆然后执行它。
该工具用于观察当前活动线程在系统中所做的工作,例如系统调用,编写哪些文件以及哪个内核函数?
如上所述,默认情况下,对PSN采样目录中的每个线程的文件进行了5秒,并记录R(运行)或D(非中断休眠)状态的线程数据并汇总。
由于R和D状态中的线程是活动线程,因此采样越多,其显示这些线程的运行越慢或频率越高。
通过指定需要查看的列,Syscall表示正在执行线程的系统调用。FILENAMESUM表示文件正在读写。一般而言,当D状态运行时,该线程是在D状态下完成的。如果d状态线程经常出现,那么我们绝对必须知道哪个文件是线程读取和写入。
以同样的方式,通过WCHAN字段,您可以查看线程阻塞的内核方法,并且KSTACK字段可以在螺纹阻塞时查看内核调用堆栈。
实际上,PSN和PS命令用于通过traversing/pr直接目录获取线程信息,如下所示:
状态:从文件中获取。
syscall:从文件中取出。
WCHAN:从文件中取出。
kstack:从文件中取出。
诸如perf和bcc之类的工具之间的区别在于,读取这些文件仅需要与该过程相同的权限级别,并且不需要使用根帐户。
除PSN外,0x.tools中还有其他一些工具,例如Xcapture,Schedlat等,此处没有一个一个一个一个一个。如果您有兴趣,可以访问https://0x.tools/查看。
此外,由于PSN是通过目录实现的,因此我们还可以自己编写相同的功能,如下所示:
这样,我们可以在不安装0x.tools的情况下获得类似于PSN命令的功能!
Linux命令拾取引入
Linux命令拾取文本处理文章
Linux命令拾取软件资源观察
MySQL的时间是否存在于时区?
真正的理解可以重复交易隔离水平
字符编码
原始:https://juejin.cn/post/709489679845451790