Linux系统中一些针对文件系统的节能技巧
际的读操作.同样在需要写文件时,写操作也只是将内容存放于 Page Cache 中,而 Page Cache 中的更改内容由内核进程 pdflush 周期性的写回磁盘.在默认情况下,pdflush 进程每 5 秒钟醒来一次,进行数据写回操作.这个写回时间值定义在参数 /proc/sys/vm/dirty_writeback_centisecs中.如果在这 5 秒钟之间,发生电源故障或者系统崩溃,可能会引起数据丢失.如果用户的电源供应比较可靠,或者丢数据丢失的风险不是非常在意,可以适当的提高这个数据写回时间.使用如下命令查看系统当前的写回时间值:
cat /proc/sys/vm/dirty_writeback_centisecs 500 此时间值的单位为 1/100 秒.使用如下命令可以更改此值: echo 2000 > /proc/sys/vm/dirty_writeback_centisecs 这样,就可以使 pdflush 进程 20 秒才醒来一次,从而减少对磁盘的访问频率. 还有一个参数 /proc/sys/vm/dirty_expire_centisecs控制一个更改过的页面经过多长时间后被认为是过期的、被写回的页面,其默认值是 3000(单位也是 1/100 秒).用户也可以适当的增加此值,使页面更长时间的驻留在内存中.如下命令: echo 4000 > /proc/sys/vm/dirty_expire_centisecs pdflush 进程处理的另一种情况是当可用内存量降低的时候,会将一些缓冲页面写回磁盘,释放内存.这个行为是受 /proc/sys/vm/dirty_background_ratio参数控制的,此参数的默认值为 10,意思是当所有被更改页面总大小占工作内存超过 10% 时,pdflush 会开始写回工作.用户可以增加这个比例,以增加页面驻留在内存的时间.此参数的更改方法同上面两个参数.
Swap 分区或文件 在默认情况下,Linux 内核并不是只有在物理内存不够用的时候才进行交换,而是为了保证尽量大的磁盘缓冲以及其他一些原因,会尽可能的将非活动的进程及内存页面交换出内存,放在磁盘上的交换分区中.这种默认行为在还有大量内存可用的情况下,就会发生交换操作,而释放出的物理内存并没有被利用起来,显然这些交换操作是不必要的.为了减少因交换引起的磁盘读写,在用户内存足够大的时候,可以考虑禁用 swap 分区. 使用“笔记本模式”(laptop mode) 在 2.6.6 以后,Linux 内核在 I/O 系统上支持一种“笔记本模式”.在“笔记本模式”下,内核更智能的使用 I/O 系统,它会尽量使磁盘处于低能耗的状态下.“笔记本模式”会将许多的 I/O 操作组织在一起,一次完成,而在每次的磁盘 I/O 之间是默认长达 10 分钟的非活动期,这样会大大减少磁盘启动的次数.为了完成这么长时间的非活动期,内核就要在一次活动期时完成尽可能多的 I/O 任务.在一次活动期间,要完成大量的预读,然后将所有的缓冲同步.在非活动期间,写操作会被阻挡在内存中(读操作如果无法在 Cache 中满足,则无法阻挡,用户无法忍受这么长时间的延迟).“笔记本模式”会根据需要设置上节介绍的参数来达到适当的目的. 使用如下命令查看“笔记本模式”是否启用: cat /proc/sys/vm/laptop_mode 0 0 表示没有启用,可以使用如下命令启用: echo 5 > /proc/sys/vm/laptop_mode 配置 syslog Linux 使用 syslog 记录内核和各种应用程序的日志信息.Linux 系统里存在一个 Daemon 进程 syslogd 或 sysklogd 来完成 syslog 的功能.默认设置下,syslogd 在每次记录一条日志后,都会使用同步(sync)操作强制将页面缓存同步到磁盘上.这样做是为了保证日志信息得到最大的保护,即使系统崩溃或电源故障,日志信息可以最大可能的被写到了磁盘上. 但是在个人电脑等对日志信息要求不是如此严格的系统上,这些 sync 操作很耗费磁盘 I/O,同时耗费更多的电量.如果想禁止 syslog 的这种 sync 行为,需要修改 syslog 配置文件 /etc/syslog |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |