CatBench v0.3:Postgres向量搜索应用新增性能监控

2025-05-30

CatBench是一个基于Postgres和PgVector的演示应用,使用25000张宠物照片展示相似性搜索功能。最新版本CatBench v0.3增加了Postgres实例级别的吞吐量和平均查询执行延迟图表监控。用户可以浏览推荐引擎,查看猫的图片和产品推荐,并观察UI活动的后端SQL查询及其计划执行指标。新版本还增加了实例范围的活动和SQL延迟指标监控,方便用户观察性能变化。未来计划包括改进代码、增加照片数量、添加召回质量监控以及支持其他数据库。

阅读更多
开发

pg_test_fsync: 快速测试磁盘写入性能的利器

2025-05-28

本文介绍了 `pg_test_fsync` 工具,用于快速测试磁盘或云存储的写入性能,尤其适用于数据库WAL日志等低延迟写入场景。作者使用该工具测试了消费级三星990 Pro SSD和企业级Micron 7400 SSD,结果显示企业级SSD由于具有控制器DRAM缓存和电力损耗保护功能,其同步写入速度显著高于消费级SSD。测试还发现,`fdatasync` 比 `fsync` 或 `O_SYNC` 速度更快,但即使是`fdatasync`,单个8kB写入也需要1.6毫秒。文章最后提醒,多个小写入会导致性能下降,批量写入可以提高效率。

阅读更多
开发

lsds: 一键查看Linux块设备设置

2025-05-09

管理Linux磁盘和I/O时,通常需要运行lsblk、lsscsi、nvme list等多个命令,再手动关联它们的结果。作者为此开发了一个名为lsds的Python程序,它直接读取`/sys/class/blocks/...`目录中的信息,将所有重要的磁盘信息汇总显示,包括设备名称、大小、类型、调度程序、旋转标志、型号、队列深度、请求数量和写缓存等。lsds支持自定义显示列,并提供详细模式显示信息来源,极大简化了Linux磁盘管理的复杂性。

阅读更多
开发 磁盘管理

单线程ThreadRipper工作站实现1100万IOPS和66 GiB/s IO

2025-05-06

本文讲述了如何配置一台搭载AMD ThreadRipper Pro处理器和10个PCIe 4.0 SSD的工作站,以实现高达1100万IOPS的4kB随机读取和66 GiB/s的大型IO吞吐量。作者克服了RAM访问和CPU瓶颈等挑战,并深入探讨了Linux块I/O内部机制以及与现代硬件的交互。文章还涵盖了硬件选择、I/O配置(直接I/O和I/O调度器)、多磁盘测试以及BIOS设置等方面,最终成功实现了令人惊叹的性能。

阅读更多

Linux内核6.9及以上版本eBPF编程中的FRED陷阱

2025-03-01

最近Linux内核6.9版本在x86_64架构上引入了CONFIG_X86_FRED配置选项,这会在任务内核栈底部添加16字节的填充。这会导致直接访问内核栈和pt_regs结构的eBPF程序出现错误,返回垃圾数据。作者通过升级到Linux 6.11内核后,其eBPF程序xcapture-next出现此问题,通过分析发现是FRED导致的栈地址偏移。作者提出了一种动态检测FRED并调整栈地址计算的方法,避免此问题。这篇文章对eBPF开发者,特别是直接操作内核栈的开发者有重要参考价值。

阅读更多
开发 FRED

Linux内核追踪利器:tracepointargs

2025-02-04

还在为查找Linux内核tracepoint的元数据和数据结构而苦恼吗?tracepointargs工具闪亮登场!它可以列出所有Linux内核tracepoint及其参数、数据类型和相关结构体。更棒的是,它还能解析内核结构体布局,让你无需翻阅源码就能理解tracepoint的细节。只需结合bpftool生成vmlinux.h文件,就能轻松查看结构体内部信息,甚至递归展开嵌套结构。这对于eBPF开发者和内核探索者来说,无疑是一大利器,大大提升效率。

阅读更多
开发 tracepoint