您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > linux与oracle内核与内存技术
x86-32位体系结构中Linux+Oracle内核与内存管理技术演讲者:pinerLINUX与ORACLE的完美结合•“我们将把自己的所有业务都运行于Linux之上。”——LarryEllison+=RedhatAdvanceServer的内存管理•由于32-bit系统构架的限制,线性虚拟内存空间的大小在32-bit平台上为4GB的固定大小•采用PAE技术而拥有36位的线性寻址能力,这就可以让RedhatAdvanceServer可以使用到达64G的虚拟内存空间•在PAE的RedhatAS上,Oracle怎么样充分利用内存呢?内存管理方式•AS2.1中,4G的虚拟地址空间将被划分为3G的用户空间与1G的核心空间,在这种方式下,每个用户进程最多能访问3G的虚拟内存空间•在AS3.0,为了更好的利用大内存,出现了一种称为hugemem的核心,将采用4+4的寻址方式,也就是说,用户进程与核心进程将可以有单独的4G的虚拟地址寻址能力内存管理方式RedhatAdvanceServer的核心介绍•kernel-BOOT核心•AS2.1与3.0的kernel-smp核心•AS2.1的kernel-enterprice核心•AS3.0的kernel-hugemem核心•获得内核的办法–安装新的核心包(RPM包)–重新编译新的核心(make)AS2.1将OracleSGA扩大到2.7G•Oracle817以上•修改OS基地址•修改OracleSGA限制oxFFFFFFFFoxC0000000oxBF000000ox00000000共享内存段ox40000000SGAox50000000applicationcodesharedlibrarieskernelstuffstackSGAmax1.75Gox10000000ox150000002.98GAS2.1将OracleSGA扩大到2.7G•0xc0000000(核心空间的基地址3GB)•-0x15000000(SGA的基地址336MB)•-------------•0xab000000(十进制约2.736GB)•-堆栈空间•-其它内存空间•------------•~2.65到2.70GBAS2.1将OracleSGA扩大到2.7G•用root身份修改启动Oracle的进程基地址–echo268435456/proc/$pid/mapped_base•修改共享内存段–echo3000000000/proc/sys/kernel/shmmax•修改Oracle的SGA束缚地址–genksms-s0x15000000ksms.s–make-fins_rdbms.mkksms.o–make-fins_rdbms.mkioracleAS3.0将OracleSGA扩大到3.7G•3+1内存管理只能到2.7GSGA•4+4内存管理可以到3.7GSGA•OS基地址AS3.0默认已经修改•只需要修改Oracle的SGA束缚地址–genksms-s0x15000000ksms.s–make-fins_rdbms.mkksms.o–make-fins_rdbms.mkioracle取消大SGA内存修改•返回默认值–genksmsksms.s•重新编译–make-fins_rdbms.mkksms.o–make-fins_rdbms.mkioracleAS2.1上2.7G以上SGA支持•VLM技术•通过使用内存共享文件系统shmfs来实现•仅仅是对Oracle92版本有效•不能使用9i的动态内存与多个块大小的特性•REDHAT2.1企业版核心2.4.9-e.8enterprise以上AS2.1上2.7G以上SGA支持•用root身份运行–mount-tshmshmfs-osize=7g/dev/shm•修改/etc/fstab自动挂装–shmfs/dev/shmshmsize=7g00•确保大页的支持,提高TLB命中率,防止被交换–增加bigpages=8200MB到lilo或grub.conf–kernel/boot/vmlinuz-2.4.9-e.40smproroot=/dev/hda2hdc=ide-scsibigpages=8100MB–看大页的信息/proc/meminfoAS2.1上2.7G以上SGA支持•确保大页类型–echo2/proc/sys/kernel/shm-use-bigpages–echokernel.shm-use-bigpages=2/etc/sysctl.conf•修改共享内存段–echo4000000000/proc/sys/kernel/shmmax•修改init参数–use_indirect_data_buffers=true–db_block_buffers=850000AS3.0上3.7G以上SGA支持•AS3.0不支持大页,利用改进的ramfs内存文件系统•可以自动防止被交换与分页•创建共享文件系统,并放入到/etc/rc.local–umount/dev/shm–mount-tramfsramfs/dev/shm–chownoracle:dba/dev/shmAS3.0上3.7G以上SGA支持•为了防止错误–ORA-27103:internalerror–LinuxError:11:Resourcetemporarilyunavailable•修改最大锁内存限制(ulimit–l)•因为3.0的ulimit–l默认是4,为了容纳最大LVMwindowsize(默认512M),可以设置限制为3GAS3.0上3.7G以上SGA支持•修改/etc/security/limits.conf:–oraclesoftmemlock3145728–oraclehardmemlock3145728•如果是远程SSH连接–在/etc/init.d/sshd的start中增加ulimit-l3145728–在/etc/ssh/sshd_config开启UseLoginyes–重新启动sshd服务,servicesshdrestartAS3.0上3.7G以上SGA支持•修改共享内存段–echo3700000000/proc/sys/kernel/shmmax•修改init参数–use_indirect_data_buffers=true–db_block_buffers=850000AS3.0上hugetlb支持•Oracle92版本,参考补丁3318884,10g默认•直接映射的地址空间(非VLM环境)•页面由大的TLB条目支持,避免交换与分页–取ipcs的shmmax值–转换为M的单位并增加一定冗余量–echo计算值/proc/sys/vm/hugetlb_pool动态修改–如果想启动生效,可以放入/etc/rc.loacl–生效信息可以从/proc/meminfo获得怎么样编译Linux内核•清除所有的临时文件、中间件和配置文件–makemrporper•进入到源码目录/usr/src/linux-2.4/启动编译菜单选项–makemenuconfig•编译依赖关系–makedep•创建一个新的内核–makebzImage怎么样编译Linux内核•编译模块–makemodules•安装模块–makemodulesinstall•安装内核–makeinstall•清理工作–makecleanQ&A谢谢大家
本文标题:linux与oracle内核与内存技术
链接地址:https://www.777doc.com/doc-8271 .html