💡
原文英文,约1500词,阅读约需6分钟。
📝
内容提要
巨大页面使PostgreSQL更快,但在Kubernetes中实现可能有困难。现代服务器具有TB级的RAM,处理器每个4KB页面进行虚拟内存地址转换。操作系统维护一个巨大的已分配和空闲页面列表。在Kubernetes中实现巨大页面可能需要工具和配置。
🎯
关键要点
- 巨大页面可以提高PostgreSQL的性能,但在Kubernetes中实现可能存在困难。
- 现代服务器通常具有TB级的RAM,处理器默认使用4KB页面进行虚拟内存地址转换。
- 建议从2MB的巨大页面开始设置,虽然基准测试的性能与4KB页面几乎相同。
- Kubernetes工作节点需要通过GRUB_CMDLINE_LINUX或sysctl vm.nr_hugepages=N进行配置。
- 在受管的Kubernetes服务中实现巨大页面可能比较困难,但在kubeadm、kubespray、k3d和kind安装中相对容易。
- 使用kubectl可以检查可用的巨大页面数量。
- PostgreSQL默认配置为使用巨大页面,但Kubernetes需要首先允许它。
- 在.spec.instances.resources.limits中需要修改以提及巨大页面,PG pods在没有适当限制的情况下无法启动。
- 不要将巨大页面设置为与shared_buffers相同的值,因为共享内存也可能被扩展和许多内部结构消耗。
- 在配置时,确保保留的巨大页面数量大于shared_buffers,并通过pg_shmem_allocations验证估算。
- 巨大页面并不是解决所有问题的灵丹妙药,默认的4K页面在某些情况下表现相当。
- 对于每秒少于4-5千个事务的工作负载,即使没有巨大页面也能正常运行。
🏷️
标签
➡️