您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    消费环境下高并发顺序崩溃?麻州大学让多线程软件缺点剖析自动化
    时间:2021-03-02 21:10 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    软件调试是十分单调而又技术难度很高的任务,其中软件缺点的自动化剖析是几代顺序员共同的梦想。进入多核时代后,多个线程的并行处置极大地提高了顺序功用,但同时义务的交织又使得顺序运转结果更难以重现,这让调试任务变得愈加艰难。

    近日,麻萨诸塞大学阿默斯特分校(University of Massachusetts Amherst,简称「麻州大学」)的电子与计算机工程系刘通平教授指导的研讨团队最近开发一个名为 Watcher(哨兵)的自动化多线程软件缺点剖析工具,可以在几秒钟或许几分钟内自动精准定位软件错误缘由,有望彻底处置消费环境下并行顺序调试困难的成绩,能清楚提高自动驾驶等关键系统的牢靠性。

    从智能手表到大型效劳器,批发终端到金融买卖平台,软件效劳存在于日常生活的方方面面,极大的便利了人们的日常生活。但是,软件中总会包含一些潜在的缺陷或许 bug。虽然严厉的软件测试有助于尽早发现这些缺陷,但是开发人员往往迫于压力,在没有停止片面测试的状况下就匆匆将软件发布。而且有些软件缺陷只在特定输入条件下才会触发,或许只在特定的义务交互下才会显现,即使是严厉的测试也并不能完全消弭大型软件中的一切缺陷,尤其是并发软件中的缺陷。这些顺序的缺陷常常成为软件测试的漏网之鱼,进而招致运转进程中细叱崩溃、顺序挂起、或引发安全破绽。

    虽然目前存在一些可用的软件调试系统,但大都需求人工干预。这样的系统在实践运用消费环境中是无法直接部署的。人们常常运用微软公司的办公软件,但是你不能指望普通用户可以调试这些软件成绩。普通用户既没有才能,也没有义务去帮忙调试。因此,软件公司只能搜集用户的错误报告,然后停止离线诊断。但离线诊断又有各种弊端:

    第一,由于数据上传时并不能区分出缺点相关信息,离线诊断必须搜集错误现场的一切数据,其中也会包含一些用户的隐私数据。比如,用户刚刚用 IE 阅读器登陆网上银行账号然后崩溃,其错误报告就会包含用户的账号和密码等隐私信息;

    第二,由于离线诊断通常依赖于统计办法,或许经差错误形状反向推理顺序运转的形状,这些办法的诊断才能都十分有限。因此,迫切需求更有效的软件诊断系统来取代传统的离线诊断办法。

    「无论技术如何提高,软件缺点一直是一个令人担忧的成绩」刘通平教授表示:「我们研讨的软件缺点诊断系统 Watcher 可以在原始的运转环境中现场快速地诊断顺序缺点的基本缘由。

    跟以往的工具相比,Watcher 避免了其他剖析软件的隐私成绩。用户不再需求上传整个内存镜像,Watcher 也只会提供报告软件相关缺点的报告。而且,Watcher 可以轻松部署,不依赖于定制的硬件或操作系统(不过目前 Watcher 只提供了对 Linux 系统的支持),也不需求修正顺序代码或许重新编译顺序。研讨团队应用 Watcher 成功检测了几十种软件(包括一些大型运用)中发作的缺点。评价结果显示,Watcher 可以在短短几秒钟内准确辨认出软件缺点的基本缘由」。

    「冰冻三尺,非一日之寒,骐骥千里,非一日之功」。这项软件缺点诊断的打破也是来自于刘教授和其研讨团队的长期耕耘和努力:早在 10 年前,刘通平教授还是博士生的时分,他就末尾研讨并行软件确实定性成绩,其成果发在计算机软件系统的最顶级会议 - 操作系统原理大会(SOSP'11)。在博士阶段前期,他末尾研讨 Watcher 软件系统的基础任务,一种确定性的记载重放系统(record-and-replay),相关的成果宣布在软件工程顶会(ICSE‘16)和编程言语的顶会(PLDI‘18)。2015 年刘教授还在德州大学圣安东尼奥分校任务时,他的先生刘宏宇继续这一方面的研讨任务,经过 8 年的辛勤任务,软件缺点诊断才有了明天的严重打破。

    刘教授引见说:「Watcher 的成功离不开它的基石 --iReplayer,它也是我们组 PLDI‘2018 的任务。iReplayer 可以准确无误的复现顺序错误运转状况的系统,保证顺序运转的分歧性:在重新执行进程中,相反指令将对与原始运转时完全分歧的存储单元 / 寄存器执行相反的读写操作。这一特性这为软件缺点诊断打下了坚实的基础」。正是基于 iReplayer,Watcher 才可以完成现场诊断软件错误,其基本原理如下图所示:

    消费环境下高并发顺序崩溃?麻州大学让多线程软件缺点剖析自动化

    Watcher 作为一个运转库存在,可以和待检测的顺序相链接。在顺序正常运转时,Watcher 对顺序的运转状况停止一些记载,但其功用开支低于 3%。当顺序发作错误时,Watcher 的诊断模块将被自动开启,并在重放进程中停止自动诊断。Watcher 将二进制静态剖析、静态剖析与硬件调试技术结合在一同完成了自动化软件缺点诊断。目前该研讨已宣布在顺序文语与软件工程类顶级学术会议OOPSLA‘2020,相关协作单位还包括普渡大学、德州大学圣安东尼奥分校、和伊利诺伊大学香槟分校。

    Watcher 的顺序错误诊断基于一个关键发现:顺序错误通常是由于顺序将错误或有效的值写入某个内存中,并在随后的运转中引发异常所招致。基于这个发现,Watcher 采用混合剖析法来确定招致顺序错误发作的内存单元、相关的指令和错误值传达途径。在二进制剖析中假设出现不能确定的状况时,Watcher 应用重放运转进程再次搜集和确认顺序错误相关的信息,做到准确无误的报告顺序错误的基本缘由。此外,Watcher 还应用硬件寄存器非入侵式地采集对特定内存的拜访,并静态地剖析顺序错误相关片段。剖析完毕后,Watcher 会生成一个关于错误值的残缺报告,顺序员依据其报告可以快速定位和修复这个顺序错误。

    Watcher 的优点之一是可以在软件开发、部署、消费的一切阶段中运用。可以预见,Watcher 将对各种急需现场错误诊断的系统十分有用,尤其是人身安全相关的范围,比如航空系统或许自动驾驶。自动驾驶范围的一大痛点成绩是如何快速的停止错误诊断,让顺序员可以修复缺陷以提高系统的鲁棒性。但是,由于无线通讯等传输瓶颈无法传输整个内存镜像,或许即使有内存镜像也无法准确定位成绩,自动驾驶企业很难快速地优化系统,从而带来潜在的安全隐患。由于 Watcher 可以确定失败的基本缘由,还能避免离线剖析或静态剖析的多个成绩,这些痛点成绩将经过 Watcher 失掉处置。

    依据 2017 年的数据,软件缺点每年带来超过 1.7 万亿美金的财政损失,而且每个顺序员每年平均超过 1500 小时用于顺序调试。无侵入性部署,精准自动化复现多线程缺点,秒级自动错误缘由剖析,Watcher 为消费环境下的软件缺点剖析带来了曙光,也将能够会有几十亿美元级别的市场?

    论文链接:https://people.umass.edu/tongping/pubs/Watcher_OOPSLA20.pdf

    【编辑引荐】

    互联网的下一代技术——深度学习

    解码人工智能根技术

    华为快运用IDE上线Serverless云效劳,让快运用开发更快

    鸿蒙的js开发部形式17:鸿蒙的系统才能的运用模块

    在过去的几年中,运用Go编写的新恶意软件增长了2,000%

    (责任编辑:admin)