一款新工具可识别软件更新所引发错误的根源。
软件更新本意是让应用程序运行得更快,结果却事与愿违,这是一个普遍存在的困扰。在计算机科学领域,这类被称为性能退化的漏洞修复起来十分耗时,因为定位软件错误通常需要大量人工介入。
为克服这一障碍,得克萨斯农工大学的研究人员与英特尔实验室的计算机科学家合作,开发出一种全自动的错误根源识别方法。他们的算法基于一种称为深度学习的专门机器学习形式,不仅开箱即用,而且速度很快,只需数小时而非数天即可找出性能漏洞。
“软件更新有时会适得其反,错误悄然出现并导致运行变慢。对于使用持续演进的大规模软件系统的企业而言,这一问题更为突出。”计算机科学与工程系助理教授阿卜杜拉·穆扎希德(Abdullah Muzahid)表示,“我们设计了一款便捷的工具,用于诊断性能退化问题,它兼容多种软件和编程语言,大大拓展了其实用性。”
性能计数器
要查明软件内部的错误根源,调试人员通常会检查中央处理器内性能计数器的状态。例如,这些计数器是一些代码行,用于监测程序在计算机硬件内存中的运行情况。因此,软件运行时,计数器会记录其访问特定内存位置的次数、停留时长以及退出时间等信息。由此,当软件行为出现异常时,计数器同样可用于诊断。
“性能计数器可以反映程序运行的健康状况,”穆扎希德表示,“因此,如果某个程序未能按预期运行,这些计数器通常会显示异常行为的明显迹象。”
然而,新型台式机和服务器配备了数百个性能计数器,人工逐一跟踪其状态,并查找可能指向性能错误的异常模式,几乎是不可能完成的任务。这正是穆扎希德的机器学习方法发挥作用之处。
查找漏洞
通过使用深度学习,研究人员能够同时监测大量计数器的数据。他们通过缩减数据规模实现这一目标,其原理类似于通过改变格式,将高分辨率图像压缩至原始大小的一小部分。在低维数据中,他们的算法便可查找偏离正常状态的模式。
算法就绪后,研究人员测试了它能否在一款商用数据管理软件中找出并诊断性能漏洞。企业通常使用这类软件来记录其数字和数据。首先,研究人员通过运行一个较早的、无故障版本的数据管理软件,训练算法识别正常的计数器数据。接着,他们在存在漏洞的软件更新版本上运行该算法。结果显示,算法能在数小时内定位并诊断出该漏洞。穆扎希德表示,如果采用人工方式进行此类分析,可能需要耗费大量时间。
除了诊断软件性能退化问题,穆扎希德指出,他们的深度学习算法在其他研究领域也具有潜在用途,例如开发自动驾驶所需的技术。
“基本思路依然相同,即能够检测异常模式,”穆扎希德表示。“自动驾驶汽车必须能够检测前方是车辆还是行人,并据此采取相应行动。因此,这同样是一种异常检测形式,而好消息是,我们的算法本身就是为此设计的。”
研究人员在十二月的神经信息处理系统大会上发表了他们的研究成果。
这项工作获得了美国国家科学基金会和英特尔的支持。


