.NET必知的EventCounters性能指标监视器

在.NET我们对于性能指标监控,其实常见的有两个方法,一个是CLI工具dotnet-counters而另一个是代码级别的EventListener.

使用dotnet-counters

dotnet-counters是一个性能指标监视工具,用于临时运行状态监视和初级性能调查。它可以观察通过 EventCounter API发布的性能计数器值。例如,可以快速监视 CPU 使用情况或 .NET Core 应用程序中引发的异常率,以了解在使用 PerfView 或 dotnet-trace 深入调查更严重的性能问题之前是否有任何可疑操作。

-- 摘自 dotnet-counters

命令

  • dotnet-counters collect

  • dotnet-counters list

  • dotnet-counters monitor

  • dotnet-counters ps


安装dotnet-counters CLI工具,可通过如下命令:

dotnet tool install --global dotnet-counters

更新命令如下所示:

dotnet tool update dotnet-counters --global

安装完工具之后,我们可以进行查看可监视的进程:

dotnet-counters ps12268 dotnet C:\Program Files\dotnet\dotnet.exe16324 dotnet C:\Program Files\dotnet\dotnet.exe

获取到进程ID后,我们可以通过如下命令进行监视:

dotnet-counters monitor -p 12268

监视特定的EventSources,可以提供以一个空格分隔开的EventSources列表,如下所示:

dotnet-counters monitor -p 12268 System.Runtime MyEventSource

在默认的情况下,我们对于EventSource监视时,它捕获的是所有的计数器。如果我们想单独跟踪某几个计数器那么可通过如下方式进行指定:

dotnet-counters monitor -p 12268 System.Runtime[cpu-usage,gc-heap-size]       

对于监视器我们可以设置刷新频率,可以通过--refresh-interval参数来设置:

dotnet-counters monitor -p 12268  --refresh-interval 3   System.Runtime[cpu-usage,gc-heap-size]

代码中的EventCounters

EventListener提供了进程内(In-Process)订阅和消费日志事件的方式,EventListener可以接收到来自EventSource分发的日志事件。这些事件内涵盖了GC、JIT、ThreadPool和interop的行为。

创建EventListener

在下面我们进行重写OnEventSourceCreated方法,该方法会在调用时接收一个EventSource对象,我们可以通过EventSource对象的Name属性去筛选我们感兴趣的日志事件,筛选后我们需要显示的调用EnableEvents方法向感兴趣的日志事件发起订阅。

    internal sealed class MyEventListener : EventListener{protected override void OnEventSourceCreated(EventSource eventSource){if (eventSource.Name.Equals("Microsoft-Windows-DotNETRuntime")){EnableEvents(eventSource, EventLevel.Verbose, (EventKeywords)(-1));}}}

事件消费

接下来我们需要进行重写OnEventWritten,关于日志事件相关的信息会被封装成一个EventWrittenEventArgs对象,我们不仅可以通过它获取当前日志事件的所有信息,而且我们还可以进行获取到EventSource对象。Payload包含了不同属性的值ReadOnlyCollection<object>, 而PayLoadNames ReadOnlyCollection<object>中包含了不同的属性名称,我们现在可以通过如下方式进行获取这些属性:

        protected override void OnEventWritten(EventWrittenEventArgs eventData){Console.WriteLine($"ThreadID = {eventData.OSThreadId} ID = {eventData.EventId} Name = {eventData.EventName}");for (int i = 0; i < eventData.Payload.Count; i++){string payloadString = eventData.Payload[i]?.ToString() ?? string.Empty;Console.WriteLine($"\tName = \"{eventData.PayloadNames[i]}\" Value = \"{payloadString}\"");}Console.WriteLine("\n");}

参考

https://stackoverflow.com/questions/61081063/get-total-number-of-allocations-in-c-sharp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xcode 修改 infodictionary_安卓系统修改复位键生效时间

