当前位置: 首页 > news >正文

linux内存相关命令的尝试

文章目录

  • 前言
  • free
    • Mem 部分的解释
    • Swap 部分的解释
  • vmstat
    • Procs (进程)
    • Memory (内存)
    • Swap (交换)
    • IO (磁盘 I/O)
    • System (系统)
    • CPU (处理器)
  • pidstat
    • 标题行解释
    • 数据列解释
  • sar
    • 字段含义解释
    • 示例分析
  • 总结

前言

菜就多练,昨天看了一篇有关剖析 RocksDB 内存超限问题的文章,里面用了多种内存分析工具,看到那些貌似熟悉的名字,却一时也想不起怎么来用,当然像 free 和 top 这种命令还是比较熟的,但是像 vmstat 和 pidstat 这些就比较模糊了,翻了翻之前的总结也简单的描述过使用方法,但是对于这种已经忘记的实时也是不可回避的,菜就多练,今天就再练一练。

俗话说熟能生巧,有时候见的多了自然而然的就能发现规律了,比如 stat 这个词可是Linux命令中常见的面孔,它是单词 statistics 的缩写,也就统计的意思,所以就会出现类似 iostatvmstatnetstatpidstatmpstat 等命令,相似的还有各种 ps 和 各种 top 相关的命令,今天此文因内存而起,我们就先看看内存相关的 freevmstatpidstatsar 这几个命令。

free

free 命令是我最常用的内存命令,通常我使用时会加上 -h 参数更易读一些,命令虽简单,但是想完全理解却不易,并且不同的系统对于各列的参数实现还不完全相同,而我作为实用派,不愿想个学究一样去深挖各个参数的含义,还是以实用主义为主,明白各参数的基本含义即可

$ free -htotal        used        free      shared  buff/cache   available
Mem:          7.3Gi       5.8Gi       377Mi        40Mi       1.1Gi       1.2Gi
Swap:         9.0Gi       5.2Gi       3.7Gi

free -h 的输出显示了系统内存和交换空间的使用情况,在我看来total≈used+available,buff/cache的空间可能一部分属于used,又有一部分属于available,free应该总是小于available的,大体就是这些规则,精确的公式我是给不出的,对于常用的判断够用了:


Mem 部分的解释

  • total: 总的物理内存容量(7.3Gi)。
  • used: 已被使用的物理内存,包括应用程序和系统缓存(5.8Gi)。
  • free: 尚未分配的空闲物理内存(377Mi)。
  • shared: 共享内存,主要用于 tmpfs 和其他共享内存用途(40Mi)。
  • buff/cache: 用于缓冲区(buffer)和缓存(cache)的内存(1.1Gi)。
    • 缓冲区用于临时存储写入磁盘的数据。
    • 缓存用于存储从磁盘读取的数据,以便更快地访问。
  • available: 可供应用程序使用的内存(1.2Gi)。
    • 这个值是对系统内存的综合估算,它考虑了缓存中可以释放的部分。

Swap 部分的解释

  • total: 系统的交换空间总大小(9.0Gi)。
  • used: 已被使用的交换空间(5.2Gi)。
  • free: 尚未使用的交换空间(3.7Gi)。

vmstat

vmstat 是 Linux 和类 Unix 系统上的一个命令,用于实时监控系统性能,包括 CPU、内存、分页、磁盘 I/O 和上下文切换等信息。它非常适合用于分析系统瓶颈或性能问题。

$ vmstat 2 5 -S M
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st0  0   5351    526    152   1062    0    0    11    21    2    2  3  1 96  0  00  0   5351    526    152   1062    0    0     0     0 14509 35013  2  1 97  0  00  0   5351    525    152   1063    0    0     0    86 14671 35064  2  1 97  0  00  0   5351    525    152   1062    0    0     0    68 14692 35164  2  1 97  0  02  0   5351    525    152   1063    0    0     0   122 14504 35142  2  1 96  0  0

这个命令表示每2秒刷新一次,共刷新显示5次,单位用M,接下来以第一行数字为例,解释数据含义:


Procs (进程)

  • r: 正在运行队列中等待 CPU 的进程数。0 表示当前没有需要 CPU 的进程在排队。
  • b: 处于等待 I/O 的阻塞进程数。0 表示没有进程因等待 I/O 阻塞。

