linux操作系统是典型的机制和策略相分离的系统,机制和策略一直是设计领域一直关注的重要问题,它们的结合程度直接关系到系统的稳定性和可扩展性。今天做了一个linux上膝上电脑的电源管理的脚本,颇有感触,故写此文。

对于膝上电脑,最大的特点就是靠电池供电,而电脑最耗电的就是机械装置,比如磁盘,因此如何使得磁盘效率最高就是操作系统的任务了,磁盘调度算法当然是最 重要的,可是本文不讨论它们。操作系统如果想提供省电模式,可以直接在内核实现一系列的策略,然后用户选择膝上电脑模式或者系统自动监测到电池的时候切换 到相应的磁盘模式,这个实现看似职能,实际上很不好,极大的限制了用户。linux的策略和机制是分离的,因此,体现到这个事情上也是如此。

linux内核有着非常强大的磁盘缓存机制,就是磁盘数据先不往磁盘直接读写而是直接操作缓存,待到一定条件满足的时候才读写磁盘,大致有几个参 数:1.dirty_writeback_cenTIsecs,这个参数表示内核刷新缓存的时间间 隔;2.dirty_expire_cenTIsecs,这个参数表示一个inode在dirty状态停留的最长时间;3.laptop_mode,这个 参数表示是否为膝上电脑模式。系统根据以上参数动态调整磁盘刷新的行为,如果为膝上电脑模式,那么我们需要让磁盘尽量少的走走停停,就是说将脏缓存页面积 累到一定程度,然后一次性写入磁盘而不是像pc机那样小间隔的唤醒pdflush,这样的话可以让磁盘的效率更高,因此我们理所当然的要在 laptop_mode参数为1的时候调整上面提到的另外两个参数,很早以前我想当然的以为内核在监测到laptop_mode为1时会动态调整那两个参 数,可是我没有找到代码,当我知道linux的机制和策略相分离的时候,我才明白,linux内核是不管那种事的,如果管的话,它怎么管,它知道调整到具 体哪个值吗?如果按照所有的可能来个switch-case的话,内核的大小就要增加好几倍了,windows一直都以大而著称,就是因为它的内核实现好 多的策略,而这些策略是可以在用户空间微调的,比如,针对上述问题我可以写一个脚本:

...

if [ ! -w /proc/sys/vm/laptop_mode ]; then

exit 1

fi

case "$1" in

laptop)

echo "1"    > /proc/sys/vm/laptop_mode

echo 参数1    > /proc/sys/vm/dirty_writeback_cenTIsecs

echo 参数2    > /proc/sys/vm/dirty_expire_cenTIsecs

echo 参数3    > /proc/sys/vm/dirty_ratio

echo 参数4    > /proc/sys/vm/dirty_background_ratio

...

non-laptop)

echo "0"    > /proc/sys/vm/laptop_mode

echo 参数1-1    > /proc/sys/vm/dirty_writeback_centisecs

echo 参数2-2    > /proc/sys/vm/dirty_expire_centisecs

echo 参数3-3    > /proc/sys/vm/dirty_ratio

echo 参数4-4    > /proc/sys/vm/dirty_background_ratio

...

这 里的“参数X”是可以微调的,看到了吧,多么灵活!linux就像一个布满微调按钮的机器,或者是一个按键十分丰富的控制台,初接触的人往往望而生畏,因 为它太复杂了,几乎什么都可以微调,可以做成任何你需要的系统,而不像别的操作系统,比如windows,什么都为你做好,你只要选择就可以了,是的,选 择模式固然很方便,但是却十分不灵活,很多功能你要想实现要费尽周折,这就是为何windows非常大,功能却很有限,linux小,功能却很丰富的原 因。

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯

收藏

人收藏

分享:

评论

发表

相关推荐

