Articles of cpu usage

SocketInputStream.socketRead0()中CPU占用率高的原因

在分析本土networking应用程序的时候,我发现下面非常奇怪(至less对我来说)是观察的。 几乎所有的时间都花在SocketInputStream类的socketRead0()方法中。 这并不奇怪,因为我的应用程序在每个请求上都与远程服务联网。 奇怪的是,这种方法不仅壁挂时钟使用率高, CPU时钟时间也很高。 我不明白为什么CPU时间很长,因为如果我的应用程序等待远程服务来回复(实际上这不是很快),那么应用程序本身就没有什么可做的了。 所以CPU时间应该显然很低。 还有一些观察: 在采样模式下的VisualVM显示,方法SocketInputStream.socketRead0()正在消耗高达95%的时间(挂钟时间和 CPU时间); mpstat (我们使用Linux作为操作系统)显示约90%的用户时间和约1-3%的系统时间(其余为空闲时间); 应用程序部署在专用服务器上; 远程服务也是HTTP Web应用程序。 平均响应时间约为100ms。 平均响应大小约为2Kb。 我的应用程序使用spring RestTemplate与远程服务交互,而不是直接与SocketInputStream交互。 现在我只有一个想法 – 也许这是在JVM中调用本地方法的开销( SocketInputStream.socketRead0()是本地的)? 你怎么看? 有没有其他的原因呢?

如何获得“CPU%”比TOP命令更高的精度?

当我使用TOP命令时,我可以得到以下信息: shell@android:/ $ top -n 1 User 31%, System 10%, IOW 0%, IRQ 0% User 346 + Nice 10 + Sys 120 + Idle 637 + IOW 6 + IRQ 0 + SIRQ 2 = 1121 PID PR CPU% S #THR VSS RSS PCY UID Name 481 1 26% S 89 762832K 81688K fg system […]

计算Android中进程的CPU使用情况

我正在试图计算Android中的一个进程的CPU使用情况如下,但我不知道,如果它的权利,由于产量产生。 从jiffie转换为seconds:jiffie / hertz 第一步:使用/proc/uptime文件的第一个参数获取正常/proc/uptime 。 第二步:从/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq获取每秒的时钟滴答数。 第三步:从/proc/[pid]/stat获取进程花费的总时间(utime(14) +stime(15))参数 第四步:在Linux 2.6之后,从/proc/[pid]/stat获得进程的启动时间(22),该值用时钟滴答表示(除以sysconf(_SC_CLK_TCK))。 第5步:获取自启动以来的进程总(uptime – (starttime / hertz) (因为运行时间以秒为(uptime – (starttime / hertz) ,启动(uptime – (starttime / hertz)以时钟周期为单位)。 第6步:获取CPU使用率((totaltime / hertz) / elapsedTime) * 100 。 计算后的输出类似于5.702244483458246E-6,大约等于〜0.000005702244483 编辑 产量 步骤1:226.06 1211.19 第2步:1000000 步骤3:9347(example.com)S 3573 3573 0 0 -1 1077952832 8971 0 1 0 38 32 0 0 […]

在Linux中限制用户可用的内存和CPU

我有点担心可以在共享机器上使用的资源数量。 有什么方法可以testingpipe理员是否对我可以使用的资源数量有限制? 如果是,做一个更完整的问题,我怎样才能设置这样的限制? 谢谢。

使用RDTSC获取CPU周期 – 为什么RDTSC的值总是增加?

我想在特定的点上获得CPU周期。 我在这个时候使用这个函数: static __inline__ unsigned long long rdtsc(void) { unsigned long long int x; __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x)); return x; } 问题是它总是返回一个数字(每次运行)。 就好像它是指绝对时间。 我使用function不正确吗?

(Windows)C中的特定进程的CPU和内存消耗情况?

我想监视一个给定的进程在Windows(nt体系结构 – XP中,Vista,WIN7)的CPU和内存消耗,每隔几秒做一个图,我已经search周围,但只发现非C解决scheme(Java,C# C ++等)我知道有一个PerformanceCounter类,但显然它不是在C中可用。 谢谢

每个进程的CPU使用率

我在google上发现了这个代码,它计算了win10上当前进程的使用率,但是我正在寻找的是每个进程的CPU使用率的百分比列表。 我使用GetCurrentProcess()来处理当前进程的句柄。 有没有办法检索每个进程的句柄?我正在编写一个列出正在运行的进程的代码,并为每个人计算使用内存。 然后我需要计算每个人的CPU使用率,但我没有发现任何东西在谷歌。 static ULARGE_INTEGER lastCPU, lastSysCPU, lastUserCPU; static int numProcessors; static HANDLE self; void init(){ SYSTEM_INFO sysInfo; FILETIME ftime, fsys, fuser; GetSystemInfo(&sysInfo); numProcessors = sysInfo.dwNumberOfProcessors; GetSystemTimeAsFileTime(&ftime); memcpy(&lastCPU, &ftime, sizeof(FILETIME)); self = GetCurrentProcess(); GetProcessTimes(self, &ftime, &ftime, &fsys, &fuser); memcpy(&lastSysCPU, &fsys, sizeof(FILETIME)); memcpy(&lastUserCPU, &fuser, sizeof(FILETIME)); } double getCurrentValue(){ FILETIME ftime, fsys, fuser; ULARGE_INTEGER now, sys, […]

为什么是:可见,控制分配的TA,影响应用程序的CPU使用率?

如果一个TAction链接到一个对象,比如TToolButton ( TToolButton Item)或TActionClientItem (Item的TActionToolBar ),并且该对象在运行时是可见的,那么无论何时在表单中移动鼠标(除了Toolbars之外的任何地方)基于可见的TA的数量,在CPU上完成额外的负载,即当在前面提到的任何一个条上没有任何一个TA链接项可见时移动鼠标。 显而易见的是,额外加载的显着百分比完全取决于您正在运行的是什么types的钻机,但是我注意到的是,当您的应用程序具有以下情况时,实际的差异可能是显着的: 很多明显的TAction链接项目 已经为onMouseOver事件执行较小计算的自定义组件,例如更改控件的外观 自定义的视觉风格 所以问题是为什么可见项链接的TAction组件会影响鼠标移动的处理?

如何在Windows上限制进程的CPU使用率? (需要代码,而不是应用程序)

有一些程序能够限制Windows中进程的CPU使用率。 例如BES和ThreadMaster 。 我需要编写自己的程序来完成与这些程序相同的function,但具有不同的configurationfunction。 有谁知道一个进程的CPU节stream是如何完成的(代码)? 我不是在谈论设置进程的优先级,而是如何将CPU使用率限制在例如15%,即使没有其他进程争夺CPU时间。 更新:我需要能够扼杀已经运行的任何进程,并且我没有源代码访问权限。

尝试在Windows PC上禁用处理器闲置状态(C状态)

我需要防止处理器进入空闲状态(非C0 C状态)。 不可否认,我对处理器C和P的状态了解不多,所以请耐心等待。 我们使用来自第三方供应商偶尔提供损坏帧的相机。 供应商已经确定,当CPU进入空闲状态时,它会干扰火线上的帧的传输。 为了确认这一点,我在Windows 7 PC上使用了下面的代码,事实上,禁用闲置状态解决了这个问题。 //WIN7 const DWORD DISABLED = 1; const DWORD ENABLED = 0; GUID *scheme; PowerGetActiveScheme(NULL, &scheme); PowerWriteACValueIndex(NULL, scheme, &GUID_PROCESSOR_SETTINGS_SUBGROUP, &GUID_PROCESSOR_IDLE_DISABLE, DISABLED); PowerSetActiveScheme(NULL, scheme); 如果我运行我的应用程序并打开Windows Permon并添加%C1时间,%C2时间和%C3时间,当我禁用这些状态时,我发现它们全部为零,当启用它们时,我看到了相当多的时间C3状态(这是戴尔Precision T3500四核电脑)。 我也需要在XP上执行此操作,但这些调用在XP上不可用。 所以我试图做以下操作来禁用闲置状态 unsigned int ActPwrSch; DWORD currPolicy,newPolicy, curr1Policy,curr2Policy, new1Policy, new2Policy; MACHINE_PROCESSOR_POWER_POLICY Policy; if(GetActivePwrScheme(&ActPwrSch)) { if(ReadProcessorPwrScheme(ActPwrSch,&Policy)) { printf("Read Power Scheme:\n"); //if(Policy.ProcessorPolicyAc.DisableCStates!=0) currPolicy = […]