快速业务通道

Linux内存中Swap和Buffer Cache机制

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-17
入磁盘(当然,数据也被放入缓存中).如果写操作是在以后做的,那么该缓存被称为后台写(write-back).后台写比直接写更有效,但也容易出错:如果机器崩溃,或者突然掉电,缓冲中改变过的数据就被丢失了.如果仍未被写入的数据含有重要的薄记信息,这甚至可能意味着文件系统(如果有的话)已不完整.

  针对以上的原因,出现了很多的日志文件系统,数据在缓冲区修改后,同时会被文件系统记录修改信息,这样即使此时系统掉电,系统重启后会从日志记录中恢复数据,保证数据不丢失.当然这些问题不再本文的叙述范围.

  上述原因,在使用适当的关闭过程之前,绝对不要关掉电源,sync命令倾空(flushes)缓冲,也即,强迫所有未被写的数据写入磁盘,可用以确定所有的写操作都已完成.在传统的UNIX系统中,有一个叫做update的程序运行于后台,每隔30秒做一次sync操作,因此通常无需手工使用sync命令了.Linux另外有一个后台程序,bdflush,这个程序执行更频繁的但不是全面的同步操作,以避免有时sync的大量磁盘I/O操作所带来的磁盘的突然冻结

  在Linux中,bdflush是由update启动的.通常没有理由来担心此事,但如果某些原因bdflush进程死掉了,内核会对此作出警告,此时你就要手工地启动它了(/sbin/update).

  缓存(cache)实际并不是缓冲文件的,而是缓冲块的,块是磁盘I/O操作的最小单元(在Linux中,它们通常是1KB).这样,目录、超级块、其它文件系统的薄记数据以及非文件系统的磁盘数据都可以被缓冲了.

  缓冲的效力主要是由它的大小决定的.缓冲太小的话等于没用:

  它只能容纳一点数据,因此在被重用时,所有缓冲的数据都将被倾空.实际的大小依赖于数据读写的频次、相同数据被访问的频率.只有用实验的方法才能知道.

  如果缓存有固定的大小,那么缓存太大了也不好,这会空闲的内存太小而导致进行交换操作(这同样是慢的).为了最有效地使用实际内存,Linux自动地使用所有空闲的内存作为高速缓冲,当程序需要更多的内存时,它也会自动地减小缓冲的大小.

  这就是一般情况下Linux内存的一般机制,当然Linux内存的运行机制远远比这个复杂,但是只有了解了这个机制,我们管理服务器才能得心应手!

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号