扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
据悉,Google已经实现世界级数据中心服务器监控,该项新技术可以监控在世界范围内的任何一台服务器上的任务,而它的最终目的就是想通过这些有效数据,来进行有选择性的进行干预或者关闭有关进程,是的CPU上的其他进程得以快速运行。
而搜索巨头在其技术论文(PDF)中详细的描述了这一世界级监视技术的实现方法,相信使用大型基于Linux云计算基础设施的机构都会对此感兴趣。论文中写道:
性能隔离是云计算的主要挑战。不幸的是,Linux缺少对共享资源中性能干扰的防御;这样的话,公有云中的应用程序将无法避免来自邻居们的干扰。
CPI²方案使用从硬件性能计数器获得的CPI数据检测问题,中断或者关闭“问题”进程从而达到预期的效果,当然它会根据相同作业中大量任务数据认知这个任务的反常与否。
本质上讲,CPI²让Google可以在集群上万个CPU核心中隔离单个核心上的单个性能低下任务,对这个任务进行检查并进行操作,而造成的CPU开销甚至不到0.1%。它并不需要特殊的硬件支持,唯一的软件依赖恰是使用Linux。
CPI²允许Google收集任何指定指令的预期CPUCPI,从这些数据中分析出标准的资源配置文件,然后使用这些标准的配置文件去帮助网络巨头确定哪些任务比一般情况下耗费了更多的CPI,从而解放与这些任务使用相同CPU的其它进程。
Google称,其绝大多数机器上都运行着多任务。作业的处理类型分为实时处理和批处理两种,同时这些作业由大量的任务组成。Google服务器上96%的任务都会与至少10个的任务组成一个作业,而87%左右的任务会与100或以上的任务组成一个作业。
但是这些任务可能会相互干扰,导致处理器缓存和内存分配问题,造成应用中的某个任务延时飙升——这正是Google不惜一切代价都想避免的问题。
为了实现任务流下每个处理器的控制,Google使用CPI监视所有运行的服务器。通过测量处理器硬件计数器,然后用 CPU_CLK_UNHALTED.REF除以INSTRUCTIONS_RETIRED来获得CPI数据。通过计算模式下的perf_event工 具,Google每分钟都会收集一个长为10秒周期的数据。系统中总CPU的开销低于0.1%,并且不会对延时产生影响。
因为集群需要跨大 量的平台运行,CPI的目的在于体现各种平台下的CPU运行情况。CPI的值通过每台机器上的agent进行本地分析和测量。agent 通常会被给予作业中任务预期最常见的CPI分布,所以它可以独立的分析出运行的正常与否。如果agent发现有“victim”任务受到影响变得缓慢,它 将会每秒一次的对“antagonist”任务进行干涉。agent会使用一个算法来判断“antagonist”任务的CPU占用增加与 “victim”任务的迟缓是否曾在关系,依据的则是指令的周期数。
如果agent识别了一个“antagonist”并发现它是个批量作业,系统将会“通过CPUhard-capping来强制减少 ‘antagonist的CPU占用率’”。鉴于CPI²和Omega论文的联合作者中都有JohnWilkes,Google很有可能是通过Omega 给agent发布任务。"antagonis"任务的配置文件与CPI数据进行的是离线的记录和存储,这样管理员就可以通过Google的主要网络分析工 具Dremel进行查询。
Google工程师使用Dremel进行性能取证,用以确定“antagonists”任务,在将来他们可能为“antagonists”任务重新制 定策略,让它们在单独的主机集中运行,然后使用这个调度进度来彻底的避免这个问题。其中有一个需要改进的方面是处理多个“antagonists”,它将 会复杂化算法;另一个则是为capping任务建立的反馈途径。即使这两方面还未改善,但是CPI²是个强大的、实用的工具。
而从整体上看,CPI²提供的不只是管理,更倾向于让集群运行的更加稳定、效率。如果你在执行搜索或者查看Gmai、通过Google服务查找地址时发现比平常需要更多的时间,那么你可能就会被CPI²冷酷及无情的当做是“antagonists”。
使用CPI²获得应用性能可行信息的开销比Google其它方案来的更少,这里还存在一个被称为“Google-WideProfiling”可同时对硬件和软件性能进行追踪的平行技术,但是只在Google小范围的进行使用。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者