0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Below:一个用于现代Linux系统的Apache 2.0许可的资源监视器

Linux爱好者 来源:Linux中国 作者:Linux中国 2021-10-26 09:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在这篇文章中,我们将介绍 below:一个用于现代 Linux 系统的 Apache 2.0 许可的资源监视器。below 可以让你重放以前记录的数据。

背景

内核的主要职责之一是调度对资源的访问。有时这可能意味着分配物理内存,使多个进程可以共享同一主机。其他时候,它可能意味着确保 CPU 时间的公平分配。在这些场景里,内核提供了机制,而将策略留给了“别人”。

近来,这个“别人”通常是 systemd 或 dockerd 这样的运行时。运行时接受来自调度器或最终用户的输入(类似于运行什么和如何运行)并在内核上转动正确的旋钮和拉动正确的杠杆,从而使工作负载能够好好工作。

在一个完美的世界里,故事就到此结束了。然而,现实情况是,资源管理是一个复杂的、相当不透明的技术混合体,在几十年里计算技术不断发展。尽管其中一些技术有各种缺陷和死角,但最终的结果是,容器运作得比较好。

虽然用户通常不需要关心这些细节,但对于基础设施运营商来说,对他们的技术架构拥有可见性是至关重要的。可见性和可调试性对于检测和调查错误的配置、问题和系统性故障至关重要。

让事情变得更加复杂的是,资源中断往往难以重现。经常需要花费数周时间等待一个问题重新出现,以便调查其根本原因。规模的扩大进一步加剧了这个问题:我们不能在每台主机上运行一个自定义脚本,希望在错误再次发生时记录下关键状态的片段。因此,需要更复杂的工具。这就出现了 below。

动机

历史上,Facebook 一直是 atop[1] 的忠实用户。atop 是一个用于 Linux 的性能监视器,能够报告所有进程的活动以及各种系统级活动。与 htop 等工具相比,atop 最引人注目的功能之一是能够作为一个守护程序记录历史数据。

这听起来是一个简单的功能,但在实践中,这使得调试无数的生产问题成为可能。有了足够长的数据保留,就有可能在时间上回溯,查看在问题或故障发生之前、期间和之后的主机状态。

不幸的是,随着时间的推移,人们发现atop 有某些不足之处。首先,控制组[2]cgroup 已经成为控制和监视 Linux 机器上资源的实际方式。atop 仍然缺乏对这一基本构建模块的支持。

第二,atop 用自定义的 delta 压缩方法在磁盘上存储数据。这在正常情况下运行良好,但在沉重的资源压力下,主机很可能会丢失数据点。由于使用了 delta 压缩,在数据最重要的时间段内,数据可能会大面积丢失。

第三,用户体验有一个陡峭的学习曲线。我们经常听到 atop 的资深用户说,他们喜欢密集的布局和众多的键盘绑定。然而,这也是一把双刃剑。当一个刚进入这个领域的人想要调试一个生产问题时,他们现在要同时解决两个问题:手头的问题和如何使用 atop。

below 是由 Facebook 的资源控制团队为其设计和开发的,并得到了 atop 生产环境用户的支持。顾名思义,资源控制团队负责的是规模化的资源管理。该团队由内核开发人员、容器运行时开发人员和硬件人员组成。认识到下一代系统监控器的机会,我们在设计 below 时考虑到以下几点:

易用性:below 必须既能为新用户提供直观的体验,又能为日常用户提供强大的功能。*有意义的统计数据:below 显示准确和有用的统计数据。即便可以,但我们尽量避免收集和倾倒统计数字。

灵活性:当默认设置不合适时,我们允许用户自定义他们的体验。例如包括可配置的键绑定、可配置的默认视图,以及脚本界面(默认为终端用户接口)。

安装

安装该软件包:

# dnf install -y below

打开记录守护进程:

# systemctl enable --now below

快速介绍

below 最常用的模式是重放模式。顾名思义,重放模式是重放以前记录的数据。假设你已经启动了记录守护程序,那么通过运行以下程序启动一个会话:

$ below replay --time “5 minutes ago”

然后你会看到控制组视图:

506693ba-3582-11ec-82a8-dac502259ad0.png

如果你不知道该怎么操作,或者忘记了一个键位,按 ? 可以进入帮助菜单。