文档说明本文档以SC806-CN-00(msm8909平台&#xff0c;Android 7)为例&#xff0c;说明如何修改复位键生效时间。应用背景默认情况下&#xff0c;按复位键&#xff0c;系统马上直接关机。在实际应用中&#xff0c;有可能由于干扰造成的抖动导致误关机行为。 为避免发生这种情况…

为什么曾经优秀的人突然变得平庸?

职场&认知洞察 丨 作者 / findyi这是findyi公众号分享的第95篇原创文章一个读者的提问&#xff1a;洋哥&#xff0c;我从小都是学霸&#xff0c;本硕都是985&#xff0c;计算机科班出身&#xff0c;但进入职场后却始终无法取得突破。工作5年还是基层员工&#xff0c;我该怎…

php xlsx格式转换csv,我想使用C将.xls或.xlsx文件转换为.csv格式#

我试图用C编写代码,将.xls/.xlsx文件转换为.csv文件,打开文件后将其保存为.csv文件,但结果文件仍然具有所有Excel属性(如合并单元格、标题等),但当我查看属性时,它将文件类型显示为.csv。在我的代码中,我打开一个execl并使用saveas保存它。using System;using System.Collectio…

java编程_Java编程和C语言的比较

很多人都拿Java编程和c语言相比较&#xff0c;那么今天小编就来先说说个人理解吧&#xff0c;新手学习Java很简单&#xff0c;上手也很容易&#xff0c;只需要会拼音就可以&#xff0c;简单而且没有门槛&#xff0c;而c语言学习成本高&#xff0c;更需要投入较大的精力&#xf…

.NET Core3.1升级.NET5,坑还真不少...

11月11号是电商狂欢的日子&#xff0c;也是.NET5正式发布的日子&#xff0c;媳妇儿等着零点秒杀&#xff0c;我却在刷新着微软官网等更新&#xff0c;然后第一时间开始折腾。此前Scott Hunter在博客信誓旦旦.NET Core3.1平滑迁移.NET5&#xff0c;于是当天就去升级我的宝藏项目…

mysql查询语句4,MySQL(4):CRUD语句(2)——基本查询

“增删改查”的查询语句。create table student(id int,name varchar(20),chinese float,english float,math float);insert into student(id,name,chinese,english,math) values(1,张小明,89,78,90);insert into student(id,name,chinese,english,math) values(2,李进,67,98,5…

requestPermissions读写手机存储权限_泛圈云盘可为企业建立高效安全的云办公在线协同文档存储?...

泛圈企业云盘结合智能手机和无线网络&#xff0c;实现对任何办公地点和办公时间的无缝访问&#xff0c;提高办公效率。它可以连接客户原有的各种IT系统&#xff0c;包括OA、邮件、ERP等各种个人业务系统&#xff0c;使手机也可以用来操作、浏览、管理公司的所有工作事务&#x…

怎么将SVG转成PNG(.NET工具包编写)

序一天&#xff0c;作者在深圳湾吹风时突然想到自己还有 20 多位粉丝&#xff0c;所以决定每周至少要水一篇文章。众所周知&#xff0c;一篇文章要有封面&#xff0c;正痛苦时&#xff0c;.NET 官方网站更新了一大波质量上乘的插图&#xff1b;高兴之余&#xff0c;发觉平台不支…

matlab 数组 冒号,matlab中冒号的用法

转自&#xff1a;https://hi.baidu.com/sunsee/item/9985c91895bd88f8ddeecae3对于A(四行五列)矩阵,A(2:3,1:2:5)是什么意思?问题补充&#xff1a;能解释下为什么是一,三,五列满意回答显示A的第二行与第三行的第一、三、五列。因为矩阵后面如果是圆括号&#xff0c;那么都表示…

ghelper怎么在手机上用_当长时间不用手机玩《崩坏3》、《战双》

崩坏3、战双&#xff0c;虽然是手机游戏&#xff0c;作为一个PC党&#xff0c;我还是热衷于用电脑玩游戏。用电脑玩游戏可以把画质全部开到最大&#xff0c;依旧可以顺畅地进行游戏。手机就不行&#xff0c;即使是苹果&#xff0c;把画质拉满&#xff0c;依旧会有卡顿。特别是崩…

java ee监听器编程,java EE开发之Servlet第四课:监听器(Listener)

1&#xff0e;什么是Listener监听器就像老板的秘书&#xff0c;那个秘书就是活的监听器&#xff0c;时时监听着老板&#xff0c;当老板发生一些事情的时候&#xff0c;秘书就会有相应的措施。比如老板口渴了&#xff0c;秘书就会去端茶&#xff1b;比如老板要提提神&#xff0c…

System.Text.Json中时间格式化

转自&#xff1a;Rayomcnblogs.com/Rayom/p/13967415.html简介.Net Core 3.0开始全新推出了一个名为System.Text.Json的Json解析库&#xff0c;用于序列化和反序列化Json&#xff0c;此库的设计是为了取代Json.Net(Newtonsoft.Json)时间格式化的不足System.Text.Json的优点就不…

windows server 启用 vss_windows服务器常用的安全加固方法

Windows操作系统本身已经提供了多种安全机制&#xff0c;如标识与鉴别、访问控制、用户账户控制、安全审计、文件系统。但是&#xff0c;这并不意味着操作系统就固若金汤。事实上&#xff0c;任何一个Windows版本都或多或少的存在着漏洞&#xff0c;而且在不断的被挖掘出来。Wi…

说说 C# 9 新特性的实际运用

前言你一定会好奇&#xff1a;“老周&#xff0c;你去哪开飞机了&#xff1f;这么久没写博客了。”老周&#xff1a;“我买不起飞机&#xff0c;开了个铁矿&#xff0c;挖了一年半的石头。谁知铁矿垮了&#xff0c;压死了几条蜈蚣&#xff0c;什么也没挖着。”所以&#xff0c;…

thinkpad笔记本散热风扇_十代酷睿笔记本低至2999元 你可以入手了_笔记本新闻

这年头3000元能干什么&#xff1f;买一套化妆品还是一套乐高积木&#xff1f;现在很严肃地告诉你&#xff0c;可以买一台笔记本&#xff0c;而且是搭载英特尔第十代酷睿处理器的轻薄笔记本——联想ThinkPad 翼14 Slim。联想ThinkPad 翼14 Slim轻薄笔记本其搭载了英特尔十代酷睿…

matlab对数据插值增加数据,matlab数据插值与拟合方法

晚上做一个曲线拟合&#xff0c;结果才开始用最小二乘法拟合时&#xff0c;拟合出来的东西太难看了&#xff01;于是尝试用其他方法。经过一番按图索骥&#xff0c;终于发现做曲线拟合的话&#xff0c;采用插值法是比较理想的方法。尤其是样条插值&#xff0c;插完后线条十分光…

BenchmarkDotNet v0.12x新增功能

起因在看.Net 官方博客 .Net 5性能优化 中,发现测试性能的BenchmarkDotNet版本已经是v0.12.1,然后去看BenchmarkDotNet文档,发现还是有不少新的特性.v0.12.0支持多个运行时(API改进),增加对.Net 5支持支持DotNet创建BenchmarkDotNet项目(项目模版)增加NativeMemoryProfiler(目前…

邮箱通知php,PHPMailer 发送邮件(含详细介绍及使用方法说明)

上篇文章PHP mail()方法发送邮件部分邮箱无法收到邮件问题提到要介绍一下phpmailer这款免费开源的php 邮件程序&#xff0c;下面我们来看看吧&#xff0c;以下资料全部来自phpmailer官方网站&#xff1a;PHPMailer 也是一个功能强大的邮件类PHPMailer的主要功能特点&#xff1a…

centos amd双显卡_PCIe4.0和PCIe3.0对显卡性能差别大吗?

众所周知&#xff0c;AMD X570、B550主板&#xff0c;包括RX3000系列显卡&#xff0c;率先支持了PCIe 4.0协议&#xff0c;高达32GB/s带宽&#xff0c;相比现在的PCIe3.0带宽足足翻了一倍&#xff0c;也是AMD新平台一大卖点&#xff0c;然而intel却无动于衷&#xff0c;并各种表…

我画着图,FluentAPI 她自己就生成了

在 Newbe.ObjectVistor 0.3 版本中我们非常兴奋的引入了一个紧张刺激的新特性&#xff1a;使用状态图来生成任意给定的 FluentAPI 设计。开篇摘要 在非常多优秀的框架中都存在一部分 FluentAPI 的设计。这种 API 设计更加符合人类自言语言描述。使得代码更加具备可读性。在 New…