posix_fadvise 的 SEQUENTIAL 与 DONTNEED 提示分别如何改变内核预读与缓存行为?
posix_fadvise 的 SEQUENTIAL 与 DONTNEED 提示分别如何改变内核预读与缓存行为? 本文先给出可直接复述的结论,再用最小代码说明posix_fadvise 预读 丢弃缓存 顺序扫描的工作方式、判断依据、项目边界和常见误区。
操作系统 · 缓存面试题第 1 页,显示第 1–19 题,共找到 19 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
posix_fadvise 的 SEQUENTIAL 与 DONTNEED 提示分别如何改变内核预读与缓存行为? 本文先给出可直接复述的结论,再用最小代码说明posix_fadvise 预读 丢弃缓存 顺序扫描的工作方式、判断依据、项目边界和常见误区。
使用 O_DIRECT 绕过页缓存时对缓冲区和偏移有什么约束,适合什么场景? 本文先给出可直接复述的结论,再用最小代码说明O_DIRECT 对齐 绕过页缓存 应用场景的工作方式、判断依据、项目边界和常见误区。
Linux 页缓存如何让普通 read/write 变快,又带来什么内存统计上的误解? 本文先给出可直接复述的结论,再用最小代码说明page cache 页缓存 buff/cache free 内存的工作方式、判断依据、项目边界和常见误区。
write 返回成功后,数据到达磁盘的顺序和时机由什么决定? 本文先给出可直接复述的结论,再用最小代码说明write 写回 dirty page 回写 落盘时机的工作方式、判断依据、项目边界和常见误区。
为什么按行遍历二维数组比按列遍历快,缓存局部性如何影响程序性能? 本文先给出可直接复述的结论,再用最小代码说明缓存局部性 行优先 遍历 性能的工作方式、判断依据、项目边界和常见误区。
多线程程序中什么是伪共享(false sharing),如何避免? 本文先给出可直接复述的结论,再用最小代码说明伪共享 false sharing 缓存行 多线程的工作方式、判断依据、项目边界和常见误区。
为什么 free 之后进程的 RSS 往往不会立即下降? 本文先给出可直接复述的结论,再用最小代码说明free 内存不释放 RSS glibc的工作方式、判断依据、项目边界和常见误区。
缓存一致性协议和内存屏障分别解决多核编程中的什么问题? 本文先给出可直接复述的结论,再用最小代码说明缓存一致性 MESI 内存屏障 区别的工作方式、判断依据、项目边界和常见误区。
如何区分进程是内存泄漏还是被 glibc 分配器缓存了内存? 本文先给出可直接复述的结论,再用最小代码说明内存泄漏 诊断 RSS 增长 malloc的工作方式、判断依据、项目边界和常见误区。
匿名 mmap 和文件 mmap 在页面来源与回收路径上有什么区别? 本文先给出可直接复述的结论,再用最小代码说明匿名映射 文件映射 mmap 区别的工作方式、判断依据、项目边界和常见误区。
用 mmap 读文件和用 read 读文件在数据拷贝和缺页上有什么差异? 本文先给出可直接复述的结论,再用最小代码说明mmap read 区别 零拷贝 缺页的工作方式、判断依据、项目边界和常见误区。
Linux 页缓存是什么,为什么 free 显示的可用内存很少但系统并不缺内存? 本文先给出可直接复述的结论,再用最小代码说明页缓存 page cache available 内存的工作方式、判断依据、项目边界和常见误区。
Linux 内核的 slab 分配器解决什么问题? 本文先给出可直接复述的结论,再用最小代码说明slab 分配器 内核 对象缓存的工作方式、判断依据、项目边界和常见误区。
vm.swappiness 参数如何影响匿名页与页缓存的回收倾向? 本文先给出可直接复述的结论,再用最小代码说明swappiness 参数 swap 回收倾向的工作方式、判断依据、项目边界和常见误区。
TLB 在地址转换中起什么作用,TLB miss 时代价有多大? 本文先给出可直接复述的结论,再用最小代码说明TLB 作用与 TLB miss 代价的工作方式、判断依据、项目边界和常见误区。
zswap 和 zram 在压缩换出路径上有什么区别? 本文先给出可直接复述的结论,再用最小代码说明zswap zram 区别 压缩内存的工作方式、判断依据、项目边界和常见误区。
为什么频繁上下文切换会降低性能,如何在压测中观测? 本文先给出可直接复述的结论,再用最小代码说明上下文切换开销 vmstat的工作方式、判断依据、项目边界和常见误区。
CPU 亲和性是什么,绑核在什么场景能提升性能? 本文先给出可直接复述的结论,再用最小代码说明CPU 亲和性 sched_setaffinity的工作方式、判断依据、项目边界和常见误区。
为什么多线程程序需要内存序,x86 和 ARM 上的可见性差异在哪? 本文先给出可直接复述的结论,再用最小代码说明内存序 memory ordering的工作方式、判断依据、项目边界和常见误区。