如何选择HugePage大小

How to choose HugePage size

据我了解,我们需要页面 table 中的条目才能访问 RAM 中的物理内存。因此,如果我在 Oracle 数据库中有 60TB 的数据和 125GB 的 RAM,HugePages 的最佳大小和数量是多少?

Oracle 文档 [1] 建议允许 memlock 锁定 "at least 90 percent of current RAM"。

如果我分配 1GB (1048576KB) 页面条目大小,是否意味着我需要静态分配 125GB 的 90%,如下所示,

112 000 000 KB / 1 048 576 KB ~= 106 pages

或者对于 2MB 页面条目,

112 000 000 KB / (2 MB * 1024 KB / 1MB) ~= 54687 pages

我最大的困惑是,如果页面 table 条目占用 90% 的 RAM,实际数据去哪儿了?

数据库的大小无关紧要。您希望配置足够多的大页面来容纳您的 SGA(如果 运行 多个 Oracle 实例在同一台服务器上,则配置 "all" 个 SGA)。可能最好的计算器脚本(也是我使用的脚本)是 My Oracle Support Doc ID 401749.1。当然,您必须有付费支持合同才能到达那里。缺少它,在 https://oracle-base.com/articles/linux/configuring-huge-pages-for-oracle-on-linux-64. On review, I see that your cited doc also contains a script for recommendation of vm.nr_hugepages=value in /etc/sysctl.conf. All in all, I'd just with your cited doc, since you already have it. As far as your question of "where does the actual data go?" It goes on the disk. Until such time as it is read, in which case it goes into the data buffers in memory. Sounds like you need to review 'Instance Architecture' in the Concepts Manual 处有一个脚本和描述。