CN105095047B - 一种提取底层***行为特征的操作***监控方法及装置 - Google Patents

一种提取底层***行为特征的操作***监控方法及装置 Download PDF

Info

Publication number
CN105095047B
CN105095047B CN201510423210.6A CN201510423210A CN105095047B CN 105095047 B CN105095047 B CN 105095047B CN 201510423210 A CN201510423210 A CN 201510423210A CN 105095047 B CN105095047 B CN 105095047B
Authority
CN
China
Prior art keywords
function
operating system
parameter
value
kernel
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.)
Active
Application number
CN201510423210.6A
Other languages
English (en)
Other versions
CN105095047A (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.)
Beijing Zhongke Flux Technology Co ltd
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN201510423210.6A priority Critical patent/CN105095047B/zh
Publication of CN105095047A publication Critical patent/CN105095047A/zh
Application granted granted Critical
Publication of CN105095047B publication Critical patent/CN105095047B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明提出一种提取底层***行为特征的操作***监控方法及装置,该方法包括:步骤1,采集操作***中资源分配事件以及异常处理事件的内核函数的参数及返回值,将所述参数及返回值从***内核传递到用户态下,并记录到存储文件上;步骤2,用户态下将所述参数及返回值构造为特征值,将所述特征值记录到训练数据集,其中所述特征值反应***的活动状态;步骤3,获取操作***当前的特征值,基于已经大量记录的所述训练数据集来判断操作***当前的活动状态。由此,能够更精确地捕捉操作***的底层***行为特征,对操作***当前的活动状态进行监控。

Description

