首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

ebpf原理分析_HRTEM怎么分析

ebpf起源于bpf(Berkeley Packet Filter),bpf是一种网络过滤框架,为了向后兼容,现在也称为cbpf。  bpf和ebpf主要有以下不同。  bpf仅限于网络性能监控,ebpf已经扩展到内核追踪、性能监控和traffice control多个领域。向下,已经涵盖kprobe、tracepoinut、uprobe、profile和watchpoint等调试接口,向上又在接口设计和易用性上做了较大改进,目前主流使用工具为bcc和bpftrace。  同时,ebpf指令和寄存器的更接近于64位处理器,内核JIT编译的效率更高。数据通信方面,ebpf抛弃了bpf的socket通信机制,采用了map机制,更加丰富高效。  ebpf属于一种驻留在内核的虚拟机,本质是代码注入技术,通过注入控制逻辑实现用户的监控和调试目的,map机制用来实现用户和内核的数据交换和管理。本文主要通过简单bpftrace和bcc例子分析ebpf的prog注入流程和map机制。  prog注入流程:

02

spin_lock的变体

当处理器上当前进程A需要对共享变量a操作,所以在操作前通过spin_lock获取锁进入临界区,如上图标号1。当进程A进入临界区后,进程A所在的处理器发生了一个外部硬件中断,此时系统必须停下进程A的执行转向执行中断,如上图标号2。假设中断处理程序也需要操作共享变量a,所以在操作之前也许要调用spin_lock获取锁来操作变量a。当中断处理程序试图去获取变量a的时候,因为之前被中断的进程A已经获取了锁,于是将导致中断处理程序进入自旋状态。在中断处理程序中出现自旋是非常致命的,因为中断处理程序必须尽可能短的返回。同时被中断进程A因中断处理程序不能返回而无法恢复执行,也就不可能释放锁,所以将导致中断处理程序一直自旋下去,出现死锁。所以就引入了spin_lock的变体出现。

02

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券