CN104090783A - 利用启动加速器提高Linux服务器启动速度的方法 - Google Patents
利用启动加速器提高Linux服务器启动速度的方法 Download PDFInfo
- Publication number
- CN104090783A CN104090783A CN201410229283.7A CN201410229283A CN104090783A CN 104090783 A CN104090783 A CN 104090783A CN 201410229283 A CN201410229283 A CN 201410229283A CN 104090783 A CN104090783 A CN 104090783A
- Authority
- CN
- China
- Prior art keywords
- kernel
- linux
- acceleration
- module
- starting device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种利用启动加速器提高Linux服务器启动速度的方法,包括启动加速器通过其上的网卡读取目标Linux服务器群上的启动配置文件和内核源码文件,并传给启动加速器上的启动加速处理模块;以及启动加速器模块将自动定制该内核的源码文件,使其能够在启动时,不再向日志文件中写日志,并且,在启动结束后,能够恢复日志输出,用于满足用户调试程序时,查看Linux内核日志的需求。上述方法,其可在无需人工干预下,自动完成多台Linux服务器的优化;能够进一步减少Linux内核在启动时的输出操作,并且不影响启动后Linux内核的正常信息的输出;且能够对Linux内核达到函数级的裁减,进一步压缩内核。
Description
技术领域
本发明涉及Linux服务器领域,具体涉及一种利用启动加速器提高Linux服务器启动速度的方法。
背景技术
目前,主要通过屏蔽输出的方法提高Linux服务器的启动速度,亦即通过用户手动向Linux传递quiet参数,quiet参数是Linux内核中固有的参数,具体方法是编辑类似于grub.conf等启动配置文件,并在该启动配置文件中加载Linux内核的那条语句的末端添加“quiet”参数。对于削减内核大小的方法,目前采用的也是手动通过make menuconfig,并在出现的模块配置屏幕上,逐一配置所需要的模块,去除无用的模块。
采用向Linux内核传递quiet参数屏蔽输出的方法要求用户有较高的Linux系统优化知识,而对于大量的普通用户而言,这是难以实现的。同时,用户手动操作对系统进行优化,极为耗时,特别是当需要对多台(如上百台)Linux服务器进行优化时,将耗费用户的大量时间。另外,quiet参数虽然会使屏幕上不再有任何输出,但还会向日志文件中写入启动日志,导致依然耗费较大的启动时间。
而通过make menuconfig的方法削减Linux内核大小方法,除存在要求用户有较高的Linux系统优化知识以及需用户手动操作缺陷以外,它还只能做到内核模块级裁减,不能做到内核函数级的裁减,导致内核仍然存在着一些不必要的函数,增加了内核的体积。因此,有必要提出新的提高Linux服务器启动速度的方法。
发明内容
本发明的目的在于提供一种利用启动加速器提高Linux服务器启动速度的方法,其可有效提高Linux服务器的启动速度。
为实现上述目的,本发明采用如下技术方案进行实施:
一种利用启动加速器提高Linux服务器启动速度的方法,具体操作如下:
S1:启动加速器通过网络与目标Linux服务器群相连接;
S2:启动加速器通过其上的网卡读取目标Linux服务器群上的启动配置文件和内核源码文件,并传给启动加速器上的启动加速处理模块;
S3:启动加速器模块将自动定制该内核的源码文件,使其能够在启动时,不再向日志文件中写日志,并且,在启动结束后,能够恢复日志输出,用于满足用户调试程序时,查看Linux内核日志的需求;
S4:启动加速处理模块处理完毕后,将优化后的内核通过启动加速其上的网卡上传给服务器,从而完成优化。
其中,
步骤S2中启动加速器模块还会通过编译工具,为Linux内核生成一张函数调用图,并针对上层应用,去除那些不需要的函数及其相关函数调用。
更为具体的方案为:
启动加速处理模块包括内核输出屏蔽模块12、输入输出模块11和冗余函数裁减模块13;
启动加速器通过输入输出模块11上的网卡接口对目标Linux服务器的内核源码以及grub配置文件进行读取,并将读取结果传给内核输出屏蔽模块12;
内核输出屏蔽模块12将定位内核printk函数的位置,为printk函数添加全局标志位;
内核输出屏蔽模块12处理完毕之后,将源码传给冗余函数裁减模块13处理,冗余函数裁减模块13将产生Linux内核函数调用关系图,然后再依据上层应用所使用的系统调用,去除那些上层应用不用的系统调用;
得到上述优化后的内核后,再修改grub配置文件,为内核传递quiet参数,并将上述优化后的内核和grub配置文件上传到目标Linux服务器上编译生成新的内核完成优化。
关系图通过关系型数据库进行存储。
采用上述方法提高Linux服务器的启动速度存在如下优点:
1、无需人工干预,自动完成多台Linux服务器的优化;
2、能够进一步减少Linux内核在启动时的输出操作,并且不影响启动后Linux内核的正常信息的输出;
3、能够对Linux内核达到函数级的裁减,进一步压缩内核。
附图说明
图1为启动加速器与目标服务器连接示意图;
图2为启动加速器的结构示意图。
具体实施方式
为了使本发明的目的及优点更加清楚明白,以下结合实施例对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明采取的技术方案如图1所示,利用启动加速器提高Linux服务器启动速度的方法,具体操作为:
首先启动加速器通过网络与目标Linux服务器群相连。
启动加速器通过其上的网卡读取目标Linux服务器群上的启动配置文件和内核源码文件,并传给启动加速器上的启动加速处理模块
启动加速器模块将自动定制该内核的源码文件,使其能够在启动时,不再向日志文件中写日志,并且,在启动结束后,能够恢复日志输出,以满足用户调试程序时,查看Linux内核日志的需求。此外,启动加速器模块还会通过编译工具,为Linux内核生成一张函数调用图,并针对上层应用,去除那些不需要的函数及其相关函数调用。从而进一步地缩小了内核的体积
启动加速处理模块处理完毕后,将优化后的内核通过启动加速其上的网卡上传给服务器,从而完成优化。
更为具体的操作为:启动加速处理模块包括内核输出屏蔽模块12、输入输出模块11和冗余函数裁减模块13,如图2所示。
启动加速器通过输入输出模块11上的网卡接口对目标Linux服务器的内核源码以及grub配置文件进行读取。并将读取结果传给内核输出屏蔽模块12。
内核输出屏蔽模块12将定位内核printk函数的位置,为printk函数添加全局标志位:NOOUTPUT,初值置为1,然后将printk修改为:
并在Linux内核完成初始化后将该flag位置0,然后,定位init进程启动位置,并在启动init之前插入语句NOOUTPUT=0。
内核输出屏蔽模块12处理完毕之后,将源码传给冗余函数裁减模块13处理,冗余函数裁减模块13将产生Linux内核函数调用关系图。然后再依据上层应用所使用的系统调用,去除那些上层应用不用的系统调用。为了能够迅速定位这些函数调用关系,该关系图通过关系型数据库进行存储。
现以一例具体说明如何进行裁减:
在内核中,mlock系统调用的服务函数会以sys_mlock()命名。通过分析上层应用的代码,得知上层没有任何一个应用会调用sys_mlock()函数,所以,可以考虑裁掉sys_mlock。但除应用程序外,内核其他部分也有可能调用系统调用的服务函数sys_mlock()。因此,mlock系统调用能否被裁减还取决于sys_mlock()在内核中被引用的情况。所以,此时利用导入数据库的函数调用关系信息,查找sys_mlock()在内核中被引用的位置,发现sys_mlock()函数没有被内核其他部分引用,因而可以裁减。
当系统调用服务函数sys_mlock()确定可以被裁减后,除sys_mlock()函数本身,内核中还可能会存在仅为支持mlock系统调用而实现的函数,这一类函数也需要被裁剪。
找到这类函数的方法是:列出sys_mlock()调用的所有函数,逐个分析,确定仅被sys_mlock()使用的函数,这类函数一般会以do_mlock()或do_mlock_xxx()命名。这样,就可以确定所有需要被裁剪的内核函数。
具体过程是:扫描源码并结合函数调用关系图就可得到sys_mlock()函数的运行流程及对其他函数的调用情况。如下:
long sys_mlock(unsigned long start,size_t len)
{
detetmine the capability to lock;
down_write()
->acpuire the mmap lock of current task
calculate the lock start and len in pages;
determine whether locked memory exceed the lock limit;
do_mlock()
->for each vma in locked area
->mlock_fixup()
->add the vma flag VM_LOCKED
->make pages of vma present
up_write()
->release the mmap lock of current task
return lock result;
}
然后,通过上述信息,列出sys_mlock()函数调用的所有函数,逐个分析:上述各函的含义具体如表所示;
表1为各函数的具体含义
down_write() | 信号量获取函数,内核中存在大量引用 |
do_mlock() | mlock的实现函数,仅被sys_mlock引用 |
mlock_fixup() | do_mlock的实现函数,内核其他位置还会被引用 |
up_write() | 信号量释放函数,内核中存在大量引用 |
得出以下结论:裁剪sys_mlock()函数的同时,do_mlock()函数可以被裁减。然后将sys_mlock和do_mlock从内核源码中移去。
得到上述优化后的内核后,再修改grub配置文件,为内核传递quiet参数。并将上述优化后的内核和grub配置文件上传到目标Linux服务器上编译生成新的内核完成优化。
总之,本发明提供的上述方法,其可在无需人工干预下,自动完成多台Linux服务器的优化;能够进一步减少Linux内核在启动时的输出操作,并且不影响启动后Linux内核的正常信息的输出;且能够对Linux内核达到函数级的裁减,进一步压缩内核。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (4)
1.一种利用启动加速器提高Linux服务器启动速度的方法,具体操作如下:
S1:启动加速器通过网络与目标Linux服务器群相连接;
S2:启动加速器通过其上的网卡读取目标Linux服务器群上的启动配置文件和内核源码文件,并传给启动加速器上的启动加速处理模块;
S3:启动加速器模块将自动定制该内核的源码文件,使其能够在启动时,不再向日志文件中写日志,并且,在启动结束后,能够恢复日志输出,用于满足用户调试程序时,查看Linux内核日志的需求;
S4:启动加速处理模块处理完毕后,将优化后的内核通过启动加速其上的网卡上传给服务器,从而完成优化。
2.如权利要求1所述的利用启动加速器提高Linux服务器启动速度的方法,其特征在于,步骤S2中启动加速器模块还会通过编译工具,为Linux内核生成一张函数调用图,并针对上层应用,去除那些不需要的函数及其相关函数调用。
3.如权利要求1或2所述的利用启动加速器提高Linux服务器启动速度的方法,其特征在于:
启动加速处理模块包括内核输出屏蔽模块、输入输出模块和冗余函数裁减模块;
启动加速器通过输入输出模块上的网卡接口对目标Linux服务器的内核源码以及grub配置文件进行读取,并将读取结果传给内核输出屏蔽模块;
内核输出屏蔽模块将定位内核printk函数的位置,为printk函数添加全局标志位;
内核输出屏蔽模块处理完毕之后,将源码传给冗余函数裁减模块处理,冗余函数裁减模块将产生Linux内核函数调用关系图,然后再依据上层应用所使用的系统调用,去除那些上层应用不用的系统调用;
得到上述优化后的内核后,再修改grub配置文件,为内核传递quiet参数,并将上述优化后的内核和grub配置文件上传到目标Linux服务器上编译生成新的内核完成优化。
4.如权利要求3所述的利用启动加速器提高Linux服务器启动速度的方法,其特征在于:关系图通过关系型数据库进行存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410229283.7A CN104090783B (zh) | 2014-05-22 | 2014-05-22 | 利用启动加速器提高Linux服务器启动速度的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410229283.7A CN104090783B (zh) | 2014-05-22 | 2014-05-22 | 利用启动加速器提高Linux服务器启动速度的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104090783A true CN104090783A (zh) | 2014-10-08 |
CN104090783B CN104090783B (zh) | 2017-05-03 |
Family
ID=51638502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410229283.7A Expired - Fee Related CN104090783B (zh) | 2014-05-22 | 2014-05-22 | 利用启动加速器提高Linux服务器启动速度的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104090783B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860267A (zh) * | 2021-04-23 | 2021-05-28 | 武汉深之度科技有限公司 | 一种内核裁剪方法及计算设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101625647A (zh) * | 2009-08-06 | 2010-01-13 | 青岛海信电器股份有限公司 | 加快嵌入式软件系统启动速度的方法 |
CN102096591A (zh) * | 2011-03-01 | 2011-06-15 | 云浮南风数字科技有限公司 | 一种加快嵌入式Linux系统启动的方法 |
US20130024731A1 (en) * | 2008-10-29 | 2013-01-24 | Aternity Information Systems Ltd. | Real time monitoring of computer for determining speed and energy consumption of various processes |
-
2014
- 2014-05-22 CN CN201410229283.7A patent/CN104090783B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130024731A1 (en) * | 2008-10-29 | 2013-01-24 | Aternity Information Systems Ltd. | Real time monitoring of computer for determining speed and energy consumption of various processes |
CN101625647A (zh) * | 2009-08-06 | 2010-01-13 | 青岛海信电器股份有限公司 | 加快嵌入式软件系统启动速度的方法 |
CN102096591A (zh) * | 2011-03-01 | 2011-06-15 | 云浮南风数字科技有限公司 | 一种加快嵌入式Linux系统启动的方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860267A (zh) * | 2021-04-23 | 2021-05-28 | 武汉深之度科技有限公司 | 一种内核裁剪方法及计算设备 |
CN113485712A (zh) * | 2021-04-23 | 2021-10-08 | 武汉深之度科技有限公司 | 一种内核裁剪方法及计算设备 |
CN113485712B (zh) * | 2021-04-23 | 2024-05-07 | 武汉深之度科技有限公司 | 一种内核裁剪方法及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104090783B (zh) | 2017-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105472035A (zh) | 一种文件传输方法及装置 | |
CN110515795B (zh) | 一种大数据组件的监控方法、装置、电子设备 | |
CN109376015A (zh) | 用于任务调度系统的日志阻塞解决方法及系统 | |
CN111367595A (zh) | 数据处理方法、程序运行方法、装置及处理设备 | |
CN112181746A (zh) | 车载操作系统的故障修复方法、装置及设备 | |
CN102467520A (zh) | 一种数据存储方法和装置 | |
CN110825594A (zh) | 数据的上报、下发方法、客户端及服务器 | |
CN105426544B (zh) | 监控数据库状态的方法及装置 | |
US9286036B2 (en) | Computer-readable recording medium storing program for managing scripts, script management device, and script management method | |
CN113705224A (zh) | 一种语音识别的调度业务语音交互方法及系统 | |
CN104090783A (zh) | 利用启动加速器提高Linux服务器启动速度的方法 | |
CN102929733A (zh) | 一种错误文件处理方法、装置和客户端设备 | |
CN106649584B (zh) | 一种主从式数据库系统中的索引处理方法和装置 | |
CN111177506A (zh) | 一种基于大数据的分类存储方法及系统 | |
US20160170718A1 (en) | Rte code generating method and apparatus performing the same | |
CN116483676A (zh) | 一种日志反解方法、装置以及设备 | |
EP4050495A1 (en) | Trigger implementing method and device | |
CN109828752B (zh) | 项目代码自动生成方法、装置、计算机设备及存储介质 | |
CN113918204A (zh) | 一种元数据脚本管理方法、装置、电子设备和存储介质 | |
CN113434152A (zh) | 软件开发方法、系统及可读存储介质 | |
CN113868479A (zh) | 对于业务数据的处理方法及装置 | |
CN109408063B (zh) | 基于虚拟机的指令插桩方法及装置 | |
US8495033B2 (en) | Data processing | |
CN112527627B (zh) | 一种页面卡顿检测方法、装置、设备及介质 | |
CN104461617A (zh) | 一种实时操作系统VxWorks的剪裁方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170503 |