一种提取底层***行为特征的操作***监控方法及装置
技术领域
本发明属于计算机体系结构领域,涉及计算机操作***监控,特别涉及一种提取底层***行为特征的操作***监控方法及装置。
背景技术
***监控是理解***行为的关键,开发商和程序员依靠于***监控工具来提供足够的信息去修正***性能的瓶颈和隐藏的bugs。但是随着操作***变得越来越复杂,为了理解这些***执行行为而去识别出***性能上的瓶颈和隐藏中的bugs变得越来越难。而现有的主要监测解决方案并没有做到用较低的开销提取足够多底层的***特征,用于形式化方法的自动分析。比如,在软件中对指令操作进行监控和调试时设置的断点都会产生过大的开销。对***调用的监控也是代价大而且没有充分的表现力。由开发商自己提供的硬件计数可以在配置该硬件后,收集到少量的特定有用的信息。但由于采用了采样的方法,还是没有足够多数据用于分析。相反的,在***高层上的度量,像应用程序每秒中完成的事务数量等。该方法还是不能捕捉到足够精确的底层***行为。而且很少有监控解决方案提供一个***的和正式的方式利用过去的诊断信息发现和解决将来可能的问题。
Tudor Marian等人提出一种新的监控***,能够通过计算内核函数的调用提取可变址的底层***特征,并能有效在***运行时使用统计方法如聚类分析和机器学习分析特征。然而信息检索已经完成了被证明了的开发成功的统计技术用于自动文档的检索和采集。信息检索简单的统计所有文档中的词频,从而产生足够多的特征信息用于分析。比如,搜索引擎传统的都是抛掉场景信息,然后使用词频通过实体评分(ranking)和实体排名(scoring)计算文档相关度。为了提取有用的底层***特征,文献1中提取***特征通过将信息采集中的概念和文本挖掘概念映射到***行为中。一个信息采集概念中的词相对于一个内核函数的调用。一个文档相对于一段时间内的底层***行为(low-level systemactivity)或者***调用一个语料库(corpus)相对于对多个***行为(systemactivities)的收集。文献1中使用词频倒档(tf-idf)模式代表文档,用权重向量作为***特征。但该方法记录整个操作***所有的内核函数调用信息,而且只把函数调用的次数作为特征值并没有充分的体现***在一段时间的行为活动。
发明内容
为了解决上述问题,本发明的目的在于,提供一种提取底层***行为特征的监控方法及***,能够更精确地捕捉操作***的底层***行为特征,对***当前的活动状态进行监控。
为实现上述目的,本发明提出的提取底层***行为特征的操作***监控方法,包括:步骤1,采集操作***中资源分配事件以及异常处理事件的内核函数的参数及返回值,将所述参数及返回值从***内核传递到用户态下,并记录到存储文件上;步骤2,用户态下将所述参数及返回值构造为特征值,将所述特征值记录到训练数据集,其中所述特征值反应***的活动状态;步骤3,获取操作***当前的特征值,基于已经大量记录的所述训练数据集来判断操作***当前的活动状态。
本发明的提取底层***行为特征的操作***监控方法,其中,所述资源分配事件的内核函数包括slab allocator内存分配函数、kfree释放内存空间函数和/或kmem_cache_alloc分配空闲对象函数;所述异常处理事件的内核函数包括do_page_falut缺页异常处理函数。
本发明的提取底层***行为特征的操作***监控方法,其中,上述步骤1包括:步骤11,操作***初始化时在操作***内核中创建relayfs文件***通道;步骤12,修改现有的Ftrace函数中对函数调用的监控机制;步骤13,在所述relayfs文件***通道中添加用于记录内核函数的堆栈信息的函数,并在所述内核函数中的出口部分添加用于记录所述内核函数的参数及返回值的函数。
本发明的提取底层***行为特征的操作***监控方法,其中,上述步骤1还包括:步骤14,对于每一个内核函数都分配一个唯一的ID号,用ID号来区分内核函数。
本发明的提取底层***行为特征的操作***监控方法,其中,在用户态下从relayfs文件***通道中定期读取所记录的内核函数的参数及返回值,记录到存储文件上。
本发明的提取底层***行为特征的操作***监控方法,其中,在上述步骤2中,将所述磁盘文件上记录的所述参数及返回值构造为特征值构造为具有如下格式的特征值,
(Si,F1(i,1),F1(i,2),...,F2(i,1),F2(i,2),...,R1(i),...,Rj(i)) (1)
其中,Si表示为内核函数ID,Rj(i)表示为第j次调用该函数时函数的返回值,Fj(i)表示为第j次调用该函数时函数的第i个参数值,为所有内核函数分配指定的ID。
本发明的提取底层***行为特征的操作***监控方法,其中,采用机器学习分类算法分析所述特征值,并记录到训练数据集。
本发明的提取底层***行为特征的操作***监控方法,其中,在上述步骤3中,以一段时间内获取的内核函数的参数和返回值作为***当前活动状态特征值。
另外,本发明还提出一种采用上述任一种方法提取底层***行为特征的操作***监控装置。
本发明的效果在于:本发明并不监控内核所有函数,而是监控内核中主要的资源分配事件以及异常处理事件的函数的参数以及返回值,能够降低监控***的工作量,利用较低的***开销提取足够多底层***特征,并采用形式化方法对获取的***特征进行解析,采用机器学习分类方法训练特征数据集,从而能够利用***过去的监控信息发现和解决***当前可能会出现的问题。
附图说明
图1是本发明的提取底层***行为特征的操作***监控方法的流程图。
图2是本发明实施例的提取底层***行为特征的操作***监控方法的总体设计框图。
图3是本发明实施例的监控内核输入函数参数以及函数返回值的示意图。
图4是本发明的提取底层***行为特征的操作***监控装置的构成框图。
附图标记说明
1 操作***监控装置
11 通道创建模块
12 函数修改模块
13 信息记录模块
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明的提取底层***行为特征的操作***监控方法及装置进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
一般来说,操作***内核主要分为进程管理,内存管理,虚拟文件***以及网络管理等等对上层应用提供***资源。在本发明中,通过对其中主要关键函数的参数和返回值进行监控并提取出固定模式下***的行为特征。与文献1不同的是本发明的监控方法并不监控内核所有的函数,而是监控内核中主要的资源分配事件以及异常处理事件的函数的参数以及返回值。对于参数和返回值,具有目前***中大量的活动信息。而本发明将此方法应用监控***的行为特征,因为***的行为特征也包括对内存资源的管理,对文件***的管理以及进程管理等。而其中所调用的内核函数的参数也富含了很多信息。比如监控内存管理部分,跟踪slab allocator内存分配函数的分配情况。包括kfree释放内存空间函数,kmem_cache_alloc分配空闲对象函数等内核函数的调用参数中拥有请求分配内存大小以申请向哪个区域的内存,最后可以根据tracer跟踪软件收集到的信息统计分析内部碎片情况,找出内存分配最频繁的代码片断,等等。也可根据内存分配机制(slab机制)中传递的参数得到内核近期分配使用频繁的结构体。对于异常事件的监控主要在于对do_page_falut缺页异常处理函数的监控,但函数的返回信息包含了对一些异常事件做出的决策,如用户层出现段错误,用户进程出现写时复制(copy)等。
本发明需要修改内核代码,监控指定函数调用信息以及在操作***初始化时创建relayfs通道用于监控信息的传递。最后在用户空间启动一个守护进程定期从relayfs读取所记录函数调用的详细信息,记录到磁盘文件上。对磁盘文件上的记录信息构造特征值,用于最后的机器学习分类的训练数据集。
relayfs是一个快速的转发(relay)数据的文件***,它以其功能而得名。它为那些需要从内核空间转发大量数据到用户空间的工具和应用提供了快速有效的转发机制。运用此转发工具来传输内核层函数监控得到的必要信息到用户层,供用户层进行分析。
下面给出本发明的具体实施例,结合附图对本发明做详细描述。
如图1所示,本发明的提取底层***行为特征的监控方法,包括:
步骤1,采集操作***中资源分配事件以及异常处理事件的内核函数的参数及返回值,将所述参数及返回值从***内核传递到用户态下,并记录到磁盘文件上;
步骤2,用户态下将所述参数及返回值构造为特征值,将所述特征值记录到训练数据集,其中所述特征值反应***的活动状态;
步骤3,获取操作***当前的特征值,基于已经大量记录的所述训练数据集来判断操作***当前的活动状态。
其中,在步骤1中,将所述参数及返回值从***内核传递到用户态下时,需要修改内核代码(以linux***为例),其具体包括:
步骤11,创建relayfs通道,用于内核态监控函数调用信息传递到用户态下。选择的创建位置在init/main.c函数下,do_basic_setup初始化函数中使用开启快速转发函数relay_open创建一个通道。用户空间的应用程序通过使用映射函数mmap()进行映射所创建的通道文件使其数据在用户空间下可用。
步骤12,修改现有的Ftrace中,对函数调用的监控机制主要在所有内核函数的开始部分加入一段stub存根代码,Ftrace重载这段代码来实现追踪(trace)功能。内核编译是会调用一个perl脚本:recordmcount.pl将每个函数的地址写入一个特殊的段:_mcount_loc.在内核初始化的初期,Ftrace查询__mcount_loc段,得到每个函数的入口地址,并将mcount替换为空指令(nop指令)。这样在默认情况下,Ftrace不会对内核性能产生影响。当用户打开Ftrace功能时,使Ftrace将这些nop指令动态替换为ftrace_caller,用于将调用用户注册的trace函数。本发明需要修改perl脚本将指定监控内核函数名写入段__mcount_loc段中,在内核函数入口地址和出口地址处都添加mcount。
步骤13,如图3所示为本发明实施例的监控内核输入函数参数以及函数返回值的示意图,该图中示出了所添加代码的位置,本发明添加自定义函数即开始存根函数stub_start记录内核函数的堆栈信息(即函数调用参数信息),在所监控的内核函数中的出口部分添加自定义函数即结束存根函数stub_end记录内核函数的返回值,且能够直接通过默认的使用栈规则的寄存器%eax中取得上述返回值,对于没有返回值的情况就使用0来表示,其中,上述内核函数的堆栈信息(即函数调用参数信息)是通过步骤12中所添加的入口的mcount重定向到函数stub_start的,上述函数返回值是通过步骤12中所添加的出口的mcount重定向到stub_end的(如图3中实线所示),最后将上述stub_start函数中记录的内核函数的堆栈信息(即函数调用参数信息)以及上述stub_end函数中记录的内核函数的返回值传送至步骤11所创建的relayfs通道(如图3中虚线所示)。
步骤14,对与所监控的内核函数都分配一个唯一的ID号,通过ID号来区分内核函数。
然后是需要通过按照上述的ID序列号构建步骤2所述的***活动特征值用于机器学习中训练特征,其中具体构造特征值的方法如下:
将磁盘文件上记录的内核函数参数及返回值构造为特征值构造为具有如下格式的特征值,
(Si,F1(i,1),F1(i,2),...,F2(i,1),F2(i,2),...,R1(i),...,Rj(i)) (1)
Si表示为内核函数ID(为每个内核函数指定一个唯一ID),Rj(i)表示为第j次调用该函数时函数的返回值,Fj(i)表示为第j次调用函数的第i个参数值。所有被监控的函数为其分配指定的ID,最后按照指定ID序列作为特征。
对于步骤1中的内核函数参数及返回值的采集,可以在用户空间启动守护进程来定期读取从relayfs文件***记录函数调用详细信息,记录到磁盘文件上。
上述步骤3涉及操作***当前活动状态的分析,具体包括:
步骤31,以一段时间T(比如T为30min或者60min)内的内核函数的参数和返回值作为当前***活动状态的特征值,构造特征值的方法以在上述内容中进行说明。
步骤32,自动分析***行为使用传统的统计技术比如聚类,机器学习或者基于搜索已标签的特征签名相似度比较,使用上一步中形式化为特征值格式的数据作为输入的数据。最后基于已经大量记录的实验训练数据集,通过采集当前活动状态特征值来判断当前***处于什么状态。
本发明实施例的提取底层***行为特征的操作***监控方法的总体设计框图如图2所示。具体为,步骤10,启动函数调用的开关,开始收集内核函数调用信息,可按上述步骤11-步骤13的方法创建relayfs文件***通道,将内核函数的参数及返回值从***内核传递到用户态下,并在用户态下启动守护进程定期收集来自relayfs文件***的信息;步骤20,对收集到的数据进行格式化定义,具体定义方法可以采用上述式(1)的方法;步骤30,使用机器学习分类算法分析所述特征值,并记录到训练数据集,获取操作***当前的特征值,基于已经大量记录的所述训练数据集来判断操作***当前的活动状态。
另外,本发明还提出一种采用上述提取底层***行为特征的操作***监控方法提取底层***行为特征的操作***监控装置1,其构成如图4所示,具体包括:信息提取模块11,用于采集操作***中资源分配事件以及异常处理事件的内核函数的参数及返回值,将所述参数及返回值从***内核传递到用户态下,并记录到磁盘文件上;格式化模块12,用于用户态下将所述参数及返回值构造为特征值,将所述特征值记录到训练数据集,其中所述特征值反应***的活动状态;状态分析模块13,用于获取操作***当前的特征值,基于已经大量记录的所述训练数据集来判断操作***当前的活动状态。

