首页 > Linux操作系统 > Linux操作系统 > 11g AMM和/dev/shm
从11g开始支持AMM即自动内存管理,该功能需要用到/dev/shm
以前对此了解甚少,搜罗一些相关资料作如下总结:
什么是tmpfs
tmpfs是一种基于内存的文件系统,类似oracle的buffer cache,当OS经历大量的I/O读写操作时,可以显著提高性能;
默认情况下,tmpfs会mount到/dev/shm目录。
为防止tmpfs使用了全部VM,有时候要限制其大小。要创建一个最大为32 MB的tmpfs文件系统,键入:
# mount tmpfs /dev/shm -t tmpfs -o size=32m
添加到 /etc/fstab,应该是这样:
tmpfs /dev/shm tmpfs size=32m 0 0
tmpfs相对于ramfs而言,增加了几项功能,如size limit,交换分区支持等等。 tmpfs可以通过 "mount -o remount size=..."来在线调整大小;当该文件系统的文件数 太多,Size不够的时候,还可以将一些暂时不用的文件SWAP到交换分区上去,因此比 Ramfs更加灵活。
Linux文件系统中的某些目录,诸如:/tmp, /var/tmp等等用来存放临时文件,因此我们 可以将tmpfs挂载到这些目录中,这样一来一旦系统关机,这些临时文件都会统统消失, 不会再系统中留下无用文件。此外,现在的很多软件可能会通过共享内存的方式来进行 IPC,近期的Linux内核可以通过将tmpfs挂载到/dev/shm,从而通过/dev/shm来提供共享 内存。
什么是/dev/shm
/dev/shm 是linux下的一块共享内存结构(是TMPFS类型)。默认最大为内存的一半大小.其实它的实际大小可以设置为(物理内存的一半+swap).好多人都把它和swap给混淆了,这是两个不同的概念.但它并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节;如果它最大为1G,里头放有100M文件,那剩余的900M仍然可为其它应用程序所使用,但它所占用的100M内存,是绝不会被系统回收重新划分的。
/dev/shm用来存储进程间通讯时的一些共享数据结构..例如Oracle11G的ASMM(Automatic Shared Memory Management)就用/dev/shm进行通讯和数据共享. DBA在进行11G配置时需要考虑MEMORY_MAX_TARGET和MEMORY_TARGET参数不能大于/dev/shm.否则在数据库启动时有可能会产生ORA-00845.
/dev/shm通常在物理内存足够时,会在内存中进行数据交换,如果物理内存缺乏时,会用swap进行数据交换. 支持动态在线调整.在我们需要时可以增加或缩减它的大小.
注意事项
配置时必须满足memory_max_target <= /dev/shm,否则启动时会报告ora-00845错误;
因为每个后台进程都需要访问/dev/shm文件,必须对oracle用户分配足够多的文件描述符,否则会出现ora-27123错误;
若使用dedicated方式连接,每个客户端连接也都需要访问/dev/shm下的共享内存段,即至少需要memory_target/granule size个文件描述符,且还需要相应datafile的文件描述符,直到连接退出才释放;
验证
开启oracle之前,/dev/shm为空
$ ls -l /dev/shm
total 0
$ lsof -n | grep /dev/shm
启动oracle后
SQL> show parameter memory_target
NAME TYPE VALUE
-------------- ----------- ------
memory_target big integer 808M
SQL> show parameter memory_max_target
NAME TYPE VALUE
----------------- ------------- ------
memory_max_target big integer 808M
再次检查/dev/shm
UNIX> ls -l /dev/shm/* | wc -l
203
UNIX> lsof -n | grep /dev/shm | wc -l
4872
/dev/shm目录下只有203个文件,却生成了4872个文件描述符;两者分别遵循以下公式
文件数目=memory_target/granule size(4M)=808/4 =203;
文件描述符=文件数目*后台进程数 = 203*24=4872
注:pga不会存储于/dev/shm
http://blog.oracle48.nl/oracle-11g-amm-memory_target-memory_max_target-and-dev_shm/
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15480802/viewspace-720689/ ,如需转载,请注明出处,否则将追究法律责任。