ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 资源供给:再谈内存和虚拟内存

资源供给:再谈内存和虚拟内存

原创 Linux操作系统 作者:sunsapollos 时间:2013-11-10 21:33:28 0 删除 编辑

     简单案例描述:
     某客户业务系统一直运行正常,突然之间业务系统急剧变慢,数据库体现大量的buffer busy waits,部分cache buffer chain,操作系统表现出页面交换,内存吃紧。原因很简单,有人发起了一和大文件的ftp操作,消耗了大量内存。类似的事件也很多会如此表现,比如Oracle由于故障做了大数据量的Core Dump。最终都会导致类似事件,在Oracle端的响应基本是buffer busy waits,cache buffer chian,甚至会出现free buffer waits等事件。

     导致上述原因的根本在于虚拟内存中的文件系统缓存页设置,设置了过高的值,导致大量的内存被文件页所消耗,导致内存不足,形成内存交换。

   合理的文件系统缓存页面设置:
   Oracle在文件系统中会采取buffer read,但对于写总是采用write through,也就是说必须写到磁盘里才认为写完成,会忽略文件系统缓存。Oracle在ASM和裸设备环境下都不会执行buffer read,也就是文件系统的缓存对于Oracle不起作用。在一个数据库服务器上,其主体业务应该是Oracle数据库,绝大部分的资源应该被Oracle所使用,也就是说牺牲其他非数据库目的来完成数据库业务的高性能。从这个角度考虑,文件系统缓存在Oracle数据库中都应该处于一个比较低的水准线,比如设置为5%左右,而不是缺省的50%或者80%。

   页面交换空间的性能
   页面交换空间的性能如果不好,会直接导致操作系统内存交换到页面的速度降低,间接使操作系统获取自由空间的效率变低,干扰内存操作效率。在很多场合下,交换空间的性能是完全不可扩展的,只是在内置磁盘上开辟一个区域。想象一下,当大量的其他IO作用于交换空间所在磁盘的时候,会导致交换空间性能大幅度下跌,其直接的后果就是导致内存操作效率降低,从而影响业务系统性能。比如说:Oracle Dump,OS Dump等等,从这里来看,大家可以看到,应该使交换空间区域处于独立磁盘区域,虽然其对于性能要求不是很高,但也不能被完全的冲击。


   页面交换空间的大小:
   虚拟内存的最终大小为页面交换空间的大小,当页面交换耗尽的时候,系统将无内存可用,整个服务器将会被Hang,所有的操作将挂起。合理的页面交换空间大小是必须的,而且应该是大些好,似乎大除了消耗些磁盘空间,没有其他的坏处。

   内存效率是服务器运行的基本保证,内存效率低下会导致所有业务受到影响,除了普通的业务性能降低之外,这里举些更加严重的例子:
  (1)、Listener的连接速度将会非常慢,其派生进程速度极慢,甚至无法派生。
  (2)、RAC Instance会经常性挂起。

   计算页和文件页:
   前面说了,文件系统的缓存对于Oracle的收益比较小,Oracle的内存系统都属于计算页,也就是说在Oracle环境下,应该只有在迫不得已的情况下才交换计算页,总是应该首先交换文件页,并且使文件页在总内存消耗中处于比较低的水位。

   文件系统缓存在何时会发生作用:
   文件系统缓存对于Oracle发生作用,最主要的在于全表扫描操作,由于全表扫描的特性,使表格数据很难在Buffer CACHE中被缓存,这个时候如果在文件系统缓存中包含该数据,全表扫描的效率将会大幅度提高。至于索引扫描,文件系统缓存生效的效率很低,不如把这部分内存分配给Buffer Cache使其直接被查询到,除非你的Buffer Cache已经导致了Oracle的管理成本急剧上升,效率下降,才会考虑把随机读需要的缓存分配到文件系统缓存中。

   内存段大小和数量
   一个OS有多少内存可以用,不仅仅是取决于有多少物理内存,还取决于设置的内存段大小和数量,最大可用的总内存:=shmax*shseg
 
   内存运算的速度:
   内存运算的速度往往在10ns左右,不过这个速度在实际中几乎很难看到,我们在Oracle中的LIO不仅仅是简单的内存读,应该还包含很多其他的东西,包括分配,调度等等。通过在实际系统的验证基本在1~20微妙之间,比较磁盘系统的几ms,差距还是很明显的,有几百到几千倍的差距,大家如果发现内存运算速度明显上升到几百甚至到ms的级别,那必然是内存系统出现了问题,或者配置问题或者内存本身出现了问题。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/92650/viewspace-776253/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
专注于Oracle,BI,Security,DR &^BCP,Performance tuning

注册时间:2013-10-15

  • 博文量
    68
  • 访问量
    725107