perf

counting L1 cache misses with PAPI_read_counters gives unexpected results

只愿长相守 提交于 2020-04-10 05:03:29
问题 I am trying to use PAPI library to count cache misses. cache hit performance counter is not available on my hardware, that's why I am trying to determine cache hits with no cache misses. I am trying few things. First version of my code is this: int numEvents = 2; long long values[2]; int events[2] = {PAPI_L1_DCM, PAPI_L2_TCM}; if (PAPI_start_counters(events, numEvents) != PAPI_OK ) // !=PAPI_OK printf("PAPI error: %d\n", 1); for(int i=0; i < arr_size; i++) { array[i].value = 1; } _mm_mfence()

kafka压测之producer

≯℡__Kan透↙ 提交于 2020-04-05 15:50:12
背景 前不久自建了大数据平台,由于时间问题,排期紧张,未能对平台进行压测。现在平台搭建完成,计划对平台组件逐一进行一次压测。 欢迎指正,不喜勿喷! 压测目标 测试Kafka集群写入消息和消费消息的能力,根据测试结果评估当前Kafka集群模式的负载能力。 测试包括对Kafka写入消息和消费消息进行压力测试,根据不同量级的消息处理结果 测试方法 在服务器上使用kafka自带的测试脚本,模拟不同量级消息写入及读取请求,查看Kafka处理不同数量级的消息数时的处理能力,包括每秒生成消息数、吞吐量、消息延迟时间。 环境概况 系统环境 系统 版本 其他 centos 7.6 8C 32G kafka 版本2.11-2.4.0 5台 测试环境 测试数据量:1亿条。 topic batch-size ack message-size(bytes) compression-codec partition replication throughput test_producer 10000 1 512 none 4 3 30000 test_producer 20000 1 512 none 4 3 30000 test_producer 40000 1 512 none 4 3 30000 test_producer 60000 1 512 none 4 3 30000 test_producer

如何排查用户态CPU使用率高

送分小仙女□ 提交于 2020-03-24 23:53:37
查看CPU使用 在 Linux 系统下,使用 top 命令查看 CPU 使用情况。 %Cpu(s): 0.3 us, 0.1 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st us(user):表示 CPU 在用户态运行的时间百分比,通常用户态 CPU 高表示有应用程序比较繁忙。典型的用户态程序有:数据库、Web 服务器等。 sy(sys):表示 CPU 在内核态运行的时间百分比(不包括中断),通常内核态 CPU 越低越好,否则表示系统存在某些瓶颈。 ni(nice):表示用 nice 修正进程优先级的用户态进程执行的 CPU 时间。nice 是一个进程优先级的修正值,如果进程通过它修改了优先级,则会单独统计 CPU 开销。 id(idle):表示 CPU 处于空闲态的时间占比,此时,CPU 会执行一个特定的虚拟进程,名为 System Idle Process。 wa(iowait):表示 CPU 在等待 I/O 操作完成所花费的时间,通常该指标越低越好,否则表示 I/O 存在瓶颈,可以用 iostat 等命令做进一步分析。 hi(hardirq):表示 CPU 处理硬中断所花费的时间。硬中断是由外设硬件(如键盘控制器、硬件传感器等)发出的,需要有中断控制器参与,特点是快速执行。 si(softirq):表示 CPU

Perf event for sending reschedule interrupt?

雨燕双飞 提交于 2020-03-21 05:37:54
问题 When a process wakes another process on the same core, a sched:sched_wakeup event is generated with both PIDs. This is great for finding relationships between processes. When a process wakes another process on a different core, the second core generates an irq_vectors:reschedule_entry event on whichever process is unlucky enough to catch the IPI, followed by a sched:sched_wakeup event from that victim process. What I can't find is the original process on the first core that does the waking.

Linux 问题故障定位,看这一篇就够了

一世执手 提交于 2020-03-11 04:00:57
目录 1. 背景 2. 说明 3. 分析问题的方法论 4. cpu 4.1 说明 4.2 分析工具 4.3 使用方式 5. 内存 5.1 说明 5.2 分析工具 6. 磁盘IO 6.1 说明 6.2 分析工具 6.3 使用方式 7. 网络 7.1 说明 7.3 使用方式 8. 系统负载 8.1 说明 8.2 分析工具 9. 火焰图 9.1 说明 9.2 安装依赖库 9.3 安装 9.4 CPU级别火焰图 9.4.1 on-CPU 9.5 内存级别火焰图 9.6 性能回退-红蓝差分火焰图 10. 案例分析 10.1 接入层nginx集群异常现象 10.2 分析nginx相关指标 10.3 分析系统cpu情况 10.4 火焰图分析cpu 10.5 案例总结 11.参考资料 1. 背景 有时候会遇到一些疑难杂症,并且监控插件并不能一眼立马发现问题的根源。这时候就需要登录服务器进一步深入分析问题的根源。那么分析问题需要有一定的技术经验积累,并且有些问题涉及到的领域非常广,才能定位到问题。所以,分析问题和踩坑是非常锻炼一个人的成长和提升自我能力。如果我们有一套好的分析工具,那将是事半功倍,能够帮助大家快速定位问题,节省大家很多时间做更深入的事情。 2. 说明 本篇文章主要介绍各种问题定位的工具以及会结合案例分析问题。 3. 分析问题的方法论 套用5W2H方法,可以提出性能分析的几个问题 ●

