% !TeX TS-program = xelatex \documentclass{resume} \ResumeName{个人简历} \usepackage{graphicx} \usepackage{tikz} \setmainfont{Latin Modern Roman} \begin{document} \ResumeContacts{ 姓名:连奕恒,% 学历:硕士,% 专业:软件工程,% (+86)178-8812-0369,% \ResumeUrl{mailto:lianyh0266@outlook.com}{lianyh0266@outlook.com},% } \begin{tikzpicture}[remember picture, overlay] \node [anchor=north east, inner sep=1cm] at (current page.north east) {\includegraphics[width=2cm]{image2.png}}; \end{tikzpicture} \ResumeTitle \section{教育经历} \ResumeItem [西安电子科技大学|硕士研究生] {西安电子科技大学} [\textnormal{软件工程,计算机科学与技术学院|} 专业学位研究生] [2024.09—2027.06(预计)] 主要研究方向为密态数据库、加密数据查询与索引结构。2027 年应届生。 \ResumeItem [兰州理工大学|本科生] {兰州理工大学} [\textnormal{软件工程,计算机学院|} 工学学士] [2020.09—2024.06] 天梯赛一等奖,蓝桥杯省赛二等奖。 \section[技术能力] {技术能力} \begin{itemize} \item 熟悉 C/C++ 开发,熟悉面向对象的编程思想,熟悉常用设计模式和STL; 熟悉智能指针、Lambda 表达式、协程原理; 对原子变量、内存序与无锁数据结构设计有一定了解。 \item 熟悉 Linux 操作系统,对进程/线程模型、常用IPC以及内存管理有一定了解。 \item 掌握 Socket 网络编程,熟悉 TCP/IP 协议栈;熟悉 epoll/select 等 I/O 多路复用模型与异步 I/O 框架 io\_uring ;熟悉 Reactor / Proactor 架构。 \item 了解 SPDK 用户态存储框架,有 Blobstore 实际开发经验;了解 Linux VFS 层次结构与 POSIX 文件系统调用语义;具备 LD\_PRELOAD 拦截用户态 I/O 的经验;对应NVMe协议有一定了解。 \item 具备 eBPF 程序开发经验,使用过 uprobe/kprobe/tracepoint 等探测点;探索过 eBPF 内核态网络转发方案。 \item 了解 Redis 基本原理;熟悉 MySQL,了解索引、事务、锁机制、MVCC;完成 15445 BusTub 数据库项目。 \item 熟悉 Linux 常用命令;了解 Makefile、Cmake;熟悉 Git、GDB;使用过 gprof、strace。 \end{itemize} \section{项目经历} \ResumeItem{ZVFS | 基于 SPDK 的透明 POSIX 文件系统 } [独立开发 | \ResumeUrl{https://git.1ian.cn/lian/zvfs}{gitea}] [2025.11 --- 2026.03] \vspace{0.5em} \noindent 透明用户态文件系统原型,面向 AI 检索场景(pgvector)对存储 I/O 的高吞吐需求,通过 LD\_PRELOAD 无侵入劫持 POSIX I/O,将文件数据路径路由至 SPDK Blobstore,在零业务代码改动下绕过内核 I/O 栈。透明接管 PostgreSQL及 pgvector 已完成功能验证。 \par % \ResumeDesc{技术栈}{SPDK / NVMe / Blobstore / LD\_PRELOAD / xattr / Unix Domain Socket。} \begin{itemize} \item 需要非侵入的绕过内核 I/O 栈以降低存储延迟:以 LD\_PRELOAD 劫持 POSIX I/O 接口,通过 Unix Domain Socket 将 LD\_PRELOAD 层拦截的 POSIX I/O 请求路由至 Daemon 进程,由 Daemon 统一接管 SPDK Blobstore 数据路径,完成数据库场景零侵入接入。 \item 从零实现目录树工程复杂度极高:控制面全部复用 Linux VFS 管理目录、权限、inode 生命周期,仅以 xattr将文件绑定至对应 SPDK Blob;无需实现元数据存储/载机制,显著降低实现复杂度。 \item SPDK 的 Ownership 机制要求固定线程操作元数据:设计 Daemon 进程为「单 IPC I/O 线程 + 单 SPDK 元数据线程 + 多 SPDK I/O 线程」架构,在满足 SPDK 单线程约束的同时支持并行数据 I/O。 \item 多进程下需要正确模拟 fork/dup 等语义:在 Daemon 进程中模拟 Linux Open File Description 与 FdTable 模型,并通过 IPC 同步引用计数与偏移语义,保证多 fd / 多进程共享句柄时行为一致。 \item 每次 I/O 重新申请 DMA 内存导致延迟抖动:实现 DMA IO Pool 复用 DMA 内存区域,消除重复申请开销。 \item FIO 中 WRITE 延迟明显高于预期:对端到端路径加轻量打点,将总延迟分解至各层;定位到无条件 RMW、poller 调度抖动、线程未绑核等多个叠加问题,逐项修复后 spdk服务端延迟 从毫秒级降至约 350 µs。 \item 性能测试:在 VMware + 模拟 NVMe 环境下,FIO 16K Psyn 随机写达到 kernel 路径约 73\% IOPS(1353 vs 1855),平均时延为 692 µs;顺序对齐写场景下吞吐达spdk\_nvme\_perf 基准 90\%(4K: 94/100 MiB/s;128K: 1662/1843 MiB/s)。单客户端场景 TPS 为 38.2,对比 kernel 39.1,端到端性能基本持平(约 4\% 差距)。 \end{itemize} \vspace{1em} \ResumeItem{LDB | 高性能 KV 存储系统 \& 本地语义问答引擎} [独立开发 | \ResumeUrl{https://git.1ian.cn/lian/ldb}{gitea}] [2025.02 --- 2025.07] \vspace{0.5em} \noindent 自研 KV 存储引擎,兼容 RESP 协议,支持 pipeline;采用 Reactor/epoll + io\_uring 架构实现高性能网络与持久化路径。在此基础上构建本地语义问答系统,通过向量检索与三层路由降低 LLM 调用成本。 \par % \ResumeDesc{技术栈}{Linux、Reactor、epoll、io\_uring、RESP2、eBPF、共享内存 IPC、gprof、ChainBuffer、SPSC。} \begin{itemize} \item 频繁小对象分配导致内存碎片严重:自实现内存池统一管理分配,小对象场景吞吐较 glibc malloc 提升 7\%。 \item AI问答的长回复在固定缓冲区下存在内存浪费:以 ChainBuffer + ET 边缘触发 + readv 直读重构收发路径,支持大命令缓冲,实现跨分段大Key解析。 \item 同步持久化阻塞主线程,高并发下落盘成为瓶颈:以 io\_uring + n×spsc 落盘线程组实现异步持久化,配合 in-flight 背压防止 CQ overflow,负载均衡分摊写压力;无fsync 时 set QPS 损失仅 5.6\%,每秒fsync一次 QPS损失 11.3\%,读路径接近零影响。相较同步持久化方案,整体性能提升 2x。对比Redis AOF 模型持久化开销降低50\%。 \item 运行时内存泄漏难以追踪:通过 eBPF 实现热插拔泄漏探测组件,对比 valgrind 性能开销更小且无需重启即可介入。 \item 为实现读写分离架构,降低主进程压力:实现基于独立进程的主从同步,通过共享内存向独立同步进程转发写命令,QPS损失15\%。设计基于内核态函数探测的eBPF转发方案,探测开销低于3\%。 % \item 增量持久化路径存在性能瓶颈:gprof 定位后发现提交落盘任务频繁申请内存,引入组提交机制与可复用组提交缓冲池,合并多次写入批量落盘;持久化路径开销降低 23\%。 \item 针对重复问题频繁触发 LLM 调用导致的高延迟与高成本问题:设计“精确匹配 → 向量检索 → LLM 兜底”的三层路由,显著减少模型调用次数与 tokens 消耗。 \item 性能测试:压测场景(RBTree,256B value,pipeline=128)下 set/get 吞吐达同环境 Redis 的 72\% / 75\%。 \end{itemize} \section{个人总结} \begin{itemize} \item 对基础组件开发具有浓厚兴趣,喜欢与系统底层机制打交道,关注系统性能优化与高并发处理能力。 \item 对关系型数据库原理较为熟悉,对常见非关系型数据库有一定了解。 \item 了解线程池、连接池、无锁队列、网络缓冲区、定时器等基础组件的设计。 \item 阅读过 DPDK 中 MPMC 无锁队列的实现源码,对高性能并发数据结构有一定理解。 \item 具备使用 Codex / AI 编程工具辅助开发的经验。 \end{itemize} \end{document}