CN104090783A - 利用启动加速器提高Linux服务器启动速度的方法 - Google Patents

利用启动加速器提高Linux服务器启动速度的方法 Download PDF

Info

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
Application number
CN201410229283.7A
Other languages
English (en)
Other versions
CN104090783B (zh
Inventor
李航
白晓颖
苏锐丹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN201410229283.7A priority Critical patent/CN104090783B/zh
Publication of CN104090783A publication Critical patent/CN104090783A/zh
Application granted granted Critical
Publication of CN104090783B publication Critical patent/CN104090783B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种利用启动加速器提高Linux服务器启动速度的方法,包括启动加速器通过其上的网卡读取目标Linux服务器群上的启动配置文件和内核源码文件,并传给启动加速器上的启动加速处理模块;以及启动加速器模块将自动定制该内核的源码文件,使其能够在启动时,不再向日志文件中写日志,并且,在启动结束后,能够恢复日志输出,用于满足用户调试程序时,查看Linux内核日志的需求。上述方法,其可在无需人工干预下,自动完成多台Linux服务器的优化;能够进一步减少Linux内核在启动时的输出操作,并且不影响启动后Linux内核的正常信息的输出;且能够对Linux内核达到函数级的裁减,进一步压缩内核。

Description

利用启动加速器提高Linux服务器启动速度的方法
技术领域
本发明涉及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服务器启动速度的方法,其特征在于:关系图通过关系型数据库进行存储。
CN201410229283.7A 2014-05-22 2014-05-22 利用启动加速器提高Linux服务器启动速度的方法 Expired - Fee Related CN104090783B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860267A (zh) * 2021-04-23 2021-05-28 武汉深之度科技有限公司 一种内核裁剪方法及计算设备

Citations (3)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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