草庐IT

mars-cpu

全部标签

Off-CPU分析

前言性能问题可以分为两种类型:On-CPU:线程花时间在CPU上运行的地方;Off-CPU:在I/O,锁,计数器,分页/交换上阻塞等待的时间Off-CPU的分析是一种性能分析的方法,用于测量和研究Off-CPU的时间以及堆栈跟踪等上下文。它不同于CPUProfiling,后者仅当线程在On-CPU上执行时检查线程。在这里,我们的目标是阻塞和Off-CPU的时间段。如下图蓝色部分:Off-CPU的分析是与CPU分析相辅相成的,可以理解为这个就是100%的线程时间。此方法不同于应用程序功能阻塞的跟踪技术,因此这个方法是针对内核调度的阻塞概念。这是一种方便捕获的概念。线程离开CPU的原因包括:I/O

c# - CPU温度监控

对于一个编程项目,我想访问我的CPU和GPU的温度读数。我将使用C#。从各种论坛我得到的印象是,您需要特定的信息和开发人员资源才能访问各种板的信息。我有一个MSINF750-G55板。MSI的网站上没有我要查找的任何信息。我尝试了他们的技术支持,与我交谈的代表表示他们没有任何此类信息。必须有一种方法来获取该信息。有什么想法吗? 最佳答案 至少对于CPU方面的事情,您可以使用WMI。命名空间\对象是root\WMI,MSAcpi_ThermalZoneTemperature示例代码:ManagementObjectSearcherse

c# - 为什么完全由CPU约束的进程与超线程一起工作会更好?

鉴于:一个完全CPU绑定(bind)的非常大的工作(即超过几个CPU周期),而具有4个物理内核和总共8个逻辑内核的CPU8、16和28个线程的性能是否可能比4个线程好?我的理解是,在4个物理核心计算机上,与4个物理核心计算机上的8个,16个或28个线程相比,在任何意义上4个线程将具有较少的上下文切换来执行,并且的开销较小。但是,时间是-ThreadsTimeTaken(inseconds)478.82848.581651.352852.10下面的原始问题部分中提到了用于测试获得计时的代码。CPU规范也在底部给出。阅读了各种用户提供的答案并在评论中给出了信息之后,我终于可以将问题归结为我

c# - 将 Visual Studio C# 项目从 x86 更改为任何 CPU

我正在使用VisualStudio2005进行一些C#项目,我正在尝试将平台目标从x86更改为任何CPU。我已经检查了我所知道的所有依赖项,并确保它们也是使用corflags工具为任何CPU构建的。当我在VisualStudio2005中更改平台目标时,它似乎保存了更改,但是当我构建项目时它仍然使用x86。下次我打开项目时,平台目标已重置为x86。这只发生在解决方案中的几个项目中,这是否意味着某处还有其他32位依赖项?我可以在命令行上使用/platform:anycpu手动运行C#编译器,我没有收到错误,但我不确定这样做是否正确,我希望能够在VisualStudio中构建。我该怎么做才

c# - 使用 PerformanceCounter 跟踪每个进程的内存和 CPU 使用情况?

如何使用System.Diagnostics.PerformanceCounter跟踪进程的内存和CPU使用情况? 最佳答案 对于每个进程数据:Processp=/*getthedesiredprocesshere*/;PerformanceCounterramCounter=newPerformanceCounter("Process","WorkingSet",p.ProcessName);PerformanceCountercpuCounter=newPerformanceCounter("Process","%Process

c# - async/await 是否适契约(Contract)时受 IO 和 CPU 限制的方法?

MSDN文档似乎指出async和await适用于IO绑定(bind)任务,而Task.Run应该用于CPU-绑定(bind)任务。我正在开发一个应用程序,该应用程序执行HTTP请求以检索HTML文档,然后对其进行解析。我有一个看起来像这样的方法:publicasyncTaskLoadPage(Uriaddress){using(varhttpResponse=awaitnewHttpClient().GetAsync(address))//IO-boundusing(varresponseContent=httpResponse.Content)using(varcontentStre

c# - 如何以编程方式将程序的 CPU 使用率限制在 70% 以下?

最近,我在构建我的程序时变得更加注重健康,我观察到大多数程序需要2或3分钟才能执行,当我检查任务调度程序时,我发现它们占用了100%的CPU用法,我可以在代码中以编程方式限制这种用法吗?这肯定会让我能够在给定时间运行多个程序。谢谢,尼迪 最佳答案 这个帖子已有四年多了,它仍然让我感到恼火,因为接受的答案批评问题而不是回答问题。您想要限制程序占用的CPU时间的正当理由有很多,我可以列出一些我的想法。不使用所有可用的空闲CPU周期似乎是一种浪费,但这种心态是有缺陷的。与旧的CPU不同,大多数现代CPU不以固定的时钟速度运行-许多具有省电

c# - CPU友好的无限循环

写一个无限循环很简单:while(true){//addwhateverbreakconditionhere}但这会降低CPU性能。该执行线程将尽可能多地占用CPU的资源。降低对CPU影响的最佳方法是什么?添加一些Thread.Sleep(n)应该可以解决问题,但是为Sleep()方法设置高超时值可能表明应用程序对操作系统没有响应。假设我需要在控制台应用程序中每分钟左右执行一次任务。我需要让Main()在“无限循环”中运行,而计时器将触发完成该工作的事件。我希望Main()对CPU的影响最小。你有什么建议。Sleep()可能没问题,但正如我已经提到的,这可能表明线程对操作系统没有响应。

c# - 我怎样才能得到CPU温度?

我需要为正在开发的应用程序收集一些系统信息。使用C#可以轻松获得可用内存和CPU负载。不幸的是,CPU温度并不是那么容易。我试过使用WMI,但我无法使用Win32_TemperatureProbe或MSAcpi_ThermalZoneTemperature我该怎么做?我想知道监控程序(如SiSoftwareSandra)如何获取该信息...这是类的代码:publicclassSystemInformation{privateSystem.Diagnostics.PerformanceCounterm_memoryCounter;privateSystem.Diagnostics.Per

c# - 在 'Any CPU' .NET 程序集上强制执行 x86 CLR

在.NET中,“平台目标:任何CPU”编译器选项允许.NET程序集在x64机器上以64位运行,在x86机器上以32位运行。也可以使用“平台目标:x86”编译器选项强制程序集在x64机器上作为x86运行。是否可以运行带有“任何CPU”标志的程序集,但确定它应该在x86还是x64CLR中运行?通常,这个决定是由CLR/OS加载器(据我所知)基于底层系统的位数做出的。我正在尝试编写一个C#.NET应用程序,它可以与其他正在运行的进程交互(阅读:将代码注入(inject))。x64进程只能注入(inject)其他x64进程,x86也一样。理想情况下,我想利用JIT编译和AnyCPU选项来允许使