linux启动优化:mdev -s自从…
转载请说明出处:http://control.blog.sina.com.cn/admin/article/article_add.php
近期工作中遇到的问题如下:
linux启动后加载根文件系统时,会停留时间很久,跟人一种死机的感觉,于是老大要求优化linux的启动时间。
先第一步做的是给linux内核启动加上时间戳,方法:配置linux内核
make menuconfig--->Kernel hacking-->show
timing information on printks选中即可,重新编译内核下载。
发现linux内核启动的时间是可以接受的在3s左右,主要时间是在根文件系统的挂在出停留时间比较久,于是下面就把中心放在根文件系统的优化上。
linux内核启动的最后是挂在根文件系统,打印信息如下:
[
3.810000] Failed to execute /init. Attempting
defaults...执行到这时明显逗留时间比较长,大概有5s左右, 有这里我们想到 系统启动后
自动加载 /etc/init.d/rcs 打开rcs,在开头加上一个打印语句echo
"*******test0****",
用来验证,保存重启,神奇的发现Failed to execute /init.
Attempting
defaults...之后紧接着出现*******test0****,这个充分说明了,问题出现在/etc/init.d/rcs文件中,我在该文件中(由于文件不大)我每条指令下加一个打印输出语句echo
"*******test1****"(一次增加)。最后终于找到最耗时间的地方是/sbin/mdev
-s,下面的问题就是如何优化它。
我们首先要了解一下mdev -s自动创建设备节点的原理和方法:请参考这篇文章
http://blog.csdn.net/hugerat/article/details/3437099
mdev扫描 /sys/class 和/sys/block中所有的类设备目录,如果在目录中含有名为“dev”的文件,且文件中包含的是设备号,则mdev就利用这些信息为这个设备在/dev下创建设备节点文件。
热插拔事件:由于启动时运行了命令:echo /sbin/mdev > /proc/sys/kernel/hotplug
,那么当有热插拔事件产生时,内核就会调用位于/sbin目录的mdev。这时mdev通过环境变量中的 ACTION
和DEVPATH,(这两个变量是系统自带的)来确定此次热插拔事件的动作以及影响了/sys中的那个目录。接着会看看这个目录中是否有“dev”的属性文件,如果有就利用这些信息为这个设备在/dev
下创建设备节点文件。
由于我们做的产品是在linux挂在文件系统后直接运行我们的应用程序(一直),所以我们boss希望我们的应用界面尽可能早的出现,我们的应用程序启动是在文件系统下/etc/init.d/rcS中的最后添加的启动脚本。但是mdev
-s出现的必须比较早,如果放在应用程序后面,会造成设备节点没创建而导致应用程序的不正常运行,但是应用放在后面吧,有启动的较晚,(由于mdev自动创建节点比较耗时,前面已经说过),那如何解决这个问题呢?
解决办法:
最简单的方式是我们应用必须用的设备节点在前面手工创建(还是在rcS启动脚本里面),对于其他的可以放在我们的应用启动后在用medv
-s自动创建。
linux启动优化:mdev -s自从…的更多相关文章
- 嵌入式Linux启动优化手记2 U…
参考一下 原文地址:U-boot优化">嵌入式Linux启动优化手记2 U-boot优化作者:ZhaoJunling 既然不能使用新的U-boot,那就优化一点是一点,慢慢干吧. 1. ...
- Linux启动时间优化-内核和用户空间启动优化实践
关键词:initcall.bootgraph.py.bootchartd.pybootchart等. 启动时间的优化,分为两大部分,分别是内核部分和用户空间两大部分. 从内核timestamp 0.0 ...
- [转载] Linux启动过程详解-《别怕Linux编程》之八
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket.为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. = ...
- Android内核开发:系统启动速度优化-Android OS启动优化(转)
Android系统的启动优化主要分为三大部分: (1) Bootloader优化 (2) Linux Kernel的剪裁与优化 (3) Android OS部分的剪裁与优化 本文重点关注Android ...
- Linux 启动参数介绍
Linux 启动参数介绍 取自2.6.18 kernel Documentation/i386/boot.txt 文件中介绍 vga= 这里的不是一个整数(在C语言表示法中,应是十进制,八进制或者十六 ...
- 记录Linux启动流程的工具bootchart
/********************************************************************* * Author : Samson * Date ...
- 【转】嵌入式Linux启动配置文件及脚本
原文网址:http://blog.csdn.net/shuaishuai80/article/details/6202497 使用Busybox制作根文件系统时,/etc目录非常重要,它包含了嵌入式L ...
- 嵌入式Linux启动配置文件及脚本分…
使用Busybox制作根文件系统时,/etc目录非常重要,它包含了嵌入式Linux启动所需的配置文件及脚本.由于init进程,或者说linuxrc程序会解析inittab文件,因此就从/etc/ini ...
- Linux启动过程笔记
Linux启动过程 1.启动流程(BIOS->MBR:Boot Code->引导GRUB->载入内核->运行init->runlevel) 2./boot/grub/下有 ...
随机推荐
- Android 中的BroadCastReceiver
BroadCastReceiver 简介 (末尾有源码) BroadCastReceiver 源码位于: framework/base/core/java/android.content.Broadc ...
- New Concept English three (37)
28 words/minute 44 typing errors We have learnt to expect that trains will be punctual. After years ...
- 开源项目Universal Image Loader for Android 说明文档 (1) 简介
When developing applications for Android, one often facesthe problem of displaying some graphical ...
- Win7系统64位环境下使用Apache——Apache2.4版本安装及卸载
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/70255992 本文出自[我是干勾鱼的博客] 之前在Win7系统64位环境下使用A ...
- 51nod 1995 三子棋
小的时候大家一定玩过“井”字棋吧.也就是在九宫格中,只要任意行.列,或者任意连续对角线上面出现三个相同的,就能获胜.现在小明和小花也在玩三子棋,但是他们不是在九宫格里,而是在3×4的格子里面.现在小明 ...
- Spring IOC容器的初始化-(二)BeanDefinition的载入和解析
前言 1.在讲BeanDefinition的载入和解析之前,我们先来看看什么是BeanDefinition. Bean对象在Spring中是以BeanDefinition来描述的,也就是说在Sprin ...
- django的manytomany总结
from django.db import models class Blog(models.Model): name = models.CharField(max_length=100) tagli ...
- QLCDNumber设置背景色和显示数字颜色【转载】
http://www.qtcn.org/bbs/read-htm-tid-55176.html //LCD时间显示 QLCDNumber *m_pLcdTime = new QLCDNumber ...
- bzoj 3796 Mushroom追妹纸——后缀数组
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3796 长度一般都是 1e5 ,看这个是 5e4 ,一看就是把两个串接起来做. 自己本来想的是 ...
- 2、通过HBase API进行开发
一.将HBase的jar包及hbase-site.xml添加到IDE 1.到安装HBase集群的任意一台机器上找到HBase的安装目录,到lib目录下下载HBase需要的jar包,然后再到conf目录 ...