Claims (8)

1.一种提取底层***行为特征的操作***监控方法,其特征在于,包括:
步骤1,采集操作***中资源分配事件以及异常处理事件的内核函数的参数及返回值,将所述参数及返回值从***内核传递到用户态下,并记录到磁盘文件上;
其中,该步骤1还包括:
步骤11,操作***初始化时在操作***内核中创建relayfs文件***通道;
步骤12,修改现有的Ftrace函数中对函数调用的监控机制;
步骤13,在所述relayfs文件***通道中添加用于记录内核函数的堆栈信息的函数,并在所述内核函数中的出口部分添加用于记录所述内核函数的参数及返回值的函数;
步骤2,用户态下将所述参数及返回值构造为特征值,将所述特征值记录到训练数据集,其中所述特征值反应***的活动状态;
步骤3,获取操作***当前的特征值,基于已经大量记录的所述训练数据集来判断操作***当前的活动状态。
2.根据权利要求1所述的提取底层***行为特征的操作***监控方法,其特征在于,
所述资源分配事件的内核函数包括slab allocator内存分配函数、kfree释放内存空间函数和/或kmem_cache_alloc分配空闲对象函数;
所述异常处理事件的内核函数包括do_page_falut缺页异常处理函数。
3.根据权利要求1所述的提取底层***行为特征的操作***监控方法,其特征在于,所述步骤1还包括:
步骤14,对于每一个内核函数都分配一个唯一的ID号,用ID号来区分内核函数。
4.根据权利要求1所述的提取底层***行为特征的操作***监控方法,其特征在于,
在用户态下从relayfs文件***通道中定期读取所记录的内核函数的参数及返回值,记录到磁盘文件上。
5.根据权利要求1所述的提取底层***行为特征的操作***监控方法,其特征在于,在所述步骤2中,
将所述磁盘文件上记录的所述参数及返回值构造为特征值构造为具有如下格式的特征值,
(Si,F1(i,1),F1(i,2),...,F2(i,1),F2(i,2),...,R1(i),...,Rj(i)) (1)
其中,Si表示为内核函数ID,Rj(i)表示为第j次调用该函数时函数的返回值,Fj(i)表示为第j次调用该函数时函数的第i个参数值,为所有内核函数分配指定的ID。
6.根据权利要求5所述的提取底层***行为特征的操作***监控方法,其特征在于,采用机器学习分类算法分析所述特征值,并记录到训练数据集。
7.根据权利要求1所述的提取底层***行为特征的操作***监控方法,其特征在于,在所述步骤3中,以一段时间T内获取的内核函数的参数和返回值作为***当前活动状态特征值。
8.一种采用权利要求1-7中任一项所述方法提取底层***行为特征的操作***监控装置。
CN201510423210.6A 2015-07-17 2015-07-17 一种提取底层***行为特征的操作***监控方法及装置 Active CN105095047B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510423210.6A CN105095047B (zh) 2015-07-17 2015-07-17 一种提取底层***行为特征的操作***监控方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510423210.6A CN105095047B (zh) 2015-07-17 2015-07-17 一种提取底层***行为特征的操作***监控方法及装置

