我正在努力加快编译我的应用程序所花费的时间,而我正在调查的一件事是检查哪些资源,如果有的话,我可以添加到构建机器以加快速度.为此,我如何确定是否应该投入更多的CPU,更多的RAM,更好的硬盘或者该进程是否受到其他资源的约束?我已经看到了这个(如何检查应用程序是cpu绑定还是内存绑定?)并且我正在寻找更多提示和指针.
到目前为止我尝试过的:
在构建计算机上与本地计算机上的进程计时.我发现构建机器需要的时间是我的机器的两倍.
运行"资源监视器"并查看进程运行时的CPU使用率,内存使用情况和磁盘使用情况 - 在执行此操作时,我无法解释数字,主要是因为我不明白每个列的含义以及转换为虚拟机与物理盒以及多CPU盒的含义.
windows performance resources performancecounter virtual-machine
我想使用.NET/Process性能计数器在网页上显示一些内存统计信息(工作集,GC等).不幸的是,如果该服务器上有多个应用程序池,则使用索引(#1,#2等)对它们进行区分,但我不知道如何将进程ID(我有)与该#xx索引进行匹配.是否有编程方式(来自ASP.NET网页)?
我在Web项目中使用ASP.net缓存,我正在为它编写一个"状态"页面,它显示缓存中的项目,以及我可以找到的有关缓存的许多统计信息.有什么方法可以获得缓存数据的总大小(以字节为单位)?每个项目的大小会更好.我想在网页上显示这个,所以我认为我不能使用性能计数器.
我有一个Windows服务,通过WCF服务接口提供某些虚拟队列的消息.我想揭露两个性能指标 -
第一个工作正常,第二个在PerfMon.exe中始终显示为0,尽管RawValue看起来是正确的.
我正在创建计数器 -
internal const string PERF_COUNTERS_CATEGORY = "HRG.Test.GDSSimulator";
internal const string PERF_COUNTER_ITEMSINQUEUE_COUNTER = "# Messages on queue";
internal const string PERF_COUNTER_PNR_PER_SECOND_COUNTER = "# Messages read / sec";
if (!PerformanceCounterCategory.Exists(PERF_COUNTERS_CATEGORY))
{
System.Diagnostics.Trace.WriteLine("Creating performance counter category: " + PERF_COUNTERS_CATEGORY);
CounterCreationDataCollection counters = new CounterCreationDataCollection();
CounterCreationData numberOfMessagesCounter = new CounterCreationData();
numberOfMessagesCounter.CounterHelp = "This counter provides the number of messages exist in each simulated queue";
numberOfMessagesCounter.CounterName = PERF_COUNTER_ITEMSINQUEUE_COUNTER;
numberOfMessagesCounter.CounterType = PerformanceCounterType.NumberOfItems32;
counters.Add(numberOfMessagesCounter);
CounterCreationData messagesPerSecondCounter= new CounterCreationData();
messagesPerSecondCounter.CounterHelp = "This …
Run Code Online (Sandbox Code Playgroud) 我有一个自定义计数器类别,我需要添加一个新的计数器,而不删除或重置任何现有的计数器.我怎样才能做到这一点?
我试着用CounterExists(),但即使我创建了计数器,我怎么能它关联到CounterCreationDataCollection项目,其关联到我现有的计数器类别?
启动和运行性能计数器的最小C#代码量是多少?
我只想测量代码中两点之间的CPU周期数和/或时间.我已经浏览了网络上的所有华夫饼干,但它似乎比这样一个微不足道的任务所需的代码更多.我只想快速测量并运行,并将更多精力放在我正在进行的工作上.
这是我的代码.
PerformanceCounter cpuCounter = new PerformanceCounter();
cpuCounter.CategoryName = "Processor";
cpuCounter.CounterName = "% Processor Time";
cpuCounter.InstanceName = "_Total";
// will always start at 0
dynamic firstValue = cpuCounter.NextValue();
System.Threading.Thread.Sleep(1000);
dynamic secondValue = cpuCounter.NextValue();
return secondValue;
Run Code Online (Sandbox Code Playgroud)
这里有很多人正在解决这个问题,即返回零,但我总是得到100,而且我确信我的软件不会占用那么多的CPU粉末.关于我能做些什么来使这项工作正确的任何想法.为了清楚起见,我试图从运行此代码的应用程序中检索处理器使用情况,而不是单独的代码.我也在VM上运行,但这似乎并不重要.有任何想法吗?
我正在尝试为某些应用程序创建负载测试.而且我希望只为我的应用程序的进程获取内存使用情况.为此,我添加Process / Working Set
到我的计数器中
问题是以Working Set
PerformanceCounter
字节为单位读取值并且不计算超过4294967296
等于4 GB的值
但我的应用程序"以64位模式运行"使用超过4 GB的内存
从TaskManager可以清楚地看到它需要大约6GB,但这个值不会出现在负载测试图中.
那么如何创建自定义的PerformanceCounter来完全像Process/Working Set
一个但使用Kilobytes而不是字节我可能得到真正的值.或者任何其他解决方案,使我能够计算我的应用程序在负载测试中使用内存的程度.
c# performance performancecounter load-testing performance-testing
我需要使用C#(或VB.Net)获取特定进程使用的CPU周期数.此信息可在Sysinternal的Process Explorer中的Process properties弹出窗口中找到.例如,我正在使用此消息发布的浏览器目前使用了18,521,360,165个cyles(给予或接受了几亿).有谁知道如何从.Net应用程序获取此信息?我知道如何获得CPU使用率(百分比),但这不是我正在寻找的.我需要一种方法来比较在不同时间运行的两个不同进程之间的CPU使用情况.
谢谢你,马特
更新:
为什么我需要这个?我是本地.Net用户组的领导者,我们正在运行代码挑战,开发人员提交代码来解决问题.我需要一种方法来衡量一个条目与另一个条目的表现.目前我正在使用计时器来衡量性能.服务器100%专用于此,但这并不能保证可能同时发生其他事情.显然,这是各种潜在问题,但总的来说,它是相当准确的.测量所使用的CPU周期数将是一种几乎万无一失的方法来衡量某人的入口对另一个人的表现.我确信有人可以在这一点上打洞 - 不需要在这一点上尝试.;-)我希望这有助于解释我的问题背后的原因以及为什么计时器不足以解决我的问题.
我在Windows服务中托管了一个WCF服务,通过netTCP与winform客户端进行通信.
很久以前,WCF服务在IIS中托管,此时我可以在性能计数器监视器中看到WCF服务的每个操作(performanceCounters ="All").这使得查看最常用的操作变得容易.
我需要再次使用这些性能计数器,但是这次即使在performanceCounters设置为"All"时我也无法在性能监视器中找到它们?
我需要做些什么才能把它们带回来?
WCF服务要求登录使用其操作,但登录由我手动完成,这意味着用户首先使用用户名和密码调用Login操作,如果其数据不正确,则抛出securityException.没什么先进的.