Hasty Briefsbeta

双语

Preempt_none Is Dead; Your Postgres Probably Doesn't Care

4 days ago
  • #Linux Kernel
  • #PostgreSQL
  • #Performance Tuning
  • AWS基准测试显示,由于移除PREEMPT_NONE抢占模式导致的回归,PostgreSQL在Linux 7.0上的吞吐量降至6.x版本的0.51倍。
  • 性能问题源于使用4KB页面和大共享内存(100+ GB)时,自旋锁(buffer_strategy_lock)内的次要页错误,而PREEMPT_LAZY加剧了这一问题。
  • 启用大页(huge_pages=on)可通过减少页错误和TLB压力来消除回归,使内核升级对大多数用户安全。
  • 自托管服务器应正确配置大页;容器化设置需要主机级大页预留或减少shared_buffers。
  • 云数据库用户依赖供应商处理内核和大页配置,无需自行采取行动。
  • 内核社区建议使用rseq提供调度器提示,但这并非实用的即时解决方案;PostgreSQL可能在未来的版本中采用它。
  • 该基准测试工件强调了正确配置(大页)对于大共享内存工作负载的重要性,而非Linux的根本性问题。