标签: cpu-usage

是否可以从Java应用程序控制CPU使用率?

我正在开发一个通过HTTP传输音乐的Java应用程序,我遇到的一个问题是,当应用程序从磁盘读取音频文件并将其发送到客户端时,它通常会将CPU最大化为90-100 %(可能导致用户运行其他应用程序时出现问题).

是否可以控制执行此工作的线程使用较少的CPU,还是需要由OS控制?是否有任何技术可以管理您目前的应用程序密集程度?

我知道你可以启动具有高/低优先级的线程,但在这种情况下,这似乎对我没有任何影响.

(我无法理解"我已经要求计算机做某事,所以它显然会尽可能快地完成它......")

谢谢!

竿.

java streaming cpu-usage

5
推荐指数
2
解决办法
6857
查看次数

nanosleep高CPU使用率?

我注意到一个叫做nanosleep的小测试程序在使用比2.6.22更新的内核的Linux机器上运行时显示出CPU使用率的巨大差异.

#include <time.h>
int main (void)
{
    struct timespec sleepTime;
    struct timespec returnTime;
    sleepTime.tv_sec = 0;
    sleepTime.tv_nsec = 1000;
    while (1)
    {
      nanosleep(&sleepTime, &returnTime);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

(是的,我意识到这个程序什么都不做)

如果我编译它并在openSUSE 10.3机器上运行它(2.6.22.19-0.2-default),程序甚至不显示在"top"生成的进程列表上,向我表明它使用的CPU时间非常少.如果我在openSUSE 11.1机器上运行它(2.6.27.23-0.1-default),top会显示该程序占用40%的CPU时间.在Fedora 9(2.6.25-14.fc9.i686)和Fedora 10上运行也显示了"top"中相同的高CPU使用率.

内核是否有变化影响了这个?

linux sleep cpu-usage linux-kernel

5
推荐指数
2
解决办法
1万
查看次数

调试JBoss 100%的CPU使用率

最初发布在Server Fault上,有人建议在这里提出这个问题.

我们使用JBoss来运行两个WAR.一个是我们的网络应用程序,另一个是我们的Web服务.Web应用程序访问另一台计算机上的数据库并向Web服务发出请求.Web服务向其他计算机发出JMS请求,聚合数据并返回它.

在我们最大的客户端,大约每月一次,JBoss Java进程占用了所有CPU的100%.运行JBoss的机器有8个CPU.我们的网络应用程序在此期间仍可访问,但页面加载大约需要3分钟.重启JBoss会恢复正常.

数据库机器和所有其他机器都很好,只有运行JBoss的机器受到影响.内存使用情况正常.网络利用率是正常的.JBoss日志中没有可疑的错误消息.

我已经建立了一个尽可能接近客户端生产环境的测试环境,并且我已经完成了高达2倍并发用户数的负载测试.我没有得到我的测试环境来复制问题.

我们从哪里去?我们怎样才能缩小问题?

目前我们唯一的计划是等到生产中出现问题,然后进行一些调试以确定原因.到目前为止,人们刚刚在问题发生时重新启动了JBoss,以尽量减少停机时间.下次它发生时,他们会让开发人员看一看.问题是,下次发生时,可以采取哪些措施来确定原因?

我们可以在同一个盒子上设置一个单独的JBoss实例,并与Web服务分开安装Web应用程序.这样,当下一个问题发生时,我们将知道哪个WAR有问题(假设它是我们的代码).尽管如此,这并没有缩小范围.

我应该启用JMX遥控器吗?这种方式下次出现问题时,我可以与VisualVM连接,看看哪些线程正在占用CPU以及他们到底在做什么.但是,在生产环境中启用JMX远程是否存在重大缺陷?

是否有另一种方法可以查看哪些线程正在占用CPU并获得堆栈跟踪以查看它们在做什么?

还有其他想法吗?

谢谢!

java debugging jboss web-applications cpu-usage

5
推荐指数
2
解决办法
2万
查看次数

Redis需要很长时间才能做出回应

使用Redis经历了非常高的响应延迟,在使用info命令时无法输出信息redis-cli.

此服务器处理来自大约200个并发进程的请求,但它不存储太多信息(至少据我们所知).当服务器响应时,该info命令报告使用的内存大约20 - 30 MB.

top服务器上运行时,在高响应延迟期间,CPU使用率徘徊在95-100%左右.

造成这种行为的可能原因是什么?

concurrency resources cpu-usage server-load redis

5
推荐指数
1
解决办法
2999
查看次数

Node.js CPU负载平衡

我用JMeter创建了测试来测试Ghost博客平台的性能.Ghost用Node.js编写,安装在1Gb RAM,1个CPU的云服务器上.

我注意到400个并发用户JMeter收到错误后.直到400个并发用户负载是正常的.我决定增加CPU并增加1个CPU.

但错误再现并增加了2个CPU,共4个CPU.在400个并发用户之后出现问题.

我不明白为什么1个CPU可以处理400个用户,而4个CPU可以处理相同的结果.

在监视期间,我注意到只有一个CPU忙,另外三个CPU空闲.当我在控制台中检查JMeter摘要时出现错误,大约是请求的5%.见截图.

CPU利用率

我想知道是否可以平衡CPU之间的负载?

cpu performance jmeter cpu-usage node.js

5
推荐指数
1
解决办法
4465
查看次数

如何人为地将CPU加载到一定的百分点?

为了测试我的应用程序(检测当前的CPU使用率),我需要在CPU上设置一个人工工作负载,例如:10%,20%,30%等,最高可达100%.有没有办法做到这一点?

windows cpu winapi cpu-usage

5
推荐指数
1
解决办法
135
查看次数

Ubuntu 14.04 nc 100%CPU使用率

我使用Ubuntu 14.04服务器(8核,16 GB RAM)来托管PHP网站,MySQL和Redis.PHP Web和MySQL的流量非常低(MySQL:每秒查询数:0.825).Redis每秒处理8011个命令.

今天我注意到nc保持在最高位置top:

8348 root      20   0   11224    764    624 R 100.0  0.0   2277:01 nc                                                                                                                            
8319 root      20   0   11224    760    624 R 100.0  0.0   2277:59 nc                                                                                                                        
8324 root      20   0   11224    764    624 R 100.0  0.0   2278:09 nc                                                                                                                        
8344 root      20   0   11224    760    624 R 100.0  0.0   2277:07 nc
Run Code Online (Sandbox Code Playgroud)

Stracing nc给出:

root@host:/home/user# strace -p 8348
Process 8348 attached
poll([{fd=3, events=POLLIN}, {fd=-1}], 2, 1000) = 1 ([{fd=3, revents=POLLERR}])
poll([{fd=3, events=POLLIN}, {fd=-1}], 2, 1000) = …
Run Code Online (Sandbox Code Playgroud)

ubuntu cpu-usage netcat redis

5
推荐指数
1
解决办法
1080
查看次数

CPU使用率与任务管理器,PerformanceCounter或ManagementObjectSearcher不匹配

我只是想获得与任务管理器匹配的准确CPU使用率.到目前为止,我已经尝试了四种不起作用的推荐方法.

首先,我尝试了类似的解决方案或建议,我可以找到.这里的代码示例使用四种方法,所有方法都不准确.其次,我知道任务管理器会波动并取决于它何时被采样.这仍然没有考虑到差异.最后,我知道有不同的方法,任务管理器只使用一种方法.由于这适用于一般用户,因此需要靠近任务管理器.

public partial class MainWindow : Window
{
    //*** Method 1 & 2
    PerformanceCounter cpuCounterPi = new PerformanceCounter("Processor Information", "% Processor Time", "_Total");
    PerformanceCounter cpuCounterP = new PerformanceCounter("Processor", "% Processor Time", "_Total");

    //*** method 3
    ManagementObjectSearcher query1 = new ManagementObjectSearcher("select loadpercentage from win32_processor");

    //*** Mixed method usage below
    CounterSample csPi1, csPi2, csP1, csP2;
    double cpuPercentagePi, cpuPercentageP, cpuPercentageLoad;
    int count = -1;
    Boolean alternate = false;

    System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();

    public MainWindow()
    {
        InitializeComponent();

        dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
        dispatcherTimer.Interval …
Run Code Online (Sandbox Code Playgroud)

c# performancecounter cpu-usage

5
推荐指数
1
解决办法
1050
查看次数

内置大量CALayer的层托管NSView(WindowServer - CPU 100%)

我有一个有趣的案例给你.并需要帮助.

我的Mac应用程序有一个层托管的NSView,里面有很多层,子层和子子层.想象一个带有项目(图标,文本标签)的Finder窗口......就像那样.每个项目都有一个按钮,选择背景图层.

一切都很好,直到你有1000个这样的项目.

现在有很多这些项目,当我尝试与此视图交互时,我的应用程序变得没有响应.而棘手的部分是它不是我的应用程序消耗CPU,而是WindowServer.它达到100%并且系统冻结一段时间.

重要的提示:

我的观点是app界面的一部分.有一个主窗口,其他视图.它们也有自己的结构.

而且我注意到,如果我把这个图层托管的视图放到一个单独的窗口中,它可以正常工作,没有冻结具有相同的1000个项目.但是如果我把它放回主窗口就开始停止系统.

问题

  1. 我的应用程序(视图/图层)是什么让WindowServer发疯?
  2. 为什么将此视图放在单独的窗口有帮助?

我已经进行了一些测试并删除了每个项目的所有子图层,每个项目只留下一两个.它减轻了系统的负担,但仍然很糟糕.我已经禁用了所有图纸 - 只是图标的小图像.没有帮助.

performance cocoa cpu-usage calayer nsview

5
推荐指数
1
解决办法
115
查看次数

HardwarePropertiesManager无法正常工作

我正在尝试使用HardwarePropertiesManagerhttps://developer.android.com/reference/android/os/HardwarePropertiesManager.html)访问信息。我正在使用带有以下代码的Android 7.0(API级别24):

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView helloTV = findViewById(R.id.helloTV);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            HardwarePropertiesManager hardwarePropertiesManager = getApplicationContext().getSystemService(HardwarePropertiesManager.class);
            CpuUsageInfo[] cpuUsages = hardwarePropertiesManager.getCpuUsages();
            ///...

Now when my applications finds the hardwarePropertiesManager.getCpuUsages(); line it throws the following exception:

java.lang.RuntimeException: Unable to start activity ComponentInfo{gr.serafeim.sensorplayground/gr.serafeim.sensorplayground.MainActivity}: java.lang.SecurityException: The caller is not a device or profile owner or bound VrListenerService.
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473)
        at android.os.Handler.dispatchMessage(Handler.java:102) …

android cpu-usage android-sensors

5
推荐指数
1
解决办法
1082
查看次数