美文网首页博科园科技之光
计算机新跨内核分配对时间敏感的数据处理,可快速响应用户!

计算机新跨内核分配对时间敏感的数据处理,可快速响应用户!

作者: 博科园 | 来源:发表于2019-05-25 13:30 被阅读5次

现今的数据中心会消耗大量能量,并且会浪费大量的能量来尽可能快地响应用户的请求,而延迟只有几微秒。麻省理工学院(MIT)研究人员开发的一种新系统,通过更好地跨中央处理器(CPU)内核分配时间敏感的数据处理,并确保硬件高效运行,提高了高速操作的效率。

数据中心作为分布式网络运行,在单个服务器上实现大量web和移动应用程序。当用户向应用程序发送请求时,存储的数据片段将从数百或数千个服务器上提取。在发送响应之前,应用程序必须等待最慢的服务来处理数据,这种延迟时间称为尾部延迟。当前减少尾部延迟的方法使服务器中大量CPU内核处于打开状态,以便快速处理传入的请求。

博科园-科学科普:但这意味着内核大部分时间处于闲置状态,而服务器继续使用能源只是为了保持供电。数据中心可以包含数十万台服务器,因此即使每台服务器的效率稍有提高,也可以节省数百万美元。或者,一些系统根据工作负载在应用程序之间重新分配内核。但是这发生在毫秒以上——大约是当今快节奏请求所需速度的千分之一。等待太久也会降低应用程序的性能,因为在分配的时间之前没有处理的任何信息都不会发送给用户。在USENIX网络系统设计与实现大会上发表的一篇论文中,研究人员开发了一种更快的核心分配系统,名为Shenango,它可以减少尾部延迟,同时实现高效率。

麻省理工学院(MIT)研究人员开发的一个新系统,通过更好地跨CPU内核分配时间敏感的数据处理,并确保硬件高效运行,提高了数据中心高速操作的效率。图片:Massachusetts Institute of Technology

首先,一种新的算法可以检测哪些应用程序正在艰难地处理数据。然后,软件组件分配空闲内核来处理应用程序的工作负载。第一作者、计算机科学与人工智能实验室(CSAIL)的一名博士生Amy Ousterhout说:在数据中心,效率和延迟之间存在权衡,你真的需要在比每毫秒更细的粒度上重新分配内核。Shenango允许服务器“管理在非常短的时间内发生操作,并高效地执行这些操作。根据数据中心的大小和工作负载的不同,节省的能源和成本也会有所不同。但总体目标是提高数据中心的CPU利用率,使每个核心都能得到很好的利用。

目前的最佳CPU利用率约为60%,但研究人员表示,他们的系统可能会将这一数字提高到100%。电子工程和计算机科学的助理教授、CSAIL的研究员、论文的合著者Adam Belay说:现在数据中心的利用率非常低,这是一个非常严重的问题,在数据中心的一个地方是无法解决。但这个系统是提高利用率的一个关键因素。与Ousterhout和Belay一起发表论文的还有富士通电气工程和计算机科学系的讲座教授Hari Balakrishnan, CSAIL的博士生Jonathan Behrens和Joshua Fried。

高效的拥塞检测

在真实的数据中心,shenango算法和软件将在数据中心的每个服务器上运行,所有服务器将能够彼此通信。该系统的第一个创新是一种新的拥塞检测算法。该算法每5微秒检查排队等待处理每个应用程序的数据包。如果数据包仍在等待最后一次观察,该算法注意到至少有5微秒的延迟。它还检查是否有任何称为线程的计算进程等待执行。如果是这样,系统认为这是一个“拥挤”的应用程序。看起来很简单,但是队列的结构对于实现微秒级拥塞检测非常重要。传统的想法是让软件检查每个排队的数据包的时间戳,这将花费太多的时间。研究人员在称为“环形缓冲区”的有效结构中实现队列,这些结构可以想象成环上的不同槽。