Memory (内存)

  • swpd: 使用的交换空间大小(单位:MB)。5351 表示已使用 5351 MB 的交换空间。
  • free: 空闲内存大小(单位:MB)。526 表示当前系统有 526 MB 的空闲内存。
  • buff: 用于缓冲区的内存大小(单位:MB)。152 表示 152 MB 的内存被用作缓冲区。
  • cache: 用于缓存的内存大小(单位:MB)。1062 表示 1062 MB 的内存被用作文件缓存。

Swap (交换)

  • si: 从磁盘交换到内存的数据速率(单位:MB/s)。0 表示当前没有从交换分区加载到内存的数据。
  • so: 从内存交换到磁盘的数据速率(单位:MB/s)。0 表示当前没有将内存数据写入交换分区。

IO (磁盘 I/O)

  • bi: 每秒从块设备(磁盘等)读取的数据量(单位:块)。11 表示每秒读取了 11 块数据。
  • bo: 每秒写入块设备的数据量(单位:块)。21 表示每秒写入了 21 块数据。

System (系统)

  • in: 每秒中断数(硬件和软件中断)。 2 表示每秒发生了 2 次中断。
  • cs: 每秒上下文切换次数。 2 表示每秒进行了 2 次上下文切换。

CPU (处理器)

  • us: 用户态进程占用 CPU 时间的百分比。 3 表示 CPU 时间的 3% 用于运行用户进程。
  • sy: 内核态进程占用 CPU 时间的百分比。 1 表示 CPU 时间的 1% 用于运行内核进程。
  • id: CPU 空闲时间的百分比。 96 表示 CPU 时间的 96% 是空闲的。
  • wa: CPU 等待 I/O 完成的时间百分比。 0 表示 CPU 没有时间在等待 I/O 操作完成。
  • st: 被虚拟机(如 KVM)偷走的时间百分比。 0 表示没有 CPU 时间被虚拟机消耗。

这个命令可以用来监控系统性能瓶颈:

  • 如果 r 的值过高,说明 CPU 短缺。
  • 如果 si 和 so 的值大,说明系统内存不足,频繁使用交换空间。
  • 如果 wa 的值高,说明 I/O 操作是瓶颈。

pidstat

pidstat 是 Linux 系统中 sysstat 工具集的一部分,用于监控和报告单个进程的性能指标。它可以提供有关 CPU、内存、I/O、线程等的详细信息,帮助分析系统性能瓶颈。

$ pidstat -p 242285 -r 2 5
Linux 5.4.0-200-generic (ThinkPad-X390)     2024年12月14日  _x86_64_        (8 CPU)15时10分47秒   UID       PID  minflt/s  majflt/s     VSZ     RSS   %MEM  Command
15时10分49秒  1000    242285      0.00      0.00  302184   79776   1.05  Game10010601
15时10分51秒  1000    242285      0.00      0.00  302184   79776   1.05  Game10010601
15时10分53秒  1000    242285      0.00      0.00  302184   79776   1.05  Game10010601
15时10分55秒  1000    242285      0.00      0.00  302184   79776   1.05  Game10010601
15时10分57秒  1000    242285      0.00      0.00  302184   79776   1.05  Game10010601
Average:     1000    242285      0.00      0.00  302184   79776   1.05  Game10010601

这个命令监控242285这个进程内存情况,每2秒刷新一次,共刷新显示5次,单位用M,接下来以第一行数字为例,解释数据含义:

标题行解释

  • Linux 5.4.0-200-generic:运行的内核版本。
  • ThinkPad-X390:主机名。
  • 2024年12月14日:当前日期。
  • _x86_64_:处理器架构。
  • (8 CPU):系统中有 8 个 CPU 核心。

数据列解释

  • 时间:采样的时间戳。
  • UID:用户 ID,显示运行进程的用户(1000 表示非 root 用户)。
  • PID:进程 ID,这里是 242285
  • minflt/s:每秒次要缺页错误数(无需从磁盘加载内存页)。
  • majflt/s:每秒主要缺页错误数(需要从磁盘加载内存页)。
  • VSZ:虚拟内存大小(以 KB 为单位)。这里是 302184 KB,即约 302 MB
  • RSS:驻留内存大小(以 KB 为单位),即实际使用的物理内存。这里是 79776 KB,即约 78 MB
  • %MEM:进程使用的物理内存百分比。这里是 1.05%
  • Command:进程的名称或命令,这里是 Game10010601

