当前位置:首页 > 嵌入式 > Linux阅码场
[导读]跟踪诊断技术SIG致力于为操作系统生态提供系统性,工具化,并以数据为支撑的发现、跟踪和诊断问题的能力。SIG目标:为龙蜥社区(OpenAnolis)开源操作系统,提供一个全栈覆盖内核与核心组件的跟踪和诊断工具,增强龙蜥社区(OpenAnolis)全栈的可观察性和可靠性。欢迎更多开...

跟踪诊断技术 SIG致力于为操作系统生态提供系统性,工具化,并以数据为支撑的发现、跟踪和诊断问题的能力。

SIG目标:为龙蜥社区(OpenAnolis开源操作系统,提供一个全栈覆盖内核与核心组件的跟踪和诊断工具,增强龙蜥社区(OpenAnolis)全栈的可观察性和可靠性。欢迎更多开发者加入跟踪诊断技术SIG:

网址:https://openanolis.cn/sig/tracing

邮件列表:cloud-kernel@lists.openanolis.cn

SIG 本月亮点

系统排查工具 ssar

7月份,我们计划将阿里云自研的 ssar 贡献给龙蜥社区( OpenAnolis) ,作为跟踪诊断 技术SIG 和 龙蜥社区( OpenAnolis) 中第一款系统层面的排查工具。当前 ssar 的开源工作正在有序进行中,欢迎各位开发者关注跟踪诊断技术SIG,及时获取项目消息

ssar 简介

大家平常会经常遇到系统不稳定的情况,往往需要依赖一款sar(System Activity Reporter)系统活动报告类工具来追踪系统曾经发生了什么,以便确定引起系统不稳定的根源。

相信不少同学在使用传统的sar工具排查系统问题时,都会遇到如下一些苦恼:

1、传统sar工具固定采集一些主要的系统指标。以TCP重传为例,只采集了整机重传数数据。若想扩展采集更详细的重传子类型数据,需要修改C语言代码,增加指标十分困难。2、传统sar工具无进程级指标的记录,当整机CPU或内存等指标出现波动时,无法定位具体的进程级因素。

3、针对 linux load 这个即熟悉又陌生的指标异常,单凭sar工具本身无能为力。

4、传统sar工具在系统异常时,采集工具本身往往也无法正常运行,常常引起数据中断的情况发生。

这里介绍一款功能强大的阿里云自研sar类型工具ssar(SRE System Activity Reporter)。它是系统活动报告sar工具家族中崭新的一个,几乎涵盖了传统sar工具的大部分主要功能之外,还扩展了更多的整机指标,新增了进程级指标和特色的load指标。

与其他sar家族工具相比,ssar有如下几个特色的地方:

1、ssar工具无需修改C语言代码,只需几分钟简单修改配置文件,几乎可以扩展采集系统的任意指标;2、传统sar工具或者无法二次开发,或二次开发门槛较高,ssar工具支持使用python语言二次开发,二次开发入门的门槛低;

3、ssar工具完整的记录了系统所有进程的CPU和内存等关键指标,并可以按需进行指标排序输出;

4、针对Linux load指标,ssar工具还提供了详细的load指标信息,其中的load5s指标是国内外全行业独创。

5、为了避免系统异常时采集数据中断情况发生,ssar工具在内存不足和CPU资源紧张时做了最大兼容。

6、最后,作为一款优秀的sar类型工具,ssar的本身的资源消耗也是及其优秀的,内存资源占用只有不足5MB,CPU使用率只有不足单核的1%。

当然了,采集更多的数据,必然占用更多的磁盘存储空间。近20年来,随着存储技术的发展,在同样成本结构的前提下,磁盘空间容量增长了1000倍。基于这样背景,适当占用一定的存储空间,采集更多数据指标是值得的。

ssar 上手体验

下面带大家抢先体验ssar的强大功能:

  • 通过配置文件实现常用指标的展示。
首先,配置需要采集的数据源文件。

{src_path='/proc/stat', cfile=’stat’, turn=true},然后,在配置文件中配置指标项。
user = {cfile='stat', line_begin='cpu', column=2, width=10, metric='d'}system = {cfile='stat', line_begin='cpu', column=4, width=10, metric='d'}idle = {cfile='stat', line_begin='cpu', column=5, width=10, metric='d'}iowait = {cfile='stat', line_begin='cpu', column=6, width=10, metric='d'}最后,在配置文件中配置视图项。

cpu  = ['user''system','idle','iowait']做完上面的配置工作,就可以使用ssar –cpu命令查看指标了
$ ssar --cpu collect_datetime user/s system/s idle/s iowait/s 2021-08-09T06:45:00 1.05 1.75 6395.72 0.01 2021-08-09T06:50:00 0.85 1.57 6396.11 0.01 2021-08-09T06:55:00       0.94       1.56    6395.99       0.01 
  • 通过自定义指标灵活显示不常用指标的展示。

在一个多核的系统中,如果想查看每个核的idle类型cpu资源分布,可以通过如下自定义指标功能实现。在stat文件中,第2到5行数据对应了0到3号核,而第5列值对应了idle的cpu资源情况。

$ ssar -o 'metric=d|cfile=stat|line=2-5|column=5|alias=idle_{line};' collect_datetime idle_2/s idle_3/s idle_4/s idle_5/s 2021-08-09T06:48:00 99.92 99.46 99.84 99.92 2021-08-09T06:53:00 99.91 99.45 99.85 99.93 2021-08-09T06:58:00 99.91 99.42 99.81 99.90拥有了自定义指标这个强大功能,可以很方便的支持我们在python等语言中实现二次开发功能。为了方便数据的解析,这里还提供了贴心的json格式数据输出(选项--api)。
$ ssar -o 'metric=d|cfile=stat|line=2-5|column=5|alias=idle_{line};' –api
  • 排序显示内存资源申请增量多的进程列表。
通过procs子命令可以显示出过去5分钟内,内存申请增量最多的3个进程列表。
$ ssar procs -r 5 -o pid,ppid,rss,rss_dlt,nlwp,cmd -k rss_dlt -l 3 pid ppid rss rss_dlt nlwp cmd 197779 1 14624 472 1 syslog-ng 185017 1 136328 400 1 systemd-journal 27495 77722 360 360 1 sleep
  • 国内外全行业独创load5s指标更加精准的显示系统的load情况。
通过load5s子命令可以显示更加精准的5秒级别的load5s指标。这里明显可以看出传统的load1指标在系统负载压力消失后,还一定的滞后性,但load5s指标却可以精准的显示机器的负载压力。

$ ssar load5scollect_datetime threads load1 runq load5s2021-08-09T14:17:35 1047 0.28 2 12021-08-09T14:17:40 1058 0.25 1 02021-08-09T14:17:47 3047 113.46 1453 14142021-08-09T14:17:53 3053 264.62 2002 20012021-08-09T14:17:59 3053 403.74 2002 20022021-08-09T14:18:05 1049 371.41 1 02021-08-09T14:18:10 1055 341.67 1 02021-08-09T14:18:15 1048 314.31 1 0此外,load2p子命令还可以详细显示load5s偏高时刻的进程线程信息和D状态调用栈信息。

  • 工具本身采集进程资源消耗小,并且资源使用平稳。
ssar工具本身的采集进程sresar本身只消耗不足4MB的内存使用。同时,该进程的min_flt次缺页中断数也保持在一个固定数值上,说明采集进程在运行期间无物理内存申请。当系统内存处于极度紧张时,这个特点就可以使sresar采集器比其他sar工具具有更强的鲁棒性。
$ ssar proc -p $(pidof sresar) -i1 -o collect_datetime,rss,min_flt,cmdcollect_datetime rss min_flt cmd 2021-08-09T11:40:00 1524 631 sresar 2021-08-09T11:41:00 1708 1231 sresar 2021-08-09T11:42:00 3552 1748 sresar 2021-08-09T11:43:00 3552 1748 sresar 2021-08-09T11:44:00 3552 1749 sresar 2021-08-09T11:45:00 3552 1749 sresar 2021-08-09T11:46:00 3552 1749 sresar 2021-08-09T11:47:00 3552 1749 sresar 2021-08-09T11:48:00       3552       1749 sresar          

ssar 开源计划

ssar 项目的开源计划正在有条不紊的进行中,预计近期会和大家见面。同时也欢迎大家持续关注跟踪诊断技术 SIG:https://openanolis.cn/sig/tracing ,开源后我们会第一时间更新信息。

SIG 近期规划

跟踪诊断技术SIG 近期计划将更多的工具贡献至龙蜥社区( OpenAnolis ),其中包括上文提到的 ssar、网络时延跟踪工具、内核诊断工具集和 TCP 跟踪诊断工具等。逐步构建并增强整个龙蜥操作系统(Anolis OS)和内核层面的跟踪和诊断能力,为开发者带来愈加清晰完整的工具生态体系,弥补当前跟踪诊断工具的碎片化和易用性的问题。

同时,我们也希望更多的开发者参与到跟踪诊断技术SIG 的讨论和开发,不仅仅是基于现有的工具与能力,希望有更多更新更酷的工具加入到 SIG 中,一同构建业界领先的跟踪诊断生态。—— 完 ——
关于龙蜥社区SIGSIG是开放的,并争取让交付成果成为社区发行的一部分,由组内核心成员主导治理,可通过邮件列表和组内的成员进行交流。龙蜥社区目前有近20个SIG,包括跟踪诊断技术SIG、商密软件栈、高性能存储技术SIG、Java语言与虚拟机SIG、Cloud Kernel、OceanBase SIG等。

SIG网址:https://openanolis.cn/sig

关于龙蜥社区
加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】拉你入群;加入钉钉群:扫描下方钉钉群二维码。欢迎开发者/用户加入龙蜥OpenAnolis社区交流,共同推进龙蜥社区的发展,一起打造一个活跃的、健康的开源操作系统生态!

龙蜥社区钉钉交流群

龙蜥社区-小龙

开源社区" data-from="0">戳“阅读原文”一键直达跟踪诊断技术SIG
更多精彩,尽在"Linux阅码场",扫描下方二维码关注

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