您的位置首页>企业动态>

linux启动优化:mdev -s

导读 大家好,我是极客范的本期栏目编辑小友,现在为大家讲解linux启动优化:mdev -s问题。Linux启动优化:mdev -s自节点创建以来已经启动了

音频解说

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解linux启动优化:mdev -s问题。

Linux启动优化:mdev -s自节点创建以来已经启动了很长时间。

标签:面向linux优化的mdev it分类:工作中遇到的问题。

近期工作中遇到的问题如下:

当linux启动后加载根文件系统时,会停留很长时间,给人一种崩溃的感觉,所以老板要求优化linux的启动时间。

第一步是通过配置linux内核给linux内核的启动打上时间戳。

make menu config-内核黑客-在打印上显示定时信息,并重新编译内核下载。

发现linux内核的启动时间在3s左右是可以接受的,主要时间是长时间停留在根文件系统,所以下面重点介绍一下根文件系统的优化。

linux内核启动结束,挂在根文件系统上,打印出来的信息如下:

[3.810000]执行/初始化失败。尝试默认值.执行完毕后,停留时间明显变长,约为5秒。在这里,我们想到在系统启动后自动加载/etc/init.d/rcs,打开rcs,并在开头添加一个print语句echo ' * * * * * * * test0 * * * * '。

用于验证、保存和重启的神奇发现未能执行/init .尝试默认值.后面是* * * * * * * * test 0 * * * * *,这充分说明了问题出现在/etc/init.d/rcs文件中,我在这个文件中的每一条指令下都添加了一个打印输出语句echo(因为文件比较小)。最后最费时间的地方是/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/hot plug是在启动时执行的,当热插拔事件发生时,内核将调用位于/sbin目录中的mdev。此时,mdev确定这个热插拔事件的action,以及/sys中的哪个目录受到环境变量中的ACTION和DEVPATH的影响(这两个变量是系统自己的)。然后,它将检查此目录中是否有“dev”属性文件,如果有,则使用此信息为此设备在/dev下创建一个设备节点文件。

由于我们的产品是在linux挂在文件系统上之后直接运行我们的应用程序(一直如此),所以我们的老板希望我们的应用程序界面尽早出现,我们的应用程序启动是在文件系统下的/etc/init.d/rcS中添加的最后一个启动脚本。但是,mdev -s必须更早出现。如果放在应用后面,就不会创建设备节点,导致应用运行异常。但是,如果应用程序被放置在后面,它将在稍后启动。(由于mdev会自动创建节点,这很耗时,如前所述),如何解决这个问题?

解决方法:

最简单的方法是,我们的应用程序必须使用的设备节点是在前面手动创建的(或者在rcS启动脚本中),其他的可以在我们的应用程序启动后由medv -s自动创建。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。