Linux看硬盘同步,从磁盘同步看linux的机制和策略相关推荐

  1. linux系统下集群共享磁盘sdb分区,Linux下的两种磁盘分区工具的使用

    今天我们来说一下如何使用fdisk和parted分区工具来进行硬盘分区,.下面我来说一下在Linux系统中这两种硬盘分区工具的使用方法: ----------fdisk分区工具---------- 在 ...

  2. linux查看硬盘smart_Linux检测磁盘坏道工具用什么命令

    请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. badblock命令简介 badblock命令用于查找磁盘中 ...

  3. 深度linux 挂载硬盘,Deepin 深度磁盘挂载

    Deepin 磁盘挂载 看到我的终端式英文不用惊奇,我也不知道怎么会这样,但是这也不影响我们要做的事情. 1. 查看当前磁盘情况 使用 df -h 查看磁盘情况 Filesystem Size Use ...

  4. linux系统硬盘数据恢复软件下载,R-Linux|R-Linux(linux数据恢复软件)下载 v5.1中文免费版 - 121下载站...

    R-Linux是一款界面简洁实用的linux分区数据恢复工具,这款工具需要运行于windows平台,然后选择linux的相关分区就可以扫描恢复了,支持Ext2.Ext3.Ext4 FS文等文件系统,可 ...

  5. linux中如何新建一个磁盘,如何在Linux操作系统中新建磁盘分区

    判断虚拟机初始化磁盘的容量大小. 小于2TB时请执行步骤 2. 大于等于2TB时请执行步骤 21. 登录虚拟机,在操作系统桌面上单击右键,选择"打开终端",进入命令行界面. htt ...

  6. linux备份磁盘数据,linux下vmstat输出数据分析-linux下dd命令备份磁盘的节点(...-linux watch命令用法简介(图文)_169IT.COM...

    Linux下vmstat命令的输出,对应着很多选项,有的朋友不是很明白. 下面为大家作详细的分析,如下: Vmstat procs -----------memory---------- ---swa ...

  7. linux ghost 硬盘备份系统,使用ghost对linux进行系统备份

    准备步骤: 1.下载软件: 软件发布地址: http://sourceforge.net/projects/g4l 软件下载地址: http://jaist.dl.sourceforge.net/so ...

  8. 机械硬盘大比拼,矿工必看

    作 者丨冷波 文章来源丨www.ipfs.cn 原文地址丨http://www.ipfs.cn,IPFS中国社区 · 在企业级存储市场中,结构化数据的存储很快就会是SSD的天下,机械硬盘(HDD)会逐 ...

  9. ❤Linux文件、目录与磁盘格式总结❤

    文章目录 Linux文件.目录与磁盘格式总结 Linux文件权限 chgrp chmod chown 文件种类 Linux文件扩展名 Linux文件与目录管理 常用的目录解释 目录树 绝对路径与相对路 ...

最新文章

  1. Swift 闭包表达式
  2. 高级Android开发面试汇总
  3. 温故之 “快速排序”
  4. @Autowired所有的东西!
  5. Go 语言基础(三)——基本数据类型
  6. 通过python读取ini配置文件
  7. SAP 下载CSV文件到本机(SAP_CONVERT_TO_TEX_FORMAT)(示例代码) <转载>
  8. 综述: 通信雷达一体化中的信号处理
  9. CISCO模拟器综合应用
  10. 我们盘点了7家财税SaaS平台,深入解读财税SaaS AB面
  11. 贷款综合管理系统搭建-全流程智能、高效、安全管理解决方案
  12. 2022年最该收藏的8个数据分析模型
  13. c语言动态开辟数组(一维与二维)
  14. 单片机毕业设计 stm32万能红外遥控器
  15. php if为空那么,PHP中判断数组是否为空的方法
  16. android应用前端,Android应用开发之浅谈移动前端适配
  17. 如何让读者看完公众号文章后关注你?做好这几点
  18. [软件人生]外包兼职与绝路
  19. 推荐学习方向及就业方向
  20. python中合法的八进制_Python 八进制

热门文章

  1. js ---- 对象转JSON,JSON转对象
  2. vue ---- webpack -插件 html-webpack-plugin
  3. java集合的存储特征_Java集合常用类特点整理
  4. 根据线程名获取线程及停止线程
  5. mysql触发器不能alter
  6. Mybatis中出现java.sql.SQLException: 无效的列类型: 1111
  7. Android开发笔记(一百五十九)Android7.0的分屏模式
  8. Android开发笔记(三十一)SQLite游标及其数据结构
  9. Android开发笔记(二十二)瀑布流网格WaterfallGridView
  10. swoole 固定包头格式