关于共享段与SGA的一点理解
上一篇 / 下一篇 2008-02-20 21:38:35 / 精华(1)
查看( 26 ) /
评论( 58 )
TAG:
-
catchwo
发布于2007-08-21 16:24:34
-
辛苦了一周啊,欢迎探讨!
-
catchwo
发布于2007-08-21 17:00:37
-
坚决不沉
-
catchwo
发布于2007-08-21 17:27:16
-
up
-
棉花糖ONE发布于2007-08-21 17:43:41
-
虽然看不懂,还是帮你up
-
catchwo
发布于2007-08-21 18:31:31
-
QUOTE:
最初由 棉花糖ONE 发布
[B]虽然看不懂,还是帮你up [/B]
-
BTxigua
发布于2007-08-21 18:34:36
-
老大,你狠,还看linux源代码。
这里的大部分都没这个水平的啊。
所以希望你能把你的结果给整理一下,讲的通俗一点。
-
BTxigua
发布于2007-08-21 18:34:56
-
不关怎么说,帮你顶!
-
catchwo
发布于2007-08-21 18:44:38
-
QUOTE:
最初由 BTxigua 发布
我也是被逼得没法子了,网上有些帖子讲这个但是我觉得都有问题,所以干脆自己查。还费了我100多¥买了两本书。
[B]老大,你狠,还看linux源代码。
这里的大部分都没这个水平的啊。
所以希望你能把你的结果给整理一下,讲的通俗一点。 [/B]
linux 源代码也没看太多啦!就是看了些与虚拟存储相关的结构和函数。
我的语文水平比较次,下次仔细整理后再贴上来。
-
yg_java发布于2007-08-21 19:03:01
-
高手啊,学习ING
-
bluemoon0083发布于2007-08-21 19:08:01
-
就算看不懂也要顶

-
secooler
发布于2007-08-21 20:46:09
-
up 你
-
yinwei1985发布于2007-08-21 20:46:38
-
前些天也是在看这个oracle的内存部分,看得头都大了,看得都没有兴趣学了
-
happytime1559发布于2007-08-21 20:47:16
-
好厉害哦,加油顶一下
-
jhfenggu发布于2007-08-21 21:09:30
-
动不动就说看什么OS源代码,我不敢苟同!
如果你是专业OS开发,底层开发的可以去了解这些东西,如果你是面向应用或者Oracle DBA,这些根本就不需要知道,研究也是浪费时间,知道OS的内部结构有实际意义吗?了解到内存的组成和体系结构就行了。
-
catchwo
发布于2007-08-21 21:20:48
-
QUOTE:
最初由 jhfenggu 发布
大哥,我就是看了看LINUX源代码里的一小部分关于内存组织的结构和函数啊!我也没那么牛去专门研究OS源代码--仅仅为了“了解到内存的组成和体系结构”
[B]动不动就说看什么OS源代码,我不敢苟同!
如果你是专业OS开发,底层开发的可以去了解这些东西,如果你是面向应用或者Oracle DBA,这些根本就不需要知道,研究也是浪费时间,知道OS的内部结构有实际意义吗?了解到内存的组成和体系结构就行了。 [/B]
-
catchwo
发布于2007-08-21 21:37:48
-
把组织好的内容已更新在帖子上了
-
yublaze发布于2007-08-21 21:42:51
-
QUOTE:
最初由 jhfenggu 发布
了解一下毕竟还是有意义的,如果想深入了解oracle,我认为对操作系统的了解越深入越好。个人观点
[B]动不动就说看什么OS源代码,我不敢苟同!
如果你是专业OS开发,底层开发的可以去了解这些东西,如果你是面向应用或者Oracle DBA,这些根本就不需要知道,研究也是浪费时间,知道OS的内部结构有实际意义吗?了解到内存的组成和体系结构就行了。 [/B]
-
joeldavid
发布于2007-08-21 21:48:11
-
QUOTE:
最初由 yublaze 发布
个人比较赞同。
[B]
了解一下毕竟还是有意义的,如果想深入了解oracle,我认为对操作系统的了解越深入越好。个人观点 [/B]
多面手本来就没有错的说
oracle也是要和os结合的
自己多了解只会有益无害吧
-
catchwo
发布于2007-08-21 22:03:32
-
欢迎来顶!
-
yublaze发布于2007-08-21 22:06:39
-
楼主给我们用浅显的语言具体介绍一下吧,我对OS方面的知识一直很想深入了解,但无奈自己水平有限

