提示
暂不支持移动端,请在PC端查看

首页 难题挑战 演武堂 炼金阁 模板管理 运营中心 光明顶 关于我们
搜索
作者:仗剑天涯
| |
回复数:0
【赛题讲解视频上线】EDA²侠客岛难题挑战·2025赛题讲解视频上线公告
各位参赛者: 大家好,为帮助参赛者更好的理解打榜赛题,我们诚邀各企业顶尖技术专家,针对本届赛题,梳理详细解题思路,揭秘高效解题技巧,带给广大参赛者一场赛题讲解的视听盛宴。同时其他赛题相关问题,还可在讲解视频的评论区提问或者讨论,我们将竭诚为您解答! 详细视频见:EDA²难题挑战交流 -> 各赛题讨论&答疑帖。(https://xiakedao.eda2.com/bbs/forum.php?mod=forumdisplay&fid=3&filter=lastpost&orderby=lastpost) --EDA²侠客岛组委会 --2025.2.7
作者:仗剑天涯
| |
回复数:3
什么是华为云鲲鹏
鲲鹏 原指华为海思发布的一款兼容ARM指令集的服务器芯片鲲鹏920,性能强悍,配备了64个物理核心,单核实力从CPU算力benchmark的角度对比,大约持平于同期X86的主流服务器芯片,整体多核多线程算力较同期的X86芯片更强大。但是鲲鹏的含义已经有所延伸,鲲鹏不再仅仅局限于鲲鹏系列服务芯片,目前是完整软硬件生态和云服务生态。
作者:仗剑天涯
| |
回复数:3
浅谈ATPG到底是什么
ATPG程序程序开发 APT是一个程序开发语言,Automatic Test Pattern Generation(ATPG)自动测试向量生成是在半导体电器测试中使用的测试图形向量由程序自动生成的过程。测试向量按顺序地加载到器件的输入脚上,输出的信号被收集并与预算好的测试向量相比较从而判断测试的结果。ATPG有效性是衡量测试错误覆盖率的重要指标。 一 .简介自动测试图样产生(英语:Automatic test pattern generation, ATPG)系统是一种工具,产生资料给制造出来后的数字电路作测试使用。超大规模集成电路的测试平台,要达到非常高的错误涵盖率(Fault coverage)是非常困难的工作,因为它的复杂度很高。 针对组合逻辑电路(Combinatorial logic)和时序逻辑电路(Sequential logic)的电路测试,必须要使用不同的 ATPG 方法。 二 .阶段一个ATPG的周期可以分为两个阶段:1、测试的生成2、测试的应用在测试的生成过程中,针对电路的设计的测试模型在Gate或Transistor Level产生,以使错误的电路能够被该模型所侦测。这个过程基本上是个数学过程,可以通过以下几个方法获得:1、手工方法2、算法产生3、伪随机产生--软件通过复杂的ATPG程序产生测试图形向量在创建一个测试时,我们的目标应该是在有限存储空间内执行高效的测试图形向量。由此可见,ATPG需要在满足一定错误覆盖率的条件下,产生尽可能少的测试向量。主要考虑到下述因素:1、建立最小测试组所需要的时间2、测试图形向量的大小,软件、硬件的需求3、测试过程的长度4、加载测试图形向量所需的时间5、外部设备 三 .算法现在被广泛使用的ATPG算法包括:D算法,PODEM算法和FAN算法。任何算法都需要一种叫“path sensitization”的技术,它指的是在电路中寻找一条路径以使得路径中的错误都能表现在路径的输出端。最广泛应用的算法是D算法,D代表1而D'代表0,D和D'互补。具体的方法在此不再赘述。ATPG产生过程包含以下步骤:1、错误选择,选择需要测试的错误2、初始,寻找合适的输入向量集3、传输向量集4、比较结果 四 .可测试性设计可测试性设计(英语:Design for Testability, DFT)是一种集成电路设计技术,它将一些特殊结构在设计阶段植入电路,以便设计完成后进行测试。电路测试有时并不容易,这是因为电路的许多内部节点信号在外部难以控制和观测。通过添加可测试性设计结构,例如扫描链等,内部信号可以暴露给电路外部。总之,在设计阶段添加这些结构虽然增加了电路的复杂程度,看似增加了成本,但是往往能够在测试阶段节约更多的时间和金钱。 原文地址:https://baike.baidu.com/item/ATPG/1149631
作者:仗剑天涯
| |
回复数:1
【鲲鹏】CPU 与内存子系统性能调优之 perf工具
介绍 perf工具是非常强大的Linux性能分析工具,可以通过该工具获得进程内的调用情况、资源消耗情况并查找分析热点函数。 命令参考举例: 安装方式 以CentOS为例,使用如下命令安装:# yum -y install perf 使用方法 步骤1 通过perf top命令查找热点函数。 该命令统计各个函数在某个性能事件上的热度,默认显示CPU占用率,可以通过“-e”监控其它事件。 ● Overhead表示当前事件在全部事件中占的比例。 ● Shared Object表示当前事件生产者,如kernel、perf命令、C语言库函数等。 ● Symbol则表示热点事件对应的函数名称。 通过热点函数,我们可以找到消耗资源较多的行为,从而有针对性的进行优化。 步骤2 收集一段时间内的线程调用。 perf sched record命令用于记录一段时间内,进程的调用情况。“-p”后接进程号,“sleep”后接统计时长,单位为秒。收集到的信息自动存放在当前目录下,文件名为perf.data。 步骤3 解析收集到的线程调度信息。 perf sched latency命令可以解析当前目录下的perf.data文件。“-s”表示进行排序,后接参数“max”表示按照最大延迟时间大小排序。 原文:鲲鹏性能优化十板斧5.0.pdf 版权说明: 本文内容由EDA²侠客岛用户自发贡献,版权归原作者所有,EDA²侠客岛不拥有其著作权,亦不承担相应法律责任,如果您发现本社区中有涉嫌抄袭的内容,请立即联系EDA²侠客岛平台,一经查实,将立刻删除涉嫌侵权内容。
作者:仗剑天涯
| |
回复数:0
【鲲鹏】CPU 与内存子系统性能调优之调优简介
调优思路 性能优化的思路如下: ● 如果CPU的利用率不高,说明资源没有充分利用,可以通过工具(如strace)查看应用程序阻塞在哪里,一般为磁盘,网 络或应用程序自己的业务逻辑有休眠或信号等待,这些优化措施在其它章节描述。 ● 如果CPU利用率高,可以选择更好的硬件,优化硬件的配置参数来适配业务场景,或者通过优化软件来降低CPU占用率。 根据CPU的能力配置合适的内存条,建议内存满通道配置,发挥内存最大带宽:一颗鲲鹏920处理器的内存通道数为8,两颗鲲鹏920处理器的内存通道数为16;建议选择高频率的内存条,提升内存带宽:鲲鹏920在1DPC配置时,支持的内存最高频率为 2933MHz。 主要优化参数 原文:鲲鹏性能优化十板斧5.0.pdf 版权说明: 本文内容由EDA²侠客岛用户自发贡献,版权归原作者所有,EDA²侠客岛不拥有其著作权,亦不承担相应法律责任,如果您发现本社区中有涉嫌抄袭的内容,请立即联系EDA²侠客岛平台,一经查实,将立刻删除涉嫌侵权内容。
作者:仗剑天涯
| |
回复数:0
【鲲鹏】CPU 与内存子系统性能调优之 top工具
介绍 top是最常用的Linux性能监测工具之一。通过top工具可以监视进程和系统整体性能。 命令参考举例: 安装方式 系统自带,无需安装。 使用方法 步骤1 使用top命令统计整体CPU、内存资源消耗。 ● CPU项:显示当前总的CPU时间使用分布。 – us表示用户态程序占用的CPU时间百分比。 – sy表示内核态程序所占用的CPU时间百分比。 – wa表示等待IO等待占用的CPU时间百分比。 – hi表示硬中断所占用的CPU时间百分比。 – si表示软中断所占用的CPU时间百分比。通过这些参数我们可以分析CPU时间的分布,是否有较多的IO等待。在执行完调优步骤后,我们也可以对CPU使用时间进行前后对比。如果在运行相同程序、业务情况下CPU使用时间降低,说明性能有提升。● KiB Mem:表示服务器的总内存大小以及使用情况。● KiB Swap:表示当前所使用的Swap空间的大小。Swap空间即当内存不足的时候,把一部分硬盘空间虚拟成内存使用。如果当前所使用的Swap空间大于0,可以考虑优化应用的内存占用或增加物理内存。 步骤2 在top命令执行后按1,查看每个CPU core的使用情况。通过该命令可以查看单个CPU core的使用情况,如果CPU占用集中在某几个CPU core上,可以结合业务分析触发原因,从而找到优化思路。 步骤3 选中top命令的P选项,查看线程运行在哪些 CPU core上。 在top命令执行后按F,可以进入top命令管理界面。在该界面通过上下键移动光标到P选项,通过空格键选中后按Esc退出,即可显示出线程运行的CPU核。观察一段时间,若业务线程在不同NUMA节点内的CPU core上运行,则说明存在较多的跨NUMA访问,可通过NUMA绑核进行优化。 步骤4 使用top -p $PID -H命令观察进程中每个线程的CPU资源使用。“-p”后接的参数为待观察的进程ID。通过该命令可以找出消耗资源多的线程,随后可根据线程号分析线程中的热点函数、调用过程等情况。 原文:鲲鹏性能优化十板斧5.0.pdf 版权说明: 本文内容由EDA²侠客岛用户自发贡献,版权归原作者所有,EDA²侠客岛不拥有其著作权,亦不承担相应法律责任,如果您发现本社区中有涉嫌抄袭的内容,请立即联系EDA²侠客岛平台,一经查实,将立刻删除涉嫌侵权内容。
作者:仗剑天涯
| |
回复数:0
【鲲鹏】CPU 与内存子系统性能调优之 numactl工具
介绍 numactl工具可用于查看当前服务器的NUMA节点配置、状态,可通过该工具将进程绑定到指定CPU core,由指定CPU core来运行对应进程。 命令参考举例: 安装方式 以CentOS为例,使用如下命令安装:# yum -y install numactl numastat 使用方法 步骤1 通过numactl查看当前服务器的NUMA配置。 从numactl执行结果可以看到,示例服务器共划分为4个NUMA节点。每个节点包含16个CPU core,每个节点的内存大小约为64GB。同时,该命令还给出了不同节点间的距离,距离越远,跨NUMA内存访问的延时越大。应用程序运行时应减少跨NUMA访问内存。 步骤2 通过numactl将进程绑定到指定CPU core。 通过 numactl -C 0-15 top 命令即是将进程“top”绑定到0~15 CPU core上执行。 步骤3 通过numastat查看当前NUMA节点的内存访问命中率。 可以通过numastat命令观察各个NUMA节点的状态。 ● numa_hit表示节点内CPU核访问本地内存的次数。 ● numa_miss表示节点内核访问其他节点内存的次数。跨节点的内存访问会存在高延迟从而降低性能,因此,numa_miss的值应当越低越好,如果过高,则应当考虑绑核。 原文:鲲鹏性能优化十板斧5.0.pdf 版权说明: 本文内容由EDA²侠客岛用户自发贡献,版权归原作者所有,EDA²侠客岛不拥有其著作权,亦不承担相应法律责任,如果您发现本社区中有涉嫌抄袭的内容,请立即联系EDA²侠客岛平台,一经查实,将立刻删除涉嫌侵权内容。
作者:仗剑天涯
| |
回复数:0
【鲲鹏】CPU 与内存子系统性能调优之优化方法(一)
优化方法:修改 CPU 的预取开关 原理 局部性原理分为时间局部性原理和空间局部性原理: ● 时间局部性原理(temporal locality):如果某个数据项被访问,那么在不久的将来它可能再次被访问。 ● 空间局部性原理(spatial locality):如果某个数据项被访问,那么与其地址相邻的数据项可能很快也会被访问。 CPU将内存中的数据读到CPU的高速缓冲Cache时,会根据局部性原理,除了读取本次要访问的数据,还会预取本次数据的周边数据到Cache里面,如果预取的数据是下次要访问的数据,那么性能会提升,如果预取的数据不是下次要取的数据,那么会浪费内存带宽。 对于数据比较集中的场景,预取的命中率高,适合打开CPU预取,反之需要关闭CPU预取。目前发现speccpu和X265软件场景适合打开CPU预取,STREAM测试工具、Nginx和数据库场景需要关闭CPU预取。 修改方式 按照B 进入BIOS界面的步骤进入BIOS,然后在BIOS的如下位置设置CPU的预取开关。 原文:鲲鹏性能优化十板斧5.0.pdf 版权说明: 本文内容由EDA²侠客岛用户自发贡献,版权归原作者所有,EDA²侠客岛不拥有其著作权,亦不承担相应法律责任,如果您发现本社区中有涉嫌抄袭的内容,请立即联系EDA²侠客岛平台,一经查实,将立刻删除涉嫌侵权内容。
作者:仗剑天涯
| |
回复数:0
【鲲鹏】CPU 与内存子系统性能调优之优化方法(二)
优化方法:定时器机制调整,减少不必要的时钟中断 原理 在Linux内核2.6.17版本之前,Linux内核为每个CPU设置一个周期性的时钟中断,Linux内核利用这个中断处理一些定时任务,如线程调度等。这样导致即使CPU不需要定时器的时候,也会有很多时钟中断,导致资源的浪费。Linux 内核2.6.17版本引入了nohz机制,实际就是让时钟中断的时间可编程,减少不必要的时钟中断。 修改方式 执行cat /proc/cmdline查看Linux 内核的启动参数,如果有nѯĈɊÑff关键字,说明nohz机制被关闭,需要打开。修改方法如下: 说明 修改前后,可以通过如下命令观察timer_tick的调度次数,其中$PID为要观察的进程ID,可以选择CPU占用高的进程进行观察: perf sched record -- sleep 1 -p $PID perf sched latency -s max 输出信息中有如下信息,其中591字段表示统计时间内的调度次数,数字变小说明修改生效。 步骤1 在“/boot”目录下通过fn -name grub.cfg找到启动参数的配置文件。 步骤2 在配置文件中将nf去掉。 步骤3 重启服务器。 原文:鲲鹏性能优化十板斧5.0.pdf 版权说明: 本文内容由EDA²侠客岛用户自发贡献,版权归原作者所有,EDA²侠客岛不拥有其著作权,亦不承担相应法律责任,如果您发现本社区中有涉嫌抄袭的内容,请立即联系EDA²侠客岛平台,一经查实,将立刻删除涉嫌侵权内容。
作者:仗剑天涯
| |
回复数:0
【鲲鹏】CPU 与内存子系统性能调优之优化方法(三)
优化方法:调整线程并发数 原理 程序从单线程变为多线程时,CPU和内存资源得到充分利用,性能得到提升。但是系统的性能并不会随着线程数的增长而线性提升,因为随着线程数量的增加,线程之间的调度、上下文切换、关键资源和锁的竞争也会带来很大开销。当资源的争抢比较严重时,甚至会导致性能明显降。下面数据为某业务场景下,不同并发线程数下的TPS,可以看到并发线程数达到128后,性能达到高峰,随后开始下降。我们需要针对不同的业务模型和使用场景做多组测试,找到适合本业务场景的最佳并发线程数。 修改方式 不同的软件有不同的配置,需要根据代码实现来修改,这里举例几个常用开源软件的修改方法: ● MySQL可以通过innodb_thread_concurrency设置工作线程的最并发数。 ● Nginx可以通过worker_processes参数设置并发的进程个数。 原文:鲲鹏性能优化十板斧5.0.pdf 版权说明: 本文内容由EDA²侠客岛用户自发贡献,版权归原作者所有,EDA²侠客岛不拥有其著作权,亦不承担相应法律责任,如果您发现本社区中有涉嫌抄袭的内容,请立即联系EDA²侠客岛平台,一经查实,将立刻删除涉嫌侵权内容。
作者:仗剑天涯
| |
回复数:0
【鲲鹏】CPU 与内存子系统性能调优之优化方法(四)
优化方法:NUMA优化,减少跨NUMA访问内存 原理 通过2.1 鲲鹏处理器NUMA简介章节可以看到不同NUMA内的CPU core访问同一个位置的内存,性能不同。内存访问延时从高到低为:跨CPU > 跨NUMA不跨CPU >NUMA内 因此在应用程序运行时要尽可能的避免跨NUMA访问内存,我们可以通过设置线程的CPU亲和性来实现。 修改方式 ● 网 络可以通过如下方式绑定运行的CPU core,其中$cpuNumber是core的编号,从0开始;$irq为网卡队列中断号。 echo $cpuNumber > rcrqrqmfny ● 通过numactl启动程序,如下面的启动命令表示启动test程序,只能在CPU core28到core31运行(-C控制)。 numactl -C 28-31 ./test ● 在C/C++代码中通过cfny函数来设置线程亲和性。 ● 很多开源软件已经支持在自带的配置文件中修改线程的亲和性,例如nginx可以修改nginx.conf文件中的wrrcfny参数来设置nginx线程亲和性。 原文:鲲鹏性能优化十板斧5.0.pdf 版权说明: 本文内容由EDA²侠客岛用户自发贡献,版权归原作者所有,EDA²侠客岛不拥有其著作权,亦不承担相应法律责任,如果您发现本社区中有涉嫌抄袭的内容,请立即联系EDA²侠客岛平台,一经查实,将立刻删除涉嫌侵权内容。
下一页 »
12下一页
联系我们
EDA²侠客岛邮箱:xiakedao@eda2.com
联系人电话:18191069556
ISEDA官网
IDAS官网
EDA²公众号
企业微信

Powered by Discuz!

© 2001-2025 Discuz! Team.

返回顶部 返回版块