有一个在我的节目,其中一个while循环IterZNext,IterZ是指向列表中的节点.列表中的节点是struct类型,带有一个名为"Index"的字段.
double xx = 20.0;
double yy = 10000.0;
double zz;
while (IterZNext!=NULL && NextIndex<=NewIndex)
{
IterZ=IterZNext;
IterZNext = IterZ->Next;
if (IterZNext!=NULL)
{
zz = xx + yy;
NextIndex1 = IterZNext->Index; // line (*)
NextIndex = IterZNext->Index; // line (**)
IterZNext->Index;
}
}
Run Code Online (Sandbox Code Playgroud)
当我描述我的程序时,我找到了行(*)
NextIndex1 = IterZNext->Index;
Run Code Online (Sandbox Code Playgroud)
消耗大部分CPU时间(2.193s),而行(**)
NextIndex = IterZNext->Index;
Run Code Online (Sandbox Code Playgroud)
与行(*)最相似的只使用0.093s.我使用英特尔VTune放大器来查看这两条线的组装,如下所示:
Address Line Assembly CPU Time Instructions Retired
Line (*):
0x1666 561 mov eax, dword ptr [ebp-0x44] 0.015s 50,000,000
0x1669 561 mov ecx, dword ptr …Run Code Online (Sandbox Code Playgroud) 我想知道php中的内存和CPU使用情况,因为我有时使用cronejobs CPU过载所以在这种情况下我不想开始更多的进程,我只是想跳过这个cron.
我正在制作一个播放音频和大量DSP的Android应用程序.使用BetterBatteryStats,我在HTC One X上发现,当屏幕关闭时,CPU将节流回到384 MHz.对于我正在尝试的DSP处理,这个速度太慢了.
有没有办法让HTC One X在不保持屏幕的情况下移动到这么慢的速度?部分唤醒锁似乎没有削减它.
我们在其中一个应用服务器上看到了一个有趣(但非常严重)的问题:在某个时间点,运行我们的Web应用程序的JVM的CPU使用率开始上升并持续上升,直到应用程序最终减速到爬行.解决此问题的唯一方法是重新启动应用程序服务器软件.
这让我想到一个简单的问题; 我们可以做些什么来解决这个问题?
我考虑过使用VisualVM(或其他一些JVM监控工具),但他们能做的最好 - 在这种特殊情况下 - 给我一个线程转储,它仍然不会告诉我是什么占用了所有的CPU时间(除非我我错过了什么.
我需要帮助找出在我的应用程序中后台执行的代码.如果我在我的应用程序中运行仪器中的活动监视器,即使按下主页按钮后它也会始终使用大约1%的CPU.
这是,我假设,一旦它的backgroundTimeRemaining已经过期,就会导致iOS将我的应用程序从暂停状态踢出.即使在显然没有发生任何事情的屏幕上,即使我只是让手机睡了几分钟,应用程序仍会使用CPU时间并被踢出暂停状态.
我已经在我的应用程序中完成了对NSTimers的项目范围搜索,以确保在我离开应用程序后没有任何内容被解雇,并且在应用程序接收网络消息的热门地点放置断点,但似乎没有被击中
我已经确认当它没有连接到调试器时仍然会发生这种情况,当我按下主页按钮时,其他应用程序似乎变为0或更接近0 CPU利用率.
什么工具可以帮助我实现目标并找出后台运行的代码?
编辑1:在Petesh的评论之后,我更多地使用了仪器中的Time Profiler,并发现我可以设置检测范围,并在我将应用程序置于挂起状态后仅查看代码运行.我找到了一些不应该运行的代码,我修复了它,但是应用程序在几分钟后仍然被踢出暂停状态!
活动监视器现在只显示0.1-0%的CPU使用率,而应用程序是后台运行的.再次运行Time Profiler会发现,我认为唯一运行的是主运行循环.在后台约一个小时的时间277毫秒.如果我检查"反转调用树"框,则显示时间主要花费在mach_msg_trap上,总时间为46毫秒.我不确定这是否是正常行为.
我已经解决了我的一些问题,但最重要的部分仍然存在.什么阻止我的应用程序停留在暂停状态?
编辑2(固定!):经过深入挖掘后,我找到了罪魁祸首.第三方库正在调用beginBackgroundTaskWithExpirationHandler:,然后endBackgroundTask:在完成时从不调用.因此,我相信iOS认为该应用程序仍在尝试执行后台任务,并且在某个后台时间结束后,即使它没有真正做任何事情,它也终止了应用程序.
仪器中的活动监视器现在在初始后台代码运行后的整个时间内确实显示0%.
自从我第一次提出这个问题以来,我不确定是不是这个或者是我修复的所有东西的组合,但无论哪种方式,它都是固定的!
编辑3:经过更多研究后我发现它实际上不是第三方库的错.该库正在侦听applicationDidEnterBackground通知,因此它可以刷新它的队列.但是在我们自己的applicationDidEnterBackground中,我们还有一个强制刷新队列.因此,它尝试两次启动后台任务,只完成一次.哎呀!
我们在专用的VPS上有一个小的(现在)Asp.Net MVC 5网站.当我去服务器和启动任务管理器时,我看到"SQL Server Windows NT - 64位"正在使用大约80%的CPU和170MB的RAM,而IIS正在使用6%的CPU和400MB的RAM.服务器规格是:
数据库不是很大.它的备份不到10MB.
我试图尽可能地优化网站.我为很多控制器添加了缓存,并为很多控制器实现了甜甜圈缓存.但是今天,即使在线只有5个用户,我们的搜索也行不通.我重新启动了服务器上的Windows,它开始工作,但我得到了服务器启动时的高CPU使用率.有趣的是,当我打开SQL Server Management Studio并尝试获取顶级CPU消耗查询的报告时,它表示目前没有查询消耗任何CPU!但与此同时我可以看到SQL服务器消耗了大量的CPU.如何检查所有CPU的内容?以下是服务器的图片:

我对设计和实施网站非常谨慎.所有数据库访问都是通过最新版本的Entity Framework.我只是想知道服务器的规格是否很低.任何帮助将非常感谢.
这是sp_who2存储过程的结果.

asp.net performance cpu-usage sql-server-performance sql-server-2012
我有安装了CDT的标准Eclipse Kepler.有时当它闲置一段时间时,javaw.exe开始吃CPU高达30%.没有任何东西在Eclipse中运行,没有索引,没有库更新,没有构建或编译.
如何调试Eclipse以查看某些内容是否在后台运行?Eclipse是否有任何控制台或日志,以便我可以看到究竟在做什么?
更不用说了,我甚至重新启动了Eclipse,但它只运行了一会儿,然后再次达到高CPU使用率.可能是什么问题呢?
我注意到Xcode严重影响了我的计算机性能.我只能让Xcode一次打开几分钟,然后我打开的所有内容开始变慢,电脑开始过热.当我检查活动监视器时,通常有5-15行说"com.apple.dt.Xcode.sourcecontrol.Git".有时我的应用程序不会通过登录页面,直到我强行退出它们.有没有人遇到过这个?是否有任何设置可以更改以停止此操作?
我正在维护和开发两个与串行设备连接的Akka Scala应用程序来收集传感器信息.两者之间的主要区别在于,一个(我的二氧化碳传感器应用程序)使用1%CPU,而另一个(我的功率传感器应用程序)使用250%CPU.这在Linux机器(Raspberry Pi 3)以及我的Windows台式PC上都是如此.代码方面,主要区别在于CO2 直接使用串行库(http://fazecast.github.io/jSerialComm/),而Power传感器应用程序通过一层中间件来转换串行库的In/OutputStreams到Akka Source/Sink:
val port = SerialPort.getCommPort(comPort)
port.setBaudRate(baudRate)
port.setFlowControl(flowControl)
port.setComPortParameters(baudRate, dataBits, stopBits, parity)
port.setComPortTimeouts(timeoutMode, timeout, timeout)
val isOpen = port.openPort()
if(!isOpen) {
error(s"Port $comPort could not opened. Use the following documentation for troubleshooting: https://github.com/Fazecast/jSerialComm/wiki/Troubleshooting")
throw new Exception("Port could not be opened")
}
(reactive.streamSource(port.getInputStream), reactive.streamSink(port.getOutputStream))
Run Code Online (Sandbox Code Playgroud)
当我看到这种高CPU使用率时,我立即打了一个Profiler(VisualVM)对它说了以下内容:

在谷歌搜索Unsafe.park后,我找到了以下答案:https://stackoverflow.com/a/29414580/1122834 - 使用此信息我检查了上下文切换的数量,并且没有我的Power传感器应用程序,结果非常清晰关于问题的根本原因:
pi@dex:~ $ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id …Run Code Online (Sandbox Code Playgroud) 我在Linux服务器上运行以下Java代码:
while (true) {
int a = 1+2;
}
Run Code Online (Sandbox Code Playgroud)
它导致一个CPU核心达到100%的使用率.我对此感到困惑,因为我了解到CPU通过时间分割来处理任务,这意味着CPU将在一个时隙(CPU时间范围调度程序)中执行一项任务.如果有10个时隙,则while true任务最多应使用10%的CPU使用率,因为其他90%将分配给其他任务.那么为什么它100%?