屏幕的最上方是状态栏。状态栏显示关于当前样本的信息。你可以通过按 t 和 T 分别向前和向后移动样本。中间的部分是系统概览。系统概览包含了关于整个系统的统计数据,一般来说,这些数据总是很有用的。第三部分也是最下面的部分是多用途视图。上面的图片显示了控制组视图。此外,还有进程和系统视图,分别通过按 p 和s 来访问。

按 ↑ 和 ↓ 来移动列表选择。按回车键来折叠和展开控制组。假设你发现了一个感兴趣的控制组,你想看看它里面有哪些进程在运行。要放大进程视图,选择控制组并按 z:

50836c74-3582-11ec-82a8-dac502259ad0.png

再按 z 返回到控制组视图。这个视图有时会有点长。如果你对你要找的东西有一个模糊的概念,你可以通过按 / 并输入一个过滤器来过滤控制组名称。

50c9b76a-3582-11ec-82a8-dac502259ad0.png

在这一点上,你可能已经注意到了一个我们还没有探索过的标签系统。要在标签中向前和向后循环,可以分别按 Tab 和 Shift + Tab。我们把这个问题留给读者去做练习。

其他功能

在底层,below 有一个强大的设计和架构。Facebook 正在不断升级到更新的内核,所以我们从不假设数据源是可用的。这种默契的假设使得内核和 below版本之间能够完全向前和向后兼容。此外,每个数据点都用 zstd 压缩并完整地存储。这解决了我们看到的 atop 在大规模时的 delta 压缩问题。根据我们的测试,我们的每个样本压缩可以达到平均 5 倍的压缩率。

below 也使用 [eBPF][8] 来收集关于短暂进程(生存时间短于数据收集间隔的进程)的信息。相比之下,atop 使用 BSD 进程核算来实现这一功能,这是一个已知缓慢且容易发生优先级转换的内核接口。

对于用户来说,below 还支持实时模式和一个转储接口。实时模式将记录守护程序和 TUI 会话合并到一个进程中。这对于浏览系统状态是很方便的,不需要为数据存储投入长期运行的守护程序或磁盘空间。转储接口是一个可编写脚本的接口,用于所有的 below 数据存储。转储既强大又灵活,详细的数据以 CSV、JSON 和人类可读格式提供。

总结

below 是一个 Apache 2.0 许可的开源项目,我们(below 的开发者)认为它比资源监控领域的现有工具具有引人注目的优势。我们已经花了大量的精力来准备 below,以提供开源使用,所以我们希望读者和社区有机会尝试 below,并报告错误和功能要求。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    9444

    浏览量

    156140
  • 开源
    +关注

    关注

    3

    文章

    4031

    浏览量

    45566
  • 脚本
    +关注

    关注

    1

    文章

    407

    浏览量

    29051

