Articles of 性能

Linux性能监控,任何方式来监控每个线程?

我正在使用Linux Ubuntu,并使用C ++进行编程。 我已经能够使用perf_event访问性能计数器(指令计数,caching未命中等)(实际上使用这个链接的程序: https : //github.com/castl/easyperf )。 但是,现在我正在运行一个使用pthreads的multithreading应用程序,并且需要单独完成每个线程的指令计数和周期。 任何想法如何去做呢? 谢谢!

zLib透明写入模式“wT”性能下降

我希望zLib透明模式(gzptintf())和正常的fprintf()一样快。 我发现“wT”的zLib gzprintf()比fprintf()慢了2.5倍。 在这个性能问题上是否有任何解决方法? 细节: 我在Linux(fedora 22,kernel 4.0.5,Intel(R)Core TM i7-3770 CPU @ 3.40GHz)上使用libz.so.1.2.8为我的事件跟踪收集器提供输出文件压缩选项。 为了保持传统兼容性,我需要透明文件格式写入模式。 正如我所看到的,gzopen中的选项“T”允许写入没有压缩的文件,也没有gzip头部logging。 问题在于性能。 透明模式比简单的标准fprintf慢大约2.5倍。 这里是快速testing结果(数值在TSC中): zLib]$ ./zlib_transparent Performance fprintf vs gzprintf (transparent): fprintf 22883026324 zLib transp 62305122876 ratio 2.72277 这个testing的来源: #include <stdio.h> #include <zlib.h> #include <iostream> #include <sstream> #include <iomanip> #define NUMITERATIONS 10000000 static double buffer[NUMITERATIONS]; static __inline__ unsigned long long rdtsc(void){ […]

在Intel Xeon X5550的Linux下,__rdtscp校准不稳定

我正在尝试使用__rdtscp intrinsinc函数来测量时间间隔。 目标平台是Linux x64,CPU Intel Xeon X5550。 尽pipe此处理器设置了constant_tsc标志,但校准__rdtscp会给出非常不同的结果: $ taskset -c 1 ./ticks Ticks per usec: 256 $ taskset -c 1 ./ticks Ticks per usec: 330.667 $ taskset -c 1 ./ticks Ticks per usec: 345.043 $ taskset -c 1 ./ticks Ticks per usec: 166.054 $ taskset -c 1 ./ticks Ticks per usec: 256 $ taskset […]

如何在Linux上以编程方式获得networking接口速度?

我想知道networking连接信息中显示的速度,例如100Mb / s,10Mb / s,而不是可用带宽。 提前致谢!

数据结构来存储数十亿整数

什么是最好的数据结构来存储内存(RAM)中的百万/十亿logging(假设logging包含名称和整数)。 在最小search时间(第一优先级)和高效内存(第二优先级)方面最好? 它是帕特里夏树吗? 还有比这更好的吗? search关键字是整数(比如32位随机整数)。 所有logging都在RAM中(假设有足够的RAM可用)。 在C,平台Linux .. 基本上我的服务器程序分配一个32位的随机密钥给用户,我想存储相应的用户logging,以便我可以高效地search/删除logging。 可以假定数据结构将被很好地填充。

PHP什么时候应该执行shell,vs内部PHP函数。 性能? 安全?

我是一个Linux系统pipe理员,总是在Bash工作。 我非常有经验的pipe理PHP,但对编写PHP脚本来说是相当新的。 我想从系统命令中获取输出,而不是PHP内部函数,有什么原因。 我会假设你有可移植性问题,虽然这对我来说不是问题。 例如,我可以用ls和一个exec样式函数来获取一个目录列表。 或者用opendir('。')和循环做些什么。 性能考虑是什么? 这是我现在拥有的, <?php // Directory Open $myDirectory = opendir('/media/ARCHIVE/Documents/conf/web_confs'); // Array of Elements while($entryName = readdir($myDirectory)) { $dirArray[] = $entryName; } // Directory Close closedir($myDirectory); // Sort Array sort($dirArray); ?> 有没有更有效的方法来取代这个循环? 性能对我来说很重要,这些东西就会变成片段 。 这是系统相关的代码,不会采取任何types的input。 甚至没有从url。 另外环境规模很大,所有的系统都进行了性能调整和分析。 所以做一次最好的方法是我正在寻找。 我真的很感谢任何意见,因为我的经验有限。

OpenMP:20%的时间在“隐性障碍”?

我没有看看使用OpenMP的一些代码,尽pipe我不太熟悉它。 (代码也没有OpenMP。) 当运行一个分析器时,我发现程序在“OMP隐式屏障”函数中花费了大约20%的挂钟时间。 是OpenMP的典型,还是(可能)意味着工作负载没有平均分配在线程之间? 谢谢

向内核或用户空间推送代码,出于性能原因?

最初我想让代码更快,最好是尝试减less内核和用户空间之间的转换 – 通过推动更多的代码在内核中运行。 不过,我已经阅读了几个像SO这样的论坛,事实正好相反,更多的代码被推入用户空间。 为什么是这样? 这似乎反直觉? 把更多的代码放入用户空间仍然需要内核用户转换,而把代码放入内核并不需要内核用户转换? 如果有人问 – 我正在考虑处理分组数据的应用程序。 编辑 所以更多的细节,我正在考虑什么时候分组数据到达 – 我想重新编写networking堆栈,并删除不适用于我的数据包处理的代码,并且零拷贝 – 将数据包数据放在用户程序可以尽可能快地访问它。

如何测量短的C /汇编代码的速度?

考虑这个C代码: #include <complex.h> complex float f(complex float x[]) { complex float p = 1.0; for (int i = 0; i < 32; i++) p += x[i]; return p; } 英特尔C编译器与-O3 -march=core-avx2给出: f: vmovups ymm1, YMMWORD PTR [rdi] #5.10 vmovups ymm2, YMMWORD PTR [64+rdi] #5.10 vmovups ymm5, YMMWORD PTR [128+rdi] #5.10 vmovups ymm6, YMMWORD PTR [192+rdi] […]

如何确定哪个PHP代码打开没有closures的MySQL连接

我们有一个由几个现成的PHP应用程序(ExpressionEngine和XCart)以及我们自己的自定义代码组成的应用程序。 我没有做实际的分析,所以我不确定它是如何确定的,但是听到有太多的MySQL连接没有被closures,我并不感到惊讶(我并不感到惊讶,因为我们已经看到了我们的设备上的大量内存泄漏服务器,在一两天的时间里,从初始启动时的100MB开始,整个ram被占用,很less被caching)。 那么,我们该如何确定究竟哪个PHP代码是罪魁祸首呢? 我已经有了XDebug的经验,并build议,当我们已经得到了独立的分段环境相当稳定的时候,我们将XDebug加载到dev上,并使用它来做一些分析。 这是否合理,和/或其他人是否有更具体和/或更多的build议?