-
catchwo
发布于2007-08-21 22:11:51
-
QUOTE:
最初由 yublaze 发布
“用浅显的语言”的话太多东西要介绍了
[B]楼主给我们用浅显的语言具体介绍一下吧,我对OS方面的知识一直很想深入了解,但无奈自己水平有限
[/B]
看看OS教材--仔细了解
看看X86,Power CPU体系结构--了解X86,看看Power的相关部分就行
看看OReilly Understanding the Linux Kernel 3rd Edition----看看感兴趣的部分就行
-
catchwo
发布于2007-08-22 09:10:10
-
up
-
biti_rainy
发布于2007-08-22 09:38:48
-
http://bitirainy.itpub.net/post/330/1657
http://bitirainy.itpub.net/post/330/1658
以前曾经写过关系 sga 和 pga 之间的关系的帖子,实际上对应了 你的 1,2 两点
至于 page 大小影响 page 数量的问题,在linux上我遇见过 AS3.5 的 bug,当os内存有8g以上的时候,oracle运行一段时间出现out of memory一类的问题,经过检查是kernel 在处理 pagetable 时候的bug,当数量超出一定范围的时候处理出错,由于升级kernel 已经来不及了,我就采用了4m 大小的page 而降低page数量来解决了这个问题。
当然,在aix上由于内存大小已经达到64g 以上,我也在想是否使用 big page 会有性能提升(减少page数量是否会带来页表访问的提升?),但由于aix上使用 big page实际上还是比较麻烦的也担心出现问题,生产系统终究没有去使用。
关于 共享内存段 数量和性能之间的关系,以前我们也争论过,一般情况下,应该对性能是没有影响的。
-
catchwo
发布于2007-08-22 09:53:48
-
QUOTE:
最初由 biti_rainy 发布
前几天为这个问题困惑时,在C noug上读过老大的一个帖子“关于 共享内存段 的设置 和 unix下内存的段页式 管理”。但是没查到这两个,待会仔细看看
[B]http://bitirainy.itpub.net/post/330/1657
http://bitirainy.itpub.net/post/330/1658
以前曾经写过关系 sga 和 pga 之间的关系的帖子,实际上对应了 你的 1,2 两点
至于 page 大小影响 page 数量的问题,在linux上我遇见过 AS3.5 的 bug,当os内存有8g以上的时候,oracle运行一段时间出现out of memory一类的问题,经过检查是kernel 在处理 pagetable 时候的bug,当数量超出一定范围的时候处理出错,由于升级kernel 已经来不及了,我就采用了4m 大小的page 而降低page数量来解决了这个问题。
当然,在aix上由于内存大小已经达到64g 以上,我也在想是否使用 big page 会有性能提升(减少page数量是否会带来页表访问的提升?),但由于aix上使用 big page实际上还是比较麻烦的也担心出现问题,生产系统终究没有去使用。
关于 共享内存段 数量和性能之间的关系,以前我们也争论过,一般情况下,应该对性能是没有影响的。 [/B]
-
stronghearted
发布于2007-08-22 10:09:17
-
5 由于使用线形地址,sga分为多个共享段只会影响空间的使用,对性能几乎没有影响[/COLOR]
一般一个共享段应大于sga,当然sga大于一个共享内存段,sga仍然可以创建成功,但在日志文件会出现warning!
性能方面问题,一般没影响!
-
catchwo
发布于2007-08-22 10:27:27
-
QUOTE:
最初由 biti_rainy 发布
IBM《PowerPC Operating Environment Architecture Book III Version 2.02》介绍了:64位AIX的线形地址到物理地址的转换是通过一个hash算法来访问页表的。所以减少page数量对性能可能不会有太大的提高。
[B]http://bitirainy.itpub.net/post/330/1657
http://bitirainy.itpub.net/post/330/1658
以前曾经写过关系 sga 和 pga 之间的关系的帖子,实际上对应了 你的 1,2 两点
至于 page 大小影响 page 数量的问题,在linux上我遇见过 AS3.5 的 bug,当os内存有8g以上的时候,oracle运行一段时间出现out of memory一类的问题,经过检查是kernel 在处理 pagetable 时候的bug,当数量超出一定范围的时候处理出错,由于升级kernel 已经来不及了,我就采用了4m 大小的page 而降低page数量来解决了这个问题。
当然,在aix上由于内存大小已经达到64g 以上,我也在想是否使用 big page 会有性能提升(减少page数量是否会带来页表访问的提升?),但由于aix上使用 big page实际上还是比较麻烦的也担心出现问题,生产系统终究没有去使用。
关于 共享内存段 数量和性能之间的关系,以前我们也争论过,一般情况下,应该对性能是没有影响的。 [/B]
-
biti_rainy
发布于2007-08-22 11:02:29
-
QUOTE:
最初由 catchwo 发布
os 跟oracle访问 buffer cache 一样都会通过hash 来做,os 的pagetable 类似于 oracle cache buffer chain 的hash table。但我不知道os的hash bucket 数量是如何确定的,冲突的几率多大。只能是在想降低page数量也许能降低冲突的概率。
[B]
IBM《PowerPC Operating Environment Architecture Book III Version 2.02》介绍了:64位AIX的线形地址到物理地址的转换是通过一个hash算法来访问页表的。所以减少page数量对性能可能不会有太大的提高。 [/B]
这是一个方面,另一个方面是,如果内存有128g 大致来讲:
ops$admin@OCNDB>select 128*1024*1024/4 from dual;
128*1024*1024/4
---------------
33554432
几千万个页,还是比较大的,因为我们发现os 在大内存下自身的消耗其实还是很大的,比如 AIX 下 maxpin ,默认是80% ,但oracle 的sga 如果lock 在内存中,就不能超过 70%,否则将可能造成os kernel 内存出现问题,也就是说 消耗还是蛮大的,我怀疑 页 太多是造成 os kernel 消耗内存过多的一个重要原因。128g的 内存这就是10多G啊。
-
catchwo
发布于2007-08-22 11:41:24
-
前面我的结论有误,只考虑了线形地址到物理地址的转换,没考虑OS管理pagetable的消耗,biti老大确实考虑得全面。
128G 确实大! 这种情况下应该是对线形地址到物理地址的转换影响不大,但是增加了OS管理pagetable(太多了)的负担,从而影响性能的。这种情况下用bigpage应该会有比较好的优化效果
-
wangfans
发布于2007-08-22 11:49:33
-
学习
-
catchwo
发布于2007-08-22 13:49:59
-
QUOTE:
最初由 wangfans 发布
是啊。在看文档时遇到模糊的地方,如果不弄清楚(至少要能合理的联系起来)的话感觉特别不爽
[B]学习 [/B]