这些行展示了每次采样的统计数据。这里看到该进程的 minflt/smajflt/s 均为 0.00,表示没有发生缺页错误,内存访问性能良好。虚拟内存大小 (VSZ) 和驻留内存大小 (RSS) 都是恒定的,说明该进程的内存使用稳定。

sar

sar(System Activity Report)命令是一个用于收集、报告和保存系统活动信息的工具,通常在 Linux 和 Unix 系统中使用。它是 sysstat 软件包的一部分,提供了对系统性能的详细监控和分析。

$ sar -r 2 5
Linux 5.4.0-200-generic (ThinkPad-X390)     2024年12月14日  _x86_64_        (8 CPU)15时26分06秒 kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
15时26分08秒    455724   1363580   5547036     72.86    160416    859272  23892108    140.53   4759984   1552228       428
15时26分10秒    455684   1363544   5547052     72.86    160416    859280  23886860    140.50   4760760   1552232       436
15时26分12秒    455456   1363320   5547276     72.87    160416    859284  23890572    140.53   4760420   1552236       476
15时26分14秒    455456   1363324   5547272     72.87    160416    859288  23890572    140.53   4760476   1552240       480
15时26分16秒    454700   1362572   5548028     72.88    160420    859284  23873744    140.43   4762228   1552244       480
Average:       455404   1363268   5547333     72.87    160417    859282  23886771    140.50   4760774   1552236       460

这个命令表示每2秒刷新一次内存信息,共刷新显示5次,接下来以第一行数字为例,解释数据含义:

字段含义解释

  • 时间戳(如 15时26分08秒):表示采集数据的时间。
  • kbmemfree:可用内存(以 KB 为单位)。表示系统中尚未被使用的内存量。
  • kbavail:可用内存(即使在缓存和缓冲区中也可用的内存,以 KB 为单位)。这个值通常比 kbmemfree 更准确,因为它考虑了系统可以回收的缓存和缓冲区内存。
  • kbmemused:已使用内存(以 KB 为单位)。计算公式为:总内存 - 可用内存
  • %memused:已使用内存的百分比。计算公式为:(kbmemused / 总内存) * 100
  • kbbuffers:用于文件系统缓存的内存(以 KB 为单位)。这是 Linux 内核用于存储未写入硬盘的数据的缓存。
  • kbcached:用于缓存的内存(以 KB 为单位)。这些是存储在内存中的文件数据,Linux 会尽量使用这部分内存来加快读取速度。
  • kbcommit:提交内存(以 KB 为单位)。表示可以分配给进程的内存总量,达到该值时会导致内存不足。
  • %commit:提交内存的百分比。表示已提交内存与可用内存的比例。
  • kbactive:活动内存(以 KB 为单位)。表示最近被访问的内存页。
  • kbinact:非活动内存(以 KB 为单位)。表示不再被访问的内存页。
  • kbdirty:脏页内存(以 KB 为单位)。表示已被修改但尚未写入硬盘的内存。

示例分析

  • kbmemfree 在 455724 KB 左右,表示系统还有相当数量的可用内存,说实话也不算多了,才400多M。
  • kbmemused 的值为 5547036 KB,表示大约 5.5 GB 的内存已被使用,且 %memused 为 72.86%,表明内存使用率较高。
  • kbbufferskbcached 的值相对较小,这可能表示系统正在利用可用内存缓存数据,从而优化性能。
  • kbcommit%commit 的值显示系统的内存承诺也在一个相对健康的范围。

总结

  • free -h 最常用的内存查看工具,可以方便快捷知晓内存总体情况,查看总量与可用内存值
  • vmstat 2 5 -S M 可用于监控内存,分析系统瓶颈或性能问题,r 的值过高说明 CPU 短缺。si 和 so 的值大,说明系统内存不足,频繁使用交换空间
  • pidstat -p 242285 -r 2 5 可提供单个进程的内存使用信息,分析缺页情况
  • sar -r 2 5 可分析内存总体情况,查看活动内存、非活动内存、脏页内存等信息
  • 因统计口径的不同,可能会遇到两个命令查出来的值不同,这些不必强求,熟悉各个命令的特点,遇到问题多方比较就可以了

