当前位置: 首页 > Linux

ProgramCameraTraceProfiling十大热点问题

时间:2023-04-06 23:27:13 Linux

》Trace-Profiling利用eBPF技术,将程序代码执行过程转化为操作系统资源消耗过程,并融合tracing、logging、metrics等可观察性技术,形成一个类似programcamera的到光学相机。主要帮助开发者了解程序执行过程中每一毫秒都在做什么。”Q:TraceProfiling可以解决哪些场景?A:请参考:Kindling程序相机-Trace-Profiling功能正式发布Q:TraceProfiling捕获程序的执行allworkerthreadsunderarequest.这些线程是指在请求执行期间执行事件的线程?A:捕获了所有worker线程的执行情况。从eBPF的角度来说,无法分辨出哪些线程与请求相关request,所以我们有一个关键线程的概念,也就是执行请求的线程,显示所有线程的执行状态的目的是为了能够发现关键线程正在执行进程被挂起的原因是很可能是其他线程如JVM虚拟机线程执行GC操作引起的,我们目前还没有办法完全识别所有场景,究竟哪些线程执行行为会影响关键线程的执行过程。为了真实还原程序的执行状态,我们记录并显示所有工作线程的执行状态,然后依靠人工比较分析关键线程挂起时其他线程在干什么,从而确定是哪些线程导致关键线程被挂起。绞刑。Q:这么多工作线程,这个请求的关键线程是什么?判断的依据是什么?A:关键线程就是这个进程中处理这个请求的线程。判断的依据是结合skywalking等tracing系统,明确无误地判断处理请求的线程。Q:Kindlingagent如何捕获线程执行事件?以及如何在网络中具体划分事件?锁?富泰克斯?中央处理器?文件?轮询?其他的?A:通过判断多个开关,可以判断oncpu时间。offcpu类型是通过区分关键系统调用来判断的,比如writeread属于IO,然后根据fd的属性是network还是file来判断是networkIO还是fileIO。epoll是网络系统调用。Futex是一个比较难解释的系统调用,因为程序中使用futex的场合太多了,已经确定主要场景如下:线程空闲,线程进行锁操作,线程挂起,java的sleep操作方案实施。我们通过以下规则判断futex是什么意思:关键线程的trace开始时间之前的futex处于空闲状态。从JVM获取java虚拟机级锁的相关信息。这个信息说明关键线程的tracestart和traceend的futex时间在排除上面两种情况之后,关键线程tracestart和traceend之间的futex,在大多数情况下,我们认为是挂起时间其他线程的干扰造成的。在trace中业务代码的执行中,我们认为基本不会有开发和写睡眠操作。如果有write的话,目前的情况确实很难区分sleep的futex和线程干扰的suspend操作。Q:一个请求的IO/Trace开始和结束是从什么时候开始计算的?A:对于一个request进程,实际的执行过程是操作系统先完成数据准备,即IO启动。有执行线程可用后,该线程会将IOhttp数据转换为序列化对象,然后调用控件或Dubbo的服务接口启动trace,所以IO启动早于trace启动,但显示时,两者times可能很接近,所以基本重叠,但是如果threads不足,可以明显看出iostart早于tracestart。在业务代码层处理requesttrace的时候,也就是tracing系统发送trace的时候,trace端会被记录下来,然后通过系统调用写回request对应的response时,我们记录下来作为io结束。Q:为什么安装Kindlingagent要基于k8s环境?如果小公司没有安装k8s环境,不安装docker是否可以使用TraceProfiling?A:理论上可以使用非k8s环境,但是kindling的目标用户是云原生用户,非k8s用户不是我们的目标用户。主要有以下几点考虑。在非云原生环境中,操作系统版本不太可能支持eBPF。在非云原生环境中,不太可能遇到更复杂的问题。简单的问题可以通过使用跟踪、日志记录和度量工具来解决。问:为什么要在使用TraceProfiling之前安装Skywalking探针?它收集了哪些数据?它如何与Kindling代理一起使用?A:之所以叫Traceprofiling,是为了分析trace中span的实际执行情况,所以必须要和trace系统对接,获取trace的相关信息。因为我们目前只对接国内常用的skywalking,所以需要用户先安装skwwalking探针。天行探测器采集的数据按照原来的工作正常工作。我们没有修改skywalking探测器。对接原理就是我们需要traceprobe或者sdk来告知我们当前是哪个线程在执行这个请求,以及trace的开始时间和结束时间。Q:如何安装Kindling并开启TraceProfiling功能?A:安装教程项目开源地址参考官网地址Q:如何使用TraceProfiling?A:参考操作教程:Q:我有其他问题和想法,或者在使用中遇到问题,如何联系您?A:可以加小编微信关注我们公众号~