1. elastic otel profiling agent 代码分析

    OTel profiling agent 基于eBPF,实现了全系统跨语言的性能分析器。这个项目使用eBPF,可以抓取到详细的用户态调用栈。具有几个令人惊讶的优点: 几乎可以支持任何语言开发的目前程序,目前支持C/C++、Go等编译性语言,也支持Java、Python、Perl等解释性语言; 安全性高,实现方式不需要在目标程序能hook嵌入代码; 性能高,性能开销小于1%; 调用栈的unwind能力也很强,没有frame pointer和debug信息的情况,使用eh_frame辅助获取完整栈信息。 目前,项目迁移到这里 (贡献给opentelemetry了)。 本文简单分析下,它是如何做到的。

    2024/08/12 eBPF

  2. eBPF 1分钟介绍&发展历史

    eBPF的出现有其技术发展上的必然性。虚拟化的发展,特别是网络虚拟化的发展,使得技术异常的复杂,定位解决问题变得非常困难。最开始设计eBPF的人,可能也没预料到有如此大的应用和影响。有个人为了解决自己公司的问题,发明了一种语言,后来又合入到了主线,这就是eBPF。

    2023/11/30 eBPF

  3. 一次勒索病毒中招记录

    在寻找一个可以将手绘流程图转变成draw.io或visio流程图的软件时,在一个经常上的blog网站的评论区里,看到一个类似的软件。下载后安装,紧接着发现中招。安装中想着不行就停掉,安装后发现常规手段停不掉,紧接着发现文件被加密。

    2023/09/24 病毒

  4. eBPF:hello world

    有许多用libbpf或者go-bpf写的eBPF例子,python等别的语言的也有很多。这些都不够直观,代码都经过了层层包装,不能很好的明白eBPF是怎么工作的。 本文用最原始最直接的方式展示eBPF是如何工作的 — 用eBPF字节码写一个“hello world”。

    2023/07/15 eBPF

  5. Go性能:与C比较

    这篇是”理解Golang”系列的第一篇,主要涉及Go在性能方面的一些特点。接下来的几篇涉及scheduler、routine、chan的具体实现。

    2022/08/06 Go

  6. 云市场 - Google/Aliyun/AWS market

    AWS marketplace

    2016/02/26 idea

  7. Gas

    汇编学习 - GAS hello world layout: post title: 汇编学习 - GAS hello world categories: 汇编 description: 汇编学习 - GAS hello world keywords: 汇编 —

    2015/09/24

  8. 简单分析initramfs

    initramfs 是linux 启动必须的吗?如果kernel有mount root fs所需的所有驱动,initramfs就不是必须的。读取磁盘数据, kernel需要驱动的帮助,然而物理磁盘各式各样,驱动各不相同,kernel不太可能都包括进来。initramfs是包含少量驱动模块和工具集的archive。 启动时,boot loader将initramfs加载到内存,kernel利用initramfs中的工具加载root fs必须的驱动,进而加载root fs并完成后续的启动过程。

    2015/07/29 initramfs

  9. 单链表逆转

    一道比较经典的算法题目:有一单链表将其逆转。刚开始的时候想的磕磕绊绊,静下心来2分钟码定。汗。

    2015/07/21

  10. 求数组中满足给定和的数对

    求数组中满足给定和的数对

    2015/07/19 算法