加载中…
个人资料
流苏
流苏
  • 博客等级:
  • 博客积分:0
  • 博客访问:7,315
  • 关注人气:3
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

[转载]内存的分页与交换

(2014-08-15 02:46:01)
标签:

转载

原文地址:内存的分页与交换作者:大熊
关于内存的分页与交换

看DBA Guide,有这么一句话“较大的buffer cache可以提高数据库的性能,但是,较大的buffer cache会占用更多的内存空间,而且有可能会引起内存的分页(paging)与交换(swapping)”。
我不太明白的是内存的分页与交换,请各位不吝赐教解释一下分页与交换的概念以及运作方式。谢谢。

biti:

内存除了给sga外还有其他进程或者程序使用,os 自身也会使用内存

如果 sga 使用的太多导致其他 内存需求不能获得 物理内存,自然os就产生交换,就是当进程需要内存时候发现没有可用的空闲内存,则os把一些相对空闲的内存中的信息交换到磁盘上去,从而腾出内存来给进程使用。等以后有进程需要这部分被交换出去的信息时候又从磁盘上读进内存中来。

关于内存和虚拟内存的概念,建议你读一下os相关的内容,我这里仅仅简单阐述一下

ora-600:

就是你再吃包子的时候,手里已经抓满了包子(韭菜大肉馅),结果发现盘子里面还有韭菜鸡蛋馅的(你的最爱),于是你吃着嘴里的,拿着手里的,还看着盘子里的,为了防止别人把你的包子抢走,你决定把手里的包子装到你的包包里,等到没人的时候再拿出来吃,所以本来在手里的包子如果你想吃直接就可以送到嘴里,但是为了得到那个更好吃的包子,你把手里的包子放到了你的包包里,这就是交换写出,现在你手里拿到了那个包子,可是你又想吃刚刚放到包包里的那个包子,于是你把手里这个韭菜鸡蛋馅的放到了包包里(交换出),把包包里面那个韭菜大肉馅的拿了出来(交换入)。。。如此就是交换的基本概念了。
看上去你有足够的空间得到了很多包子,但实际上只有在手上的包子才能最快的送到嘴里,而装在包包里的包子则必须每次取出后才能送到嘴里,这样处理包子的速度就明显降低,而本身交换包子的动作也增加了你自己的开销,让你不得不反复的拿出放入包子,造成你的疲劳度增加以及包包磨损程度的加剧。。。这就是你手太小,放不下你想要的包子所带来的交换,以及为此付出的代价!

好了,刚吃饱了,就随便说说,看不懂就当笑谈把。。。

http://learnlinux.tsf.org.za/courses/build/internals/ch05s03.html

Swapping

Some systems are pure swapping systems, some systems are pure paging systems and others are mixed mode systems.

Originally Unix system V was a pure swapping system.

To swap a process means to move that entire process out of main memory and to the swap area on hard disk, whereby all pages of that process are moved at the same time.

This carried the disadvantage of a performance penalty. When a swapped out process becomes active and moves from the sleep queue to the run queue, the kernel has to load an entire process (perhaps many pages of memory) back into RAM from the swap space. With large processes this is understandably slow. Enter paging.

Paging

Paging was introduced as a solution to the inefficiency of swapping entire processes in and out of memory at once.

With paging, when the kernel requires more main memory for an active process, only the least recently used pages of processes are moved to the swap space.

Therefore when a process that has paged out memory becomes active, it is likely that it will not need access to the pages of memory that have been paged out to the swap space, and if it does then at least only a few pages need to be transferred between disk and RAM.


hrb_quiry:

Oracle是架在操作系统上的,好好学习一下OS是很重要的。
较大的buffer cache可以提高数据库的性能,不过这是在一定的平衡度的,对于给Oracle多少内存的分配很大程度上取决于你的操作系统的压力(内核参数的设置,Oracle连接接,该机器是不是专做数据库服务器等)一般内存的压力在百分八十几为宜,如果内存的利用率近100%那一定会发生换页了
由于一般交换区都是设在硬盘上的,速度较慢,而且频繁的换页会加重cpu的负荷,这样的很不可取的。我们要减少PI(换入)的数量。
换页的原因简单的说就是操作系统的一种机制,把旧的不用的内存数据换到swap区,以供新的内存的需求,如果将来对那部分旧的内存数据有需要,还要把swap中的那部分数据换回到内存,即发生了PI.


附:

http://learnlinux.tsf.org.za/courses/web-courses.html

user: kr_leetaedong password: kp

 

0

  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有