<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_63965537的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_63965537</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_63965537]]></copyright><item><title><![CDATA[用io_uring进行io测试]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/166994186</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/166994186</guid><author>qq_63965537</author><pubDate>Sun, 04 Oct 2026 15:57:32 +0800</pubDate><description><![CDATA[特性epollio_uring模型等待fd就绪，就绪后调用send/recv异步提交send/recv，内核完成后返回CQEsyscall开销每次收发都syscall，小包差可批量提交SQE，syscall更少内存拷贝用户→内核拷贝支持send_zc零拷贝适用场景大量长连接，连接数优先高吞吐、低sys开销，高性能IO。]]></description><category></category></item><item><title><![CDATA[做io测试（2）]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/166994175</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/166994175</guid><author>qq_63965537</author><pubDate>Fri, 02 Oct 2026 19:58:40 +0800</pubDate><description><![CDATA[send/recvsend/recv环境前提：Linux 内核 ≥ 5.10（io_uring推荐5.15+），gcc，-O2编译。]]></description><category></category></item><item><title><![CDATA[做io测试]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/166994162</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/166994162</guid><author>qq_63965537</author><pubDate>Fri, 02 Oct 2026 19:56:39 +0800</pubDate><description><![CDATA[send/recv 是 Linux socket 原生接口，适合做，区别于，这里给最简单的阻塞版本，再给性能测试思路。原理：服务端 recv，客户端 send，传输固定大小数据，统计耗时、带宽。]]></description><category></category></item><item><title><![CDATA[系统调用1]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/166994146</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/166994146</guid><author>qq_63965537</author><pubDate>Fri, 02 Oct 2026 19:53:56 +0800</pubDate><description><![CDATA[write系统调用，往标准输出打印字符串用strace。]]></description><category></category></item><item><title><![CDATA[bpftrace探测程序]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/166994071</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/166994071</guid><author>qq_63965537</author><pubDate>Fri, 02 Oct 2026 19:43:41 +0800</pubDate><description><![CDATA[前提：安装 bpftrace，内核开启 BPF 支持；需要 root 运行（sudo bpftrace xxx.bt） 语法：bpftrace 是类 awk 语言，]]></description><category></category></item><item><title><![CDATA[对主从复的理解]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/164373177</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/164373177</guid><author>qq_63965537</author><pubDate>Fri, 02 Oct 2026 17:55:32 +0800</pubDate><description><![CDATA[复制积压缓冲区是master上一个环形固定大小缓冲区。master执行写命令时，除了发给从库，同时把命令写入这个环形buffer。作用： 从节点网络短暂断连恢复后，不需要全量同步，只需要根据offset拉取缓冲区后续命令，做增量同步。环形，写满会覆盖旧数据。如果断线时间太长，offset对应数据已经被覆盖，只能走全量复制。参数；业务读多写少可以调小；写压力大要调大，避免频繁全量复制。]]></description><category></category></item><item><title><![CDATA[使用内存探测bpf]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/164403590</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/164403590</guid><author>qq_63965537</author><pubDate>Sat, 05 Sep 2026 21:03:49 +0800</pubDate><description><![CDATA[次数均衡、差值稳定：内存正常，无泄漏malloc持续涨、free停滞：存在业务内存泄漏，结合堆栈日志修代码单次大内存分配：批量数据加载逻辑，可优化内存复用、分批释放大量小内存频繁分配：可优化内存池，减少频繁alloc/free开销。]]></description><category></category></item><item><title><![CDATA[对io_uring的理解]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/164373059</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/164373059</guid><author>qq_63965537</author><pubDate>Sat, 05 Sep 2026 20:51:35 +0800</pubDate><description><![CDATA[普通模式每次提交SQE要传入用户缓冲区地址。内核执行IO时需要做页表映射校验。固定缓冲区：提前注册一批内存缓冲区给io_uring，内核预先完成映射。接收数据时内核直接从注册好的缓冲池里挑选一块存放数据。好处：减少IO过程中地址校验开销，提升接收性能，适合大量网络接收场景。]]></description><category></category></item><item><title><![CDATA[对rdma的理解（3）]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/164372959</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/164372959</guid><author>qq_63965537</author><pubDate>Sat, 05 Sep 2026 20:50:53 +0800</pubDate><description><![CDATA[RoCE跑在以太网，以太网本身是有损网络，交换机队列满直接丢包。RDMA RC虽然有重传，但硬件重传代价很高，频繁丢包延迟暴涨。PFC(Priority‑based Flow Control) 基于优先级流控： 交换机端口队列快要满的时候，发送暂停帧告诉上游“不要再发数据”，上游网卡暂停发送，避免数据包丢弃，实现无损网络。工程痛点：PFC死头（Head‑of‑Line HOL阻塞）一条流拥塞触发暂停，同一优先级所有流量全部停住，引发大面积性能抖动。这是RoCE线上最常见故障点。]]></description><category></category></item><item><title><![CDATA[对ebpf的理解（3）]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/164372869</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/164372869</guid><author>qq_63965537</author><pubDate>Sat, 05 Sep 2026 20:49:54 +0800</pubDate><description><![CDATA[Map 是 eBPF 提供的数据存储，是用户态 ↔ eBPF内核程序交换数据的唯一媒介。内核eBPF程序不能直接操作用户态内存，全部通过Map读写。hash哈希表：key‑value统计，统计PID、系统调用次数，最常用；array数组：固定大小数组；：事件推送，把事件实时发给用户态（比如捕获每次系统调用事件）；lpm_trie：最长前缀匹配，多用于网络；stack_trace：栈回溯，采集调用栈，做性能分析。注意：Map有最大大小限制，内核态不能随便无限分配内存。]]></description><category></category></item><item><title><![CDATA[对jemalloc的理解]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/164372681</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/164372681</guid><author>qq_63965537</author><pubDate>Fri, 04 Sep 2026 17:16:42 +0800</pubDate><description><![CDATA[jemalloc是高性能内存分配器。靠线程本地缓存tcache + 多独立arena，大幅降低多线程malloc的锁竞争，同时更好控制内存碎片；很多存储、网络服务通过LD_PRELOAD直接替换系统malloc，业务代码一行不改就能提升性能。]]></description><category></category></item><item><title><![CDATA[对fork的理解]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/164372478</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/164372478</guid><author>qq_63965537</author><pubDate>Fri, 04 Sep 2026 17:11:09 +0800</pubDate><description><![CDATA[👉子进程变成僵尸进程(zombie)：代码已经跑完，但进程残留条目还留在系统表里，占PID资源。fork() 是 Linux/Unix 的系统调用，复制一份当前程序，变出一个一模一样的新进程。fork → 创建新进程 进程之间内存默认隔离（COW），互相看不见对方变量，进程之间通信要管道、socket、共享内存。操作系统调度说了算 有可能父进程先执行，也有可能子进程先执行，顺序不确定，不要写依赖执行顺序的代码。父返回子PID，子返回0。fork创建进程，和线程完全不一样，进程内存隔离，线程共享内存。]]></description><category></category></item><item><title><![CDATA[对io_uring的理解]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/162770603</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/162770603</guid><author>qq_63965537</author><pubDate>Sun, 12 Jul 2026 13:10:16 +0800</pubDate><description><![CDATA[先建共享环形队列，批量写一堆IO任务，一次交给内核后台并发执行，执行完一次性取回所有读写结果，全程极少系统调用，实现高性能异步IO。]]></description><category></category></item><item><title><![CDATA[对mmap和 munmap的理解]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/162771022</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/162771022</guid><author>qq_63965537</author><pubDate>Sun, 12 Jul 2026 13:08:47 +0800</pubDate><description><![CDATA[mmap：分配一段虚拟内存，绑定文件/共享内存，拿到可读写指针；业务逻辑：通过指针读写数据；munmap：归还虚拟内存，解除映射，是 mmap 必不可少的收尾操作。]]></description><category></category></item><item><title><![CDATA[对io_uring的理解（1）]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/162770558</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/162770558</guid><author>qq_63965537</author><pubDate>Fri, 10 Jul 2026 20:22:02 +0800</pubDate><description><![CDATA[io_uring = Linux 官方新一代、全能、高性能异步IO接口，通过共享环形队列大幅减少内核切换开销，解决了老式同步IO慢、旧异步aio功能残缺的问题，是现在高并发IO程序的底层标配。]]></description><category></category></item><item><title><![CDATA[对unlink函数的理解]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/162737653</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/162737653</guid><author>qq_63965537</author><pubDate>Fri, 10 Jul 2026 18:30:16 +0800</pubDate><description><![CDATA[/ 要删除的文件 const char *file_name = "test.txt";if (ret == 0) { printf("文件 %s 删除成功！// 等价 unlink("test.txt") remove("empty_dir");举例子： 你 vim test.txt 打开文件，另一个程序调用 unlink("test.txt")如果 path 是普通文件：remove 内部调用 unlink()// 返回值：成功返回 0；// path：要删除的文件路径（相对/绝对路径都行）]]></description><category></category></item><item><title><![CDATA[对ebpf的理解（2）]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/162736712</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/162736712</guid><author>qq_63965537</author><pubDate>Thu, 09 Jul 2026 19:10:40 +0800</pubDate><description><![CDATA[printf("【出站连接】程序:%s 目标IP:%d.%d.%d.%d 端口:%d\n", comm, args-                >daddr[0], args->daddr[1], args->daddr[2], args->daddr[3], args->dport);printf("【告警】进程 %d (%s) 读取敏感文件 /etc/passwd\n", pid, comm);print("\n===== 进程read调用统计 =====")# 内核运行的eBPF C代码。]]></description><category></category></item><item><title><![CDATA[对ebpf的理解]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/162736519</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/162736519</guid><author>qq_63965537</author><pubDate>Thu, 09 Jul 2026 17:56:24 +0800</pubDate><description><![CDATA[eBPF 是 Linux 内置安全虚拟机，允许我们编写轻量小程序挂载在内核各类事件上，零修改内核、零宕机风险、高性能地实现网络管控、系统监控、安全防护，现在是云服务器、K8s、运维排查的核心底层技术。]]></description><category></category></item><item><title><![CDATA[Linux 下 C 语言 sendfile 实现文件传输]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/161950659</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/161950659</guid><author>qq_63965537</author><pubDate>Sat, 13 Jun 2026 12:14:41 +0800</pubDate><description><![CDATA[/ 1. 创建socket int sockfd = socket(AF_INET, SOCK_STREAM, 0);零拷贝原理 传统 read + write：磁盘 → 内核缓冲区 → 用户缓冲区 → 内核socket缓冲区 → 网卡 sendfile：磁盘 → 内核缓冲区 → 内核socket缓冲区 → 网卡，跳过用户态拷贝，性能更高。// 1. 创建监听socket lfd = socket(AF_INET,         SOCK_STREAM, 0);// 3. 打开待发送文件。]]></description><category></category></item><item><title><![CDATA[安装RDMA]]></title><link>https://blog.youkuaiyun.com/qq_63965537/article/details/161950211</link><guid>https://blog.youkuaiyun.com/qq_63965537/article/details/161950211</guid><author>qq_63965537</author><pubDate>Sat, 13 Jun 2026 11:59:28 +0800</pubDate><description><![CDATA[正常输出：state ACTIVE, physical_state LINK_UP。verbs rdma_ucm # 用户态 connection management。RoCE 丢包/性能差：交换机未开 PFC/ECN、MTU 不一致、流控未配置。ibv_devinfo 无设备：驱动未加载、固件不兼容、网卡不支持 RDMA。rxe0 无法 UP：内核未加载 rdma_rxe、物理网卡未启用。Intel：E810、X722 等（iWARP/RoCE）# 查看端口状态（应显示 PORT_ACTIVE）]]></description><category></category></item></channel></rss>