Publications (2)

Publication Number Publication Date
CN105095047A CN105095047A (zh) 2015-11-25
CN105095047B true CN105095047B (zh) 2018-05-04

Family

ID=54575543

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510423210.6A Active CN105095047B (zh) 2015-07-17 2015-07-17 一种提取底层***行为特征的操作***监控方法及装置

Country Status (1)

Country Link
CN (1) CN105095047B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108228435B (zh) * 2017-04-21 2021-01-26 珠海市魅族科技有限公司 基于Ftrace的处理器执行状态模型搭建方法和***

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1892616A (zh) * 2006-05-12 2007-01-10 中国科学院计算技术研究所 在微处理器用户态随机验证中实现核心态程序验证的方法
CN104424034A (zh) * 2013-09-04 2015-03-18 华为技术有限公司 硬件资源访问方法及装置
CN104715190A (zh) * 2015-02-03 2015-06-17 中国科学院计算技术研究所 一种基于深度学习的程序执行路径的监控方法及***

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8074115B2 (en) * 2005-10-25 2011-12-06 The Trustees Of Columbia University In The City Of New York Methods, media and systems for detecting anomalous program executions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1892616A (zh) * 2006-05-12 2007-01-10 中国科学院计算技术研究所 在微处理器用户态随机验证中实现核心态程序验证的方法
CN104424034A (zh) * 2013-09-04 2015-03-18 华为技术有限公司 硬件资源访问方法及装置
CN104715190A (zh) * 2015-02-03 2015-06-17 中国科学院计算技术研究所 一种基于深度学习的程序执行路径的监控方法及***

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Linux 内核跟踪机制 LTT 的研究";陈丽波等;《计算机工程》;20050630;第31卷(第12期);第61-63页 *

