本发明涉及服务器
技术领域:
:,具体涉及一种内存序列号完整获取方法、系统、终端及存储介质。
背景技术:
::内存(memory)也被称为内存储器和主存储器,其作用是用于暂时存放cpu中的运算数据,以及与硬盘等外部存储器交换的数据,它是其他部件与cpu进行沟通的桥梁,计算机中所有程序的运行都是在内存中进行的。只要计算机在运行中,cpu就会把需要运算的数据调到内存中进行运算,当运算完成后cpu再将结果传送出来,因此内存的性能对计算机的影响非常大,内存的运行也决定了计算机的稳定运行,所以内存条的使用和管控在服务器制造厂商里就显得尤为重要,需要详细记录每台服务器的内存槽位和序列号,便于工厂维修定位、客户追溯等。当前有两种办法记录内存序列号,一种是在组装阶段通过人工扫描,也就是在工厂的生产现场管理系统(sfcs)中开发相应功能,提示作业员人工扫描内存条上黏贴的标签,获取内存序列号,并与整机的序列号建立绑定关系,另一种是通过读取smbios中的信息获取内存序列号,不过smbios中显示的内存序列号只有8位,正常内存有15或18位之多,所以只有8位不能完全定位内存批次。因此当前获取内存序列号的方法存在需要人工操作效率低下,以及内存序列号获取不完整的问题。技术实现要素:针对现有技术的上述不足,本发明提供一种内存序列号完整获取方法、系统、终端及存储介质,以解决上述技术问题。第一方面,本发明提供一种内存序列号完整获取方法,包括:通过修改bios配置关闭thermalthrottling服务;创建内存子地址的映射文件;根据pci中的bus值查找相应的内存序列号位置;根据所述内存序列号位置和内存序列号字节顺序从所述映射文件读取内存序列号。进一步的,所述通过修改bios配置关闭thermalthrottling服务,包括:利用工具scelnx_64将bios设置项导出,保存为bios设置项文件;将bios设置项文件中throttlingmode项的options状态修改为disable状态;将修改后的bios设置项文件导入bios设置,并重启服务器令bios设置生效。进一步的,所述根据pci中的bus值查找相应的内存序列号位置,包括:获取pci中的第一bus信息和第二bus信息;读取第二bus对应的配置空间数据,确认存在内存硬件;根据第一bus信息定位在映射文件的读取数据区。进一步的,所述根据内存序列号位置和内存序列号字节顺序从所述映射文件读取内存序列号,包括:对所述映射文件的数据从所述内存序列号位置开始循环递进读取;将每次读取的字节字符串值保存并整合。进一步的,在读取内存序列号之后,所述方法还包括:通过将bios的配置还原打开thermalthrottling服务。第二方面,本发明提供一种内存序列号完整获取系统,包括:选项修改单元,配置用于通过修改bios配置关闭thermalthrottling服务;映射创建单元,配置用于创建内存子地址的映射文件;位置查找单元,配置用于根据pci中的bus值查找相应的内存序列号位置;序列读取单元,配置用于根据所述内存序列号位置和内存序列号字节顺序从所述映射文件读取内存序列号。进一步的,所述选项修改单元包括:文件导出模块,配置用于利用工具scelnx_64将bios设置项导出,保存为bios设置项文件;文件修改模块,配置用于将bios设置项文件中throttlingmode项的options状态修改为disable状态;文件导入模块,配置用于将修改后的bios设置项文件导入bios设置,并重启服务器令bios设置生效。进一步的,所述位置查找单元包括:bus获取模块,配置用于获取pci中的第一bus信息和第二bus信息;内存校验模块,配置用于读取第二bus对应的配置空间数据,确认存在内存硬件;位置生成模块,配置用于根据第一bus信息定位在映射文件的读取数据区。第三方面,提供一种终端,包括:处理器、存储器,其中,该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述的终端的方法。第四方面,提供了一种计算机存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。本发明的有益效果在于,本发明提供的内存序列号完整获取方法、系统、终端及存储介质,通过自动修改bios选项值关闭thermalthrottling服务,并创建内存子地址的映射文件实现对内存信息的快速读取,同时根据pci中读取的bus值对内存序列号进行定位,根据定位信息和内存序列号的特有属性即可从内存子地址的映射文件中读取完整的内存序列号。本发明能够自动读取完整的内存序列号,不用操作员在组装阶段人工扫描,提高了组装效率,节省了人力成本;也可以获取完整的内存序列号信息,能够起到有效记录、定位和追溯内存的作用。此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明一个实施例的方法的示意性流程图。图2是本发明一个实施例的系统的示意性框图。图3为本发明实施例提供的一种终端的结构示意图。具体实施方式为了使本
技术领域:
:的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。对本发明出现的名词进行解释。pci是peripheralcomponentinterconnect(外设部件互连标准)的缩写,它是目前个人电脑中使用最为广泛的接口。图1是本发明一个实施例的方法的示意性流程图。其中,图1执行主体可以为一种内存序列号完整获取系统。如图1所示,该方法100包括:步骤110,通过修改bios配置关闭thermalthrottling服务;步骤120,创建内存子地址的映射文件;步骤130,根据pci中的bus值查找相应的内存序列号位置;步骤140,根据所述内存序列号位置和内存序列号字节顺序从所述映射文件读取内存序列号。为了便于对本发明的理解,下面以本发明内存序列号完整获取方法的原理,结合实施例中对内存序列号进行完整获取的过程,对本发明提供的内存序列号完整获取方法做进一步的描述。具体的,所述内存序列号完整获取方法包括:s1、通过修改bios配置关闭thermalthrottling服务。开机进入操作系统,编写脚本修改bios设置,关闭thermalthrottling,首先用工具scelnx_64将bios设置项导出,命令为scelnx_6/o/sbios.txt,打开bios.txt,修改throttlingmode字段,讲options修改为disable,然后用命令scelnx_6/i/sbios.txt讲bios设置导入,再控制机器重启。s2、创建内存子地址的映射文件。首先,映射linux目录下"/sys/firmware/acpi/tables/mcfg"文件(内存子地址文件)到"/dev/mem"中,此后可以通过/dev/mem来进行读写操作。s3、根据pci中的bus值查找相应的内存序列号位置。遍历256个bus号,根据bus/dev/fun读出cpu的类型,读取pci中bus/dev/fun以及偏移量为的0xcc的值,右移8位,和0xff做与运算,得出bus1,bus1指向内存序列号在映射文件的存储位置;再右移16位,和0xff做与运算,得出bus2,根据imc->channel->dimm顺序循环做遍历,读取bus2下imc/channel/dimm对应的配置空间中的数据,如果最高位为1,则读取成功,即此imc/channel/dimm下有内存。s4、根据所述内存序列号位置和内存序列号字节顺序从所述映射文件读取内存序列号。内存的sn为9字节字符串数据,根据bus1以及sn的字节顺序和内存子地址在映射的“/dev/mem”中的数据区读取sn中指定的字节字符串值,循环9次,每次字节顺序加1,获取出所有的sn的字节字符串值。s5、修改bios设置,打开thermalthrottling,用工具scelnx_64将bios设置项导出,命令为scelnx_6/o/sbios.txt,打开bios.txt,修改throttlingmode字段,讲options修改为cltt,再用命令scelnx_6/i/sbios.txt讲bios设置项导入,然后控制机器重启,还原bios设置。如图2示,该系统200包括:选项修改单元210,配置用于通过修改bios配置关闭thermalthrottling服务;映射创建单元220,配置用于创建内存子地址的映射文件;位置查找单元230,配置用于根据pci中的bus值查找相应的内存序列号位置;序列读取单元240,配置用于根据所述内存序列号位置和内存序列号字节顺序从所述映射文件读取内存序列号。可选地,作为本发明一个实施例,所述选项修改单元包括:文件导出模块,配置用于利用工具scelnx_64将bios设置项导出,保存为bios设置项文件;文件修改模块,配置用于将bios设置项文件中throttlingmode项的options状态修改为disable状态;文件导入模块,配置用于将修改后的bios设置项文件导入bios设置,并重启服务器令bios设置生效。可选地,作为本发明一个实施例,所述位置查找单元包括:bus获取模块,配置用于获取pci中的第一bus信息和第二bus信息;内存校验模块,配置用于读取第二bus对应的配置空间数据,确认存在内存硬件;位置生成模块,配置用于根据第一bus信息定位在映射文件的读取数据区。图3为本发明实施例提供的一种终端系统300的结构示意图,该终端系统300可以用于执行本发明实施例提供的内存序列号完整获取方法。其中,该终端系统300可以包括:处理器310、存储器320及通信单元330。这些组件通过一条或多条总线进行通信,本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中,该存储器320可以用于存储处理器310的执行指令,存储器320可以由任何类型的易失性或非易失性存储终端或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。当存储器320中的执行指令由处理器310执行时,使得终端300能够执行以下上述方法实施例中的部分或全部步骤。处理器310为存储终端的控制中心,利用各种接口和线路连接整个电子终端的各个部分,通过运行或执行存储在存储器320内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行电子终端的各种功能和/或处理数据。所述处理器可以由集成电路(integratedcircuit,简称ic)组成,例如可以由单颗封装的ic所组成,也可以由连接多颗相同功能或不同功能的封装ic而组成。举例来说,处理器310可以仅包括中央处理器(centralprocessingunit,简称cpu)。在本发明实施方式中,cpu可以是单运算核心,也可以包括多运算核心。通信单元330,用于建立通信信道,从而使所述存储终端可以与其它终端进行通信。接收其他终端发送的用户数据或者向其他终端发送用户数据。本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-onlymemory,简称:rom)或随机存储记忆体(英文:randomaccessmemory,简称:ram)等。因此,本发明通过自动修改bios选项值关闭thermalthrottling服务,并创建内存子地址的映射文件实现对内存信息的快速读取,同时根据pci中读取的bus值对内存序列号进行定位,根据定位信息和内存序列号的特有属性即可从内存子地址的映射文件中读取完整的内存序列号。本发明能够自动读取完整的内存序列号,不用操作员在组装阶段人工扫描,提高了组装效率,节省了人力成本;也可以获取完整的内存序列号信息,能够起到有效记录、定位和追溯内存的作用,本实施例所能达到的技术效果可以参见上文中的描述,此处不再赘述。本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本
技术领域:
:的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。当前第1页1 2 3 当前第1页1 2 3 
技术特征:1.一种内存序列号完整获取方法,其特征在于,包括:
通过修改bios配置关闭thermalthrottling服务;
创建内存子地址的映射文件;
根据pci中的bus值查找相应的内存序列号位置;
根据所述内存序列号位置和内存序列号字节顺序从所述映射文件读取内存序列号。
2.根据权利要求1所述的方法,其特征在于,所述通过修改bios配置关闭thermalthrottling服务,包括:
利用工具scelnx_64将bios设置项导出,保存为bios设置项文件;
将bios设置项文件中throttlingmode项的options状态修改为disable状态;
将修改后的bios设置项文件导入bios设置,并重启服务器令bios设置生效。
3.根据权利要求1所述的方法,其特征在于,所述根据pci中的bus值查找相应的内存序列号位置,包括:
获取pci中的第一bus信息和第二bus信息;
读取第二bus对应的配置空间数据,确认存在内存硬件;
根据第一bus信息定位在映射文件的读取数据区。
4.根据权利要求1所述的方法,其特征在于,所述根据内存序列号位置和内存序列号字节顺序从所述映射文件读取内存序列号,包括:
对所述映射文件的数据从所述内存序列号位置开始循环递进读取;
将每次读取的字节字符串值保存并整合。
5.根据权利要求1所述的方法,其特征在于,在读取内存序列号之后,所述方法还包括:
通过将bios的配置还原打开thermalthrottling服务。
6.一种内存序列号完整获取系统,其特征在于,包括:
选项修改单元,配置用于通过修改bios配置关闭thermalthrottling服务;
映射创建单元,配置用于创建内存子地址的映射文件;
位置查找单元,配置用于根据pci中的bus值查找相应的内存序列号位置;
序列读取单元,配置用于根据所述内存序列号位置和内存序列号字节顺序从所述映射文件读取内存序列号。
7.根据权利要求6所述的系统,其特征在于,所述选项修改单元包括:
文件导出模块,配置用于利用工具scelnx_64将bios设置项导出,保存为bios设置项文件;
文件修改模块,配置用于将bios设置项文件中throttlingmode项的options状态修改为disable状态;
文件导入模块,配置用于将修改后的bios设置项文件导入bios设置,并重启服务器令bios设置生效。
8.根据权利要求6所述的系统,其特征在于,所述位置查找单元包括:
bus获取模块,配置用于获取pci中的第一bus信息和第二bus信息;
内存校验模块,配置用于读取第二bus对应的配置空间数据,确认存在内存硬件;
位置生成模块,配置用于根据第一bus信息定位在映射文件的读取数据区。
9.一种终端,其特征在于,包括:
处理器;
用于存储处理器的执行指令的存储器;
其中,所述处理器被配置为执行权利要求1-5任一项所述的方法。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一项所述的方法。
技术总结本发明提供一种内存序列号完整获取方法、系统、终端及存储介质,包括:通过修改BIOS配置关闭thermal throttling服务;创建内存子地址的映射文件;根据PCI中的bus值查找相应的内存序列号位置;根据所述内存序列号位置和内存序列号字节顺序从所述映射文件读取内存序列号。本发明能够自动读取完整的内存序列号,不用操作员在组装阶段人工扫描,提高了组装效率,节省了人力成本;也可以获取完整的内存序列号信息,能够起到有效记录、定位和追溯内存的作用。
技术研发人员:吴培琴
受保护的技术使用者:苏州浪潮智能科技有限公司
技术研发日:2020.01.19
技术公布日:2020.06.09