Using hugetlb memory
====================
ATTENTION: The hugetlb configuration is absolutely independent from the
Oracle VLM configuration. See Note 361323.1 for details.
(hugetlb 的使用与VLM是完全独立的!可以说是两码事,只有性能,无关大小。)
hugetlb memory can be used in RHEL 3 for the portion of SGA that is directly
mapped in the Oracle address space (all of the SGA in the non-VLM case, or everything except for the buffercache in the VLM case).
(hugetlb 可以被使用for直接映射在Oracle地址空间的部分SGA,(在非VLM的案例中,那就是所有的SGA,也就是我们的正常状况;在VLM的案例中,那就是除了buffercache 的那一部分))
上面这段话,终于让我心里的想法得到了证实,解了我的心结。
This can reduce overhead in the Linux kernel.
(使用hugetlb 可以减少kernel的消耗,这也是使用hugetlb 的最终目的吧!而使用ramfs+VLM的案例里面,hugetlb 仅仅对share pool、large pool……这一部分顶多不超过4G的内存有效,真的有很大意义吗?warner的话又到底是在说什么呢?这么说,也不能说317141.1是错的。现在所需要考虑的就是ramfs+VLM的性能。接下来搞清楚VLM状态下shmmax的内存分配。那么shm+vlm为什么失败呢?是因为shm swap了?map就失效了?startup时,oracle的确也在shm里分配了8G,然后crash。)
……………………………………………………………………………………
6. Be sure /proc/sys/kernel/shmmax is set large.
echo 3700000000 >/proc/sys/kernel/shmmax
You can set shmmax to larger values but on 32-bit Linux it will wrap
around 4294967296(4GB). Keep in mind that a large setting is not that
crucial for creating a large SGA. If you set it to 4924967295
(4GB - 1 byte) and try to have a 10GB SGA, Oracle RDBMS will just
create multiple shared memory segments to achieve this.
这才是后来几篇note转载的原文吧?怎么转的变了味?说的好详细,前面的blog也提到过,不翻了。