[性能优化] perf

眉间皱痕 提交于 2020-03-06 15:04:40
运行时性能分析工具 wiki:https://en.wikipedia.org/wiki/Perf_(Linux) linux wiki:https://perf.wiki.kernel.org/index.php/Main_Page tutorial:https://perf.wiki.kernel.org/index.php/Tutorial https://github.com/torvalds/linux/tree/master/tools/perf/Documentation/ perf report --time:: Only analyze samples within given time window: <start>,<stop>. Times have the format seconds.microseconds. If start is not given (i.e., time string is ',x.y') then analysis starts at the beginning of the file. If stop time is not given (i.e, time string is 'x.y,') then analysis goes to end of file. Also support time percent with

Unrolling 1-cycle loop reduces performance by 25% on Skylake. uops scheduling issue?

陌路散爱 提交于 2020-02-28 03:08:41
问题 TL;DR I have a loop that takes 1 cycle to execute on Skylake (it does 3 additions + 1 inc/jump). When I unroll it more than 2 times (no matter how much), my program runs about 25% slower. It might have something to do with alignment, but I don't clearly see what. EDIT: this question used to ask about why uops were delivered by the DSB rather than the MITE. This has now be moved to this question. I was trying to benchmark a loop which does 3 additions on my Skylake. This loop should execute in

性能优化--CPU使用率

允我心安 提交于 2020-02-18 05:25:15
usr 用户态CPU时间 nice 低优先级用户态CPU时间 system 系统态CPU时间 idle 空闲时间 iowait 等待IO的时间 irq 硬中断的时间 softirq 软中断的时间 steal 当系统运行在虚拟机中时,被其他CPU占用的时间。 gust 通过虚拟化,运行其他操作系统的时间。 gust_nice 以低优先级运行虚拟化的时候。 CPU使用率 = 1- 空闲时间/CPU总时间 用户态占用过多的CPU,应着重排查用户进程的性能问题。 系统态占用过多的CPU,应着重排查系统调用,内核进程的问题。 IO等待时机过长,应着重排查系统存储的IO问题。 软中断硬中断,应着重排查内核中的中断服务程序。 top,perf top -g 进程号 必须加-g才能显示函数调用信息。看exectue_ex下的函数调用。 碰到CPU占用率过高,但是top看不到CPU占用高的进程的情况可能是: 1、进程不断因为某种原因(段错误等)退出之后,被监视进程不断重启。 2、在进程内部通过exec调用的外部命令。这些命令进程只运行很短的时间就退出,一般很难用top来监控。 用工具 https://github.com/brendangregg/perf-tools/blob/master/execsnoop 可以监视出存在时间很短的进程。 也可以用perf record -g观察15秒

如何用perf工具

拟墨画扇 提交于 2020-02-14 17:03:40
Perf 简介 Perf 是用来进行软件性能分析的工具。 通过它,应用程序可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计。它不但可以分析指定应用程序的性能问题 (per thread),也可以用来分析内核的性能问题,当然也可以同时分析应用代码和内核,从而全面理解应用程序中的性能瓶颈。 最初的时候,它叫做 Performance counter,在 2.6.31 中第一次亮相。此后他成为内核开发最为活跃的一个领域。在 2.6.32 中它正式改名为 Performance Event,因为 perf 已不再仅仅作为 PMU 的抽象,而是能够处理所有的性能相关的事件。 使用 perf,您可以分析程序运行期间发生的硬件事件,比如 instructions retired ,processor clock cycles 等;您也可以分析软件事件,比如 Page Fault 和进程切换。 这使得 Perf 拥有了众多的性能分析能力,举例来说,使用 Perf 可以计算每个时钟周期内的指令数,称为 IPC,IPC 偏低表明代码没有很好地利用 CPU。Perf 还可以对程序进行函数级别的采样,从而了解程序的性能瓶颈究竟在哪里等等。Perf 还可以替代 strace,可以添加动态内核 probe 点,还可以做 benchmark 衡量调度器的好坏 perf 的基本使用

快速掌握Zabbix配置的高效学习方法

隐身守侯 提交于 2020-01-26 20:32:14
本次博文主要以Zabbix的中文界面为主进行介绍! 一、模板的管理与使用 模板是Zabbix的核心,因为模板中集成了所有要监控的内容以及展示的图形等等,Zabbix的安装部署完成后,自带了很多模板(网络设备模板、操作系统模板、常见应用软件模板),这些模板可以满足我们80%左右的应用需要,所以一般情况下不需要我们单独创建模板了。 如图: 模板是由很多内置项目组成的,基本的内置项目有应用集、监控项、触发器、图形、聚合图形、自动发现、Web检测、链接的模板等这8个部分组成。在这8个部分中,监控项、触发器、图形、自动发现这4个部分是重点,也是难点。下面重点介绍这四个部分的具体实现过程。 在Zabbix自带的模板中,大部分都是可以直接拿来使用的,这里就不需要对每个模板都进行深入了解,只需要对常用的一些模板重点掌握就可以了。下面重点介绍下经常使用的三类模板,保证重点的学习。 1)常用的模板有以下三类: 1)监控系统状态的模板 Template OS Linux //对Linux系统的监控模板 Template OS Windows //对Windows系统的监控模板 Template OS Mac OS X //对Mac OS X系统的监控模板 Template VM VMware //对VM VMware系统的监控模板 2)监控网络和网络设备的模板 Template Module