数据库类程序该用 fsync 还是 fdatasync,为什么 fsync 是性能杀手?
围绕“数据库类程序该用 fsync 还是 fdatasync,为什么 fsync 是性能杀手”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分是否同步元数据以及等待磁盘确认的开销。
操作系统 · 性能优化面试题第 1 页,显示第 1–11 题,共找到 11 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“数据库类程序该用 fsync 还是 fdatasync,为什么 fsync 是性能杀手”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分是否同步元数据以及等待磁盘确认的开销。
围绕“mmap 与 read/write 读写文件的性能与语义差异体现在哪里”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须比较拷贝次数、缺页开销与页对齐粒度,并说明 mmap 不天然更快。
围绕“select 在高并发下的三个主要瓶颈是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须列出 fd 数量上限、每次重置集合、内核到用户态线性扫描。
围绕“为什么按行遍历二维数组比按列遍历快,缓存局部性如何影响程序性能”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 cache line 预取与空间局部性原理。
围绕“为什么 fork 一个大内存进程通常很快,什么情况下 fork 会变慢”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确复制页表而非页帧的成本模型及大页表场景。
围绕“大页(Huge Page)为什么能提升数据库等应用的性能”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确减少页表项与 TLB miss 的机制及适用负载。
围绕“次缺页和主缺页有什么区别,如何用 minflt/majflt 判断程序瓶颈”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确是否需要磁盘 I/O 这一判定标准及排查含义。
围绕“为什么频繁上下文切换会降低性能,如何在压测中观测”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出 TLB/缓存失效与内核开销两类成本及观测工具。
围绕“CPU 亲和性是什么,绑核在什么场景能提升性能”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明缓存局部性收益与负载不均风险。
围绕“select、poll、epoll 在 fd 数量增长时性能差异的根源是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要聚焦 O(n) 拷贝遍历与就绪事件回调模型的差异。
围绕“本机通信选 Unix domain socket 还是 TCP loopback,性能与功能差在哪”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须比较协议栈开销、文件描述符传递与权限控制。