Also Published As

Publication number Publication date
CN105095047A (zh) 2015-11-25

Similar Documents

Publication Publication Date Title
CN110399293B (zh) ***测试方法、装置、计算机设备和存储介质
CN102930210B (zh) 恶意程序行为自动化分析、检测与分类***及方法
CN108205486A (zh) 一种基于机器学习的智能分布式调用链跟踪方法
CN111756575B (zh) 存储服务器的性能分析方法及装置、电子设备
CN102946319B (zh) 网络用户行为信息分析***及其分析方法
US8484577B2 (en) Window grouping
CN104205062A (zh) 剖析数据可视化
US10218599B2 (en) Identifying referral pages based on recorded URL requests
CN107239382A (zh) 一种容器应用的日志处理方法及***
CN107800591A (zh) 一种统一日志数据的分析方法
US7908239B2 (en) System for storing event data using a sum calculator that sums the cubes and squares of events
CN102317940B (zh) 信息处理装置、信息处理方法以及程序
CN102999314A (zh) 立即延迟***工具
CN109871963A (zh) 运行故障还原方法、装置、电子设备及存储介质
CN106407083A (zh) 故障检测方法及装置
CN103279471A (zh) 剖析图数据的逻辑分组
CN109189642A (zh) 基于插件的应用***业务行为特征获取方法及监控***
WO2016093803A1 (en) Separating test verifications from test executions
CN106445732A (zh) 一种基于版本控制的在线快照管理方法和***
CN105095047B (zh) 一种提取底层***行为特征的操作***监控方法及装置
CN116756021A (zh) 基于事件分析的故障定位方法、装置、电子设备及介质
CN111817867A (zh) 分布式环境下进行多日志协同分析的方法及***
CN107544894A (zh) 一种日志处理的方法、装置及服务器
CN115640158A (zh) 一种基于数据库的检测分析方法及装置
CN102930046B (zh) 数据处理方法、计算节点及***

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240320

Address after: Room 711C, Floor 7, Building A, Yard 19, Ronghua Middle Road, Daxing District, Beijing Economic-Technological Development Area, 100176

Patentee after: Beijing Zhongke Flux Technology Co.,Ltd.

Country or region after: China

Address before: 100190 No. 6 South Road, Zhongguancun Academy of Sciences, Beijing, Haidian District

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

Country or region before: China