原文标题:Below:一个时间旅行的资源监控器

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问NuMicro® Cortex-M® 系列芯片是否支持 I2C 监视器功能?

    NuMicro® Cortex-M® 系列芯片是否支持 I2C 监视器功能?
    发表于 08-21 06:04

    UCD90124 12轨电源序列系统健康监测技术总结

    UCD90124是 12 轨 PMBus/I^2^C 可寻址电源定序系统健康监视器。该器件集成了 12 位 ADC,
    的头像 发表于 08-19 11:17 737次阅读
    UCD90124 12轨电源序列<b class='flag-5'>器</b>和<b class='flag-5'>系统</b>健康监测<b class='flag-5'>器</b>技术总结

    UCD90320 32 轨 PMBus 电源定序系统管理器技术手册

    和温度。在 84 GPIO 引脚中,8 可用作数字监视器 (DMONx),32 用于启用电源 (ENx),24
    的头像 发表于 08-19 09:29 685次阅读
    UCD90320 32 轨 PMBus 电源定序<b class='flag-5'>器</b>和<b class='flag-5'>系统管理器</b>技术手册

    德州仪器ADS131B24-Q1高压电池组监视器技术解析

    Texas Instruments ADS131B24-Q1高压电池组监视器用于汽车电动汽车 (ev) 电池管理系统 (BMS) 的完全集成监视器。ADS131B24-Q1集成了两
    的头像 发表于 08-12 15:08 728次阅读
    德州仪器ADS131B24-Q1高压电池组<b class='flag-5'>监视器</b>技术解析

    Texas Instruments AMC6V704模拟监视器和控制数据手册

    Texas Instruments AMC6V704模拟监视器和控制专为光收发应用而设计。它包括四具有可编程输出范围的12位VDAC和四
    的头像 发表于 07-17 10:13 542次阅读
    Texas Instruments AMC6V704模拟<b class='flag-5'>监视器</b>和控制<b class='flag-5'>器</b>数据手册

    使用SIL级电源监视器的优势

    此前强调了诊断活动对于满足基本功能安全标准的定性和定量的意义,如图1所示。出于定性考虑,无论安全完整性等级(SIL)如何,都必须实施电源监视器。而对于定量要求,主要有两考虑因素:可靠性预测和架构
    的头像 发表于 07-11 15:40 1364次阅读

    Analog Devices Inc. LTC3337次电池健康状况监视器数据手册

    Analog Devices Inc. LTC3337次电池健康状况 (SOH) 监视器可提供电池放电、电压、阻抗和温度的精确实时读数。LTC3337设计用于次电池串联,相关串联
    的头像 发表于 07-01 10:46 588次阅读
    Analog Devices Inc. LTC3337<b class='flag-5'>一</b>次电池健康状况<b class='flag-5'>监视器</b>数据手册

    四创电子获得3821型监视雷达许可

    近日,民航空管工程技术研究所组织民航专家在四创电子召开3821型监视雷达许可证届满换发专家评审会。
    的头像 发表于 06-03 10:06 681次阅读

    Analog Devices Inc. ADES1830/ADES1831 16通道电池监视器数据手册

    Analog Devices ADES1830/ADES1831 16通道电池组监视器是多电池组监视器,最多可测量16节串联电池。在整个温度范围内,这些器件的使用寿命总测量误差 (TME) 小于
    的头像 发表于 05-26 15:34 736次阅读
    Analog Devices Inc. ADES1830/ADES1831 16通道电池<b class='flag-5'>监视器</b>数据手册

    TPS65200 Li+ 电池充电器,带有 WLED 驱动和分流监视器数据手册

    监视器集成在 芯片。 TPS65200 采用微型 2.8mm × 2.6mm、36 引脚、0.4mm 间距芯片尺寸球栅 数组 (DSBGA)。
    的头像 发表于 04-28 14:22 599次阅读
    TPS65200 Li+ 电池充电器,带有 WLED 驱动<b class='flag-5'>器</b>和分流<b class='flag-5'>监视器</b>数据手册

    cRIO连接电脑后为什么弹不出来那个设备监视器

    为什么我的电脑检测不到cRIO设备,下载了CompactRIO驱动还是弹不出来设备监视器,RIO设备管理也找不到,但是在新建终端与设备里面能见到real time 扫描模块,没有real time resource模块,是不
    发表于 03-06 20:37

    ISL28022精密数字电源监视器

    ISL28022 是款具有串行接口的双向高端和低端数字电流检测和电压监控。 该器件可监测电流和电压,提供数字化结果并计算功率。   该器件为整个输入范围内的电压和电流监控提供误差低于 0.3% 的严格精度。 数字电源监视器
    的头像 发表于 02-21 10:55 797次阅读
    ISL28022精密数字电源<b class='flag-5'>监视器</b>

    FE1.1S的国产替代芯片DPU1.1S 高性能、低功耗4口高速USB2.0HUB控制芯片 USB拓展坞等应用之选

    驱动和成本方面具有优势。 主要应用在USB扩展坞、USB延长线、计算机外设、监视器、车载系统、机顶盒领域。 主要特性 -完全兼容USB2.0和USB1.1协议;-系统频率支持480MH
    发表于 01-24 12:16

    迅为RK3568开发板篇OpenHarmony配置HDF驱动控制LED-新增 topeet子系统-编写 bundle.json文件

    /demos\" - 代码段的目标路径,即这个组件或项目在系统中的存放位置。 dirs: {} - 空对象,可能用于定义与组件相关的目录结构,但在这个配置中未使用。 scripts
    发表于 01-15 15:59

    dm6437使用hdmi连接输出到监视器上,监视器上没有显示是怎么回事?

    你好dm6437后端和tfp410连接输出高清视频,使用hdmi 连接输出到监视器上,发现监视器上没有显示? 设置的分辨率为800*480 ,在群创的7寸lcd屏上是可以显示输出的。
    发表于 01-09 06:05