第一个输入的数据包进入一个起始槽。当新的数据到达时,它们被放入环周围的后续槽中。通常,这些结构用于先入先出的数据处理,从起始槽提取数据并向结束槽工作。然而,研究人员的系统只在结构中短暂地存储数据包,直到应用程序能够处理它们。同时,存储的数据包可以用于拥塞检查。该算法只需要比较队列中的两个点(第一个数据包的位置和最后一个数据包在5微秒之前的位置)就可以确定数据包是否遇到了延迟。可以观察这两点,每5微秒跟踪它们的进程,看看有多少数据被处理过。因为结构很简单,每个核心只需要做一次。如果你查看24个核,会在5微秒内进行24次检查,这很好。

智能分配

第二个创新是IOKernel,它是将数据包引导到适当应用程序的中央软件中心。IOKernel还使用拥塞检测算法,能够比传统方法更快地将内核分配给拥塞应用程序,速度要快几个数量级。例如,IOKernel可能会看到某个应用程序需要微秒处理速度的传入数据包。如果应用程序因为缺少内核而拥塞,IOKernel会立即将空闲的内核分配给应用程序。如果它还看到另一个应用程序运行着对时间不敏感的内核,它会抓取其中一些内核,并将它们重新分配给拥塞的应用程序。处理后的数据返回IOKernel发送响应。

IOKernel关注的是哪些应用程序需要没有核心的内核,试图找出谁超载了,需要更多的核,并尽快给他们提供核,这样他们就不会落后,也不会有很大的延迟。IOKernel、算法、应用程序和服务器硬件之间的紧密通信“在数据中心中是独一无二的,并允许Shenango无缝地运行,该系统对每个服务器上发生的事情具有全局可见性。它可以看到提供数据包的硬件、每个内核中运行的内容以及每个应用程序的繁忙程度。它在微秒的尺度上做到了这一点。接下来,研究人员将对Shenango进行优化,以实现真实的数据中心。为此,他们确保软件能够处理非常高的数据吞吐量并具有适当的安全特性。

博科园-科学科普|研究/来自: 麻省理工学院/Rob Matheson

博科园-传递宇宙科学之美

相关文章

  • 计算机新跨内核分配对时间敏感的数据处理,可快速响应用户!

    现今的数据中心会消耗大量能量,并且会浪费大量的能量来尽可能快地响应用户的请求,而延迟只有几微秒。麻省理工学院(MI...

  • IPC之binder

    一、进程空间分配1、一个进程空间分为 用户空间 & 内核空间(Kernel),即把进程内 用户 & 内核 ...

  • 工程师文化

    from 宏宇 敏捷迭代 小步快跑,快速响应用户需求 正确的方案 快速 可持续 服务化重设计可管理 持续重构 重...

  • 初识Linux

    内核介绍 内核定义 内核控制计算机系统所有软硬件,分配硬件执行软件。 内核功能 系统内存管理 内存,交换区进行管理...

  • 《操作系统概念精要》之内存篇(七)-内存分配,伙伴系统,slab

    分配内核内存 在用户模式下运行进程请求额外的内存时(new, malloc)时,从内核维护的空闲页帧列表上分配页面...

  • 用户态和内核态

    操作系统会将内存分配为内核空间和用户空间 内核空间是由所有进程共享,每个进程通过系统调用进入内核用户空间中各个进程...

  • CPU上下文切换

    栈空间 用户态函数栈主要用于用户态的函数调用image.png 内核栈Linux 给每个 task 都分配了内核栈...

  • 异步I/O

    为什么要异步 I/O 用户体验 只有后端能够快速响应资源,才能让前端的体验变好 资源分配 利用单线程,远离多线程死...

  • runloop 总结篇

    用户态 和内核态1.是以权限划分,用户态不直接对如何分配内存等等进行管理,怕出各种情况等等。用户态需要切换成内核...

  • Linux零拷贝笔记-上

    前情提要-关键的OS概念: 内核空间:计算机内存被分为用户空间和内核空间。内核空间运行OS内核代码,并可以访问所有...

网友评论

    本文标题:计算机新跨内核分配对时间敏感的数据处理,可快速响应用户!

    本文链接:https://www.haomeiwen.com/subject/agiazqtx.html