==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

我熬的不是夜,而是短暂的自由。因为我知道,一旦睡着了,再次醒来时我便不再属于我自已~

相关文章:

linux内存相关命令的尝试

文章目录 前言freeMem 部分的解释Swap 部分的解释 vmstatProcs (进程)Memory (内存)Swap (交换)IO (磁盘 I/O)System (系统)CPU (处理器) pidstat标题行解释数据列解释 sar字段含义解释示例分析 总结 前言 菜就多练&#xff0c;昨天看了一篇有关剖析 RocksDB 内存超限问题的文…...

Vue2 基础

Vue 2 是 Vue.js 的第二个主要版本&#xff0c;于 2016 年发布。它是一个渐进式的 JavaScript 框架&#xff0c;以其简单、灵活、易用性高而广受欢迎。Vue 2 主要专注于构建用户界面&#xff08;UI&#xff09;&#xff0c;并且非常适合用于构建单页应用&#xff08;SPA&#x…...

递归问题(c++)

递归设计思路 数列递归 : 如果一个数列的项与项之间存在关联性&#xff0c;那么可以使用递归实现 ; 原理 : 如果一个函数可以求A(n)&#xff0c;那么该函数就可以求A(n-1)&#xff0c;就形成了递归调用 ; 注意: 一般起始项是不需要求解的&#xff0c;是已知条件 这就是一个典型…...

系统思考—战略决策

别用管理上的勤奋&#xff0c;来掩盖经营上的懒惰。 日本一家物业公司&#xff0c;因经营不善&#xff0c;面临生死存亡的危机。老板为了扭转局面&#xff0c;采取了很多管理手段——提高员工积极性&#xff0c;推行业绩与绩效挂钩&#xff0c;实施各种考核制度。然而&#xf…...

wxwidgets xml插入图片的两种方案

