我正在运行一个shell脚本来执行一个c ++应用程序,它测量api的性能.我可以捕获api的延迟(返回给定参数集的值所花费的时间),但我也希望以5-10秒的间隔捕获cpu和内存使用.
有没有办法在不影响系统性能的情况下执行此操作,并且在同一个脚本中也是如此?我找到了许多例子,可以在外面(独立地)执行我们正在运行的脚本; 但不是我们可以在同一个脚本中执行的操作.
我有一个C++程序,它有一个非常可怕的内存泄漏,大约4MB /秒.我知道它来自哪里可以解决它,但这不是我的主要问题.我的程序占用了大量的CPU,并且运行速度不如我想要的那么快.我在程序中有两个不同的线程.一个人自己需要大约50%的CPU,这很好,而另一个本身需要大约15%的CPU,这很好.但是,CPU使用率是100%,并且程序无法以所需的速度运行.
内存泄漏本身会导致这样的问题吗?我知道程序最终会因泄漏的内存而崩溃,但是内存泄漏会导致程序变慢吗?我立刻意味着程序从一开始就太慢了,而不仅仅是当内存占用空间很大时.
谢谢!
我们的工具在诊断模式下生成性能日志,但是我们跟踪代码执行时间(秒表+毫秒)的性能.
显然它根本不可靠,测试系统的CPU可以被一些随机过程使用,如果你的工具配置为运行10个线程而不是2个,结果将完全不同,等等.
我的问题是:
找出一段代码(而不是整个过程)的正确CPU时间的正确方法是什么?
我的意思是CPU时间:
基本上CPU花了多少周期.我假设对于同一台计算机中的同一段代码,它将始终相同,并且不受其他进程的影响.我可能会在这里遗漏一些基本的东西,如果是这样,请在评论或答案中启发我.
PS在我们的设置中无法使用分析器
另一个更新,
为什么我不打算使用分析器
因为我们需要在具有不同数据的不同环境中测试代码,而我们没有分析器或IDE或类似的东西.因此代码本身应该处理它.一个极端的选择可能是使用分析器的DLL,但我不认为这个任务需要这么复杂的解决方案(假设没有免费且易于实现的分析库).
我在C#中使用FastLineChart来实时显示来自外部设备的信号.采样率约为700Hz.在我的程序中,我下采样到大约100Hz以最小化显示器的不必要的分辨率,但仍然使用太多CPU这样做.
我认为问题是我在图表中滚动数据(就像在Windows中的CPU图形一样),这就是在耗费资源.我这样做是通过删除最旧的元素然后在特定系列中添加一个新元素(如下所示).
timeGraph.Series[0].Points.RemoveAt(0);
timeGraph.Series[0].Points.AddY(average);
Run Code Online (Sandbox Code Playgroud)
CPU负载约为30%,我认为有点太高了.我没有最新的电脑,但它是带有GT9600显卡的Code 2 Duo.
有没有人有什么建议?有一个更好的方法吗?或者一种特定的方法来加快速度?
感谢您的任何帮助!
我的Web服务器偶尔会遇到HTTPD请求,这会导致CPU使用率上升.我在Top看这个.每次请求时都会动态生成每个URL.该框架是Codeigniter.我在Linux CentOS上使用prefork Apache作为我的Web服务器.
如何在CPU使用率达到峰值时找出正在处理的URL?我可以以某种方式将进程ID与Apache日志中的HTTP请求相关联吗?网站上有数百万个页面,因此查看Codeignitor的分析器并没有帮助.
我有一个php 5.4/ mysql每天5万次点击的网站,有一个Linux服务器上运行nginx和php-fpm.数据库位于单独的服务器上.
我注意到,在高峰时段,我的网络服务器负载最多为15,而四核处理器则为4.我用php xdebug和xhprof描述了我的php应用程序,并看到,90%的CPU工作是由htmlspecialchars()Twig我用来显示数据的模板中的函数完成的.htmlspecialchars()每页有时会有100到1000个电话.我试图减少无法逃避,但仍然无法避免.
有什么方法可以减少htmlspecialchars()功能的CPU使用率吗?也许在PHP中存在某种缓存?还是有另一种方式?
如何使用JMH计算CPU时间和内存量?例如,我有:代码:
@State(Scope.Thread)
@BenchmarkMode(Mode.All)
public class JMHSample_My {
int x = 1;
int y = 2;
@GenerateMicroBenchmark
public int measureAdd() {
return (x + y);
}
@GenerateMicroBenchmark
public int measureMul() {
return (x * y);
}
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder()
.include(".*" + JMHSample_My.class.getSimpleName() + ".*")
.warmupIterations(5)
.measurementIterations(5)
.forks(1)
.build();
new Runner(opt).run();
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
Benchmark Mode Samples Mean Mean error Units
JMHSample_My.measureAdd thrpt 5 1060579.757 39506.950 ops/ms
JMHSample_My.measureMul thrpt 5 1046872.684 79805.116 …Run Code Online (Sandbox Code Playgroud) 我想知道是否有办法在不使用MUL或DIV指令的情况下执行任何乘法或除法,因为它们需要大量的CPU周期.我可以为此目标利用SHL或SHR指令吗?如何实现汇编代码?
考虑David Nuon的这个演示:
http://zunostudios.com/demos/css32014-demos/filters.html
大卫在他的帖子中注意到:
您会注意到滑块越向右,页面响应越少.
这是事实.在我改变了图像之后,我看到了我的CPU如何开始工作.
我无法回答的是为什么在所有css修改后页面都没有响应.像所有的动画都是2fps.
如果工作完成,为什么它继续工作?
编辑: 在xengravity的帮助下,我可以看到,可能在所有过滤器都在右边后,似乎GPU以疯狂的速度执行以下操作:
1.-拍摄原始图像.
2.-修改它(数学计算,blabla等).
但始终从原始图像开始.也许这就是为什么它似乎都这么慢......
编辑:将演示添加到片段中以供将来后代使用
var update_filter = function () {
var styles = [
'grayscale( ' + parseInt($('#grayscale').val()) * .01 + ')',
'blur( ' + $('#blur').val() + 'px)',
'sepia( ' + $('#sepia').val() + '%)',
'brightness( ' + parseInt($('#brightness').val()) * .01 + ')',
'contrast( ' + $('#contrast').val() * .1 + ')',
'hue-rotate( ' + $('#hue-rotate').val() * 3.6 + 'deg)',
'invert( ' + $('#invert').val() + '%)',
'saturate( ' + parseInt($('#saturate').val()) …Run Code Online (Sandbox Code Playgroud)我有一个在Postgres数据库上运行的应用程序,有时当我有大约8-10个人在使用该应用程序时,CPU使用率飙升到99-100%之间,该应用程序建立在Codeigniter框架上,我相信已为此做了规定每次不需要时关闭与数据库的连接,可以解决这个问题.我将不胜感激任何建议.谢谢
基本上,人们对应用程序所做的是运行插入查询,但速度非常快,一个人可以在一分钟内运行70到90个插入查询.
cpu-usage ×10
performance ×4
.net ×2
c++ ×2
apache ×1
assembly ×1
benchmarking ×1
c# ×1
charts ×1
codeigniter ×1
css3 ×1
division ×1
java ×1
jmh ×1
jquery ×1
memory ×1
memory-leaks ×1
optimization ×1
php ×1
postgresql ×1
shell ×1
sql ×1
twig ×1