wxwidgets xml插入图片的两种方案: 1.使用wxWidgets中的wxRichTextCtrl插入图片,将wxRichTextCtrl的buffer导出为xml文件 参考richtextctrl例子 if (wxTheClipboard->IsSupported(wxDF_BITMAP)){wxBitmapDataObject data;wxTheClipboard->GetData(data);wxBitmap bi…...

大模型呼入机器人如何赋能呼叫中心?(转)

大模型呼入机器人如何赋能呼叫中心&#xff1f;(转) 原作者&#xff1a;开源呼叫中心FreeIPCC 大模型呼入机器人在赋能呼叫中心方面发挥着重要作用&#xff0c;主要体现在以下几个方面&#xff1a; 一、提升服务效率与质量 24小时不间断服务&#xff1a; 大模型呼入机器人能…...

linux下socket本地套接字通讯

使用套接字除了可以实现网络间不同主机间的通信外&#xff0c;还可以实现同一主机的不同进程间的通信&#xff0c;且建立的通信是双向的通信。socket进程通信与网络通信使用的是统一套接口&#xff0c;只是地址结构与某些参数不同。 用途 进程间通信&#xff1a;本地套…...

NDRCContextUnmarshall断点函数分析之I_RpcBindingCopy函数的作用

NDRCContextUnmarshall断点函数分析之I_RpcBindingCopy函数的作用 第一部分&#xff1a; void RPC_ENTRY NDRCContextUnmarshall ( // process returned context OUT NDR_CCONTEXT PAPI *phCContext,// stub context to update IN RPC_BINDING_HANDLE hRPC, …...

WebView2教程(基于C++)【一】环境初始化

创建一个VisualStudio C项目&#xff0c;通过NuGet包管理器安装两个包&#xff1a; 注意&#xff0c;在项目属性页设置项目使用&#xff1a;C 20&#xff0c;子系统设置成窗口&#xff08;相应的预处理器也要改变&#xff09;&#xff0c;DPI识别设置成每个监视器高DPI识别。 …...

go语言中context的用法

0 概述 Context 是 Go 语言中非常重要的一个概念&#xff0c;它主要用于跨多个函数或 goroutine 传递 取消信号、超时控制、截止时间 和 请求范围数据。在并发编程中&#xff0c;Context 提供了更好的控制和管理&#xff0c;尤其是当你需要在多个 goroutine 之间传递状态或进行…...

概括网络给社会生活带来的种种影响

题目 【2002年国考申论】给定资料反映了网络给社会生活带来的种种影响&#xff0c;用不超过200字对这些影响进行概括。 要求&#xff1a;全面&#xff0c;有条理&#xff0c;有层次。(20分) 审题 特定事实&#xff1a;网络给社会生活带来的种种影响基本题型&#xff1a;单一…...

OpenCV相机标定与3D重建(16)将点从齐次坐标转换为非齐次坐标函数convertPointsFromHomogeneous()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::convertPointsFromHomogeneous 是 OpenCV 库中的一个函数&#xff0c;用于将点从齐次坐标&#xff08;homogeneous coordinates&#xff09;…...

Jmeter如何对UDP协议进行测试?

Jmeter如何对UDP协议进行测试&#xff1f; 1 jmeter-plugins安装2 UDP-Protocol Support安装3 UDP协议测试 1 jmeter-plugins安装 jmeter-plugins是Jmeter的插件管理器&#xff1b;可以组织和管理Jmeter的所有插件&#xff1b;直接进入到如下页面&#xff0c;选择如图的选项进…...

Unix 传奇 | 谁写了 Linux | Unix birthmark

注&#xff1a;本文为 “左耳听风”陈皓的 unix 相关文章合辑。 皓侠已走远&#xff0c;文章有点“年头”&#xff0c;但值得一阅。 文中部分超链已沉寂。 Unix 传奇 (上篇) 2010 年 04 月 09 日 陈皓 了解过去&#xff0c;我们才能知其然&#xff0c;更知所以然。总结过去…...

【网络】传输层协议UDP/TCP网络层IP数据链路层MACNAT详解

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;计算机网络原理_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.传输层协议 UDP 1.1 传输层 1.2 端口号 1.3 UDP 协议 1.3.1 UDP 协议端格式 1.3.2 UDP 的特点 1.3.3 面向数据报 1…...

RTMP推流平台EasyDSS在无人机推流直播安防监控中的创新应用

无人机与低空经济的关系密切&#xff0c;并且正在快速发展。2024年中国低空经济行业市场规模达到5800亿元&#xff0c;其中低空制造产业占整个低空经济产业的88%。预计未来五年复合增速将达到16.03%。 随着科技的飞速发展&#xff0c;公共安防关乎每一个市民的生命财产安全。在…...

ORACLE逗号分隔的字符串字段,关联表查询

使用场景如下&#xff1a; oracle12 以前的写法&#xff1a; selectt.pro_ids,wm_concat(t1.name) pro_names from info t,product t1 where instr(,||t.pro_ids|| ,,,|| t1.id|| ,) > 0 group by pro_ids oracle12 以后的写法&#xff1a; selectt.pro_ids,listagg(DIS…...

1.5 多媒体系统简介

目录 多媒体系统声音图形与图像动画和视频 多媒体系统 多媒体可分为感觉媒体、表示媒体、表现媒体、交换媒体。 感觉媒体&#xff1a;直接使人产生感觉的媒体&#xff0c;比如声音、图像、视频。表示媒体&#xff1a;计算机中记录感觉的数据格式。表现媒体&#xff1a;记录感觉…...

数据分析学习Day1-使用matplotlib生成2小时每分钟的气温可视化分析图

注意&#xff1a;需要提前下载matplotlib包 pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple import matplotlib.pyplot as plt import random from matplotlib import font_manager # 数据准备 x list(range(121)) # 使用 list() 转换为列表 y [rando…...

ansible部署nginx:1个简单的playbook脚本

文章目录 hosts--ventoryroles执行命令 使用ansible向3台centos7服务器上安装nginx hosts–ventory [rootstand playhook1]# cat /root/HOSTS # /root/HOSTS [webservers] 192.168.196.111 ansible_ssh_passpassword 192.168.196.112 ansible_ssh_passpassword 192.168.196.1…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

comfyui 工作流中 图生视频 如何增加视频的长度到5秒

comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗&#xff1f; 在ComfyUI中实现图生视频并延长到5秒&#xff0c;需要结合多个扩展和技巧。以下是完整解决方案&#xff1a; 核心工作流配置&#xff08;24fps下5秒120帧&#xff09; #mermaid-svg-yP…...