
linux
文章平均质量分 92
Hello:CodeWorld
走过大半个中国去睡你、
展开
-
CPU 3级缓存
比如,有一个 int array[100] 的数组,当载入 array[0] 时,由于这个数组元素的大小在内存只占 4 字节,不足 64 字节,此时需要16个元素才能凑满64个字节,那么CPU 就会顺序加载数组元素到 array[15] ,意味着 array[0]~array[15] 数组元素都会被缓存在 CPU Cache 中了,因此当下次访问这些数组元素时,会直接从 CPU Cache 读取,而不用再从内存中读取,大大提高了 CPU 读取数据的性。缓存行越大,局部性空间效率越高,但读取时间慢。转载 2024-03-31 12:11:02 · 656 阅读 · 0 评论 -
多核编程之 CPU Cache
该缓存行只被缓存在该CPU的缓存中,并且是被修改过的(dirty),即与主存中的数据不一致,该缓存行中的内存需要在未来的某个时间点(允许其它CPU读取请主存中相应内存之前)写回(write back)主存。CPU 架构下,一致性的保证就比较复杂,比如多个 CPU Cache 都缓存了某个变量的值,但那个变量被其中一个核修改了值,其他 CPU 核心内的缓存如何能及时感知并刷新缓存?该状态意味着该缓存行可能被多个CPU缓存,并且各个缓存中的数据与主存数据一致(clean),当有一个CPU修改该缓存行中,转载 2024-03-31 11:47:09 · 148 阅读 · 0 评论 -
C++ Perf性能调优+火焰图调优
系统级性能优化通常包括两个阶段:性能剖析(performance profiling)和代码优化。性能剖析的目标是寻找性能瓶颈,查找引发性能问题的原因及热点代码。代码优化的目标是针对具体性能问题而优化代码或编译选项,以改善软件性能。转载 2024-03-31 11:30:07 · 463 阅读 · 0 评论 -
性能调优之工具---perf
Perf 是内置于Linux 内核源码树中的性能剖析(profiling)工具。它基于事件采样原理,以性能事件为基础,支持针对处理器相关性能指标与操作系统相关性能指标的性能剖析。可用于性能瓶颈的查找与热点代码的定位。linux2.6及后续版本都自带该工具,几乎能够处理所有与性能相关的事件。转载 2024-03-23 22:06:26 · 421 阅读 · 0 评论 -
ARM CPU 之 PMU部件(性能监控单元)
9.CPU流水线(CPU pipeline)CPU流水线的工作方式就像工业生产上的装配流水线,在CPU中由5-6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5-6步后再由这些电路单元分别执行,这样就能实现一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。6.写命中(write hit)当处理器将操作数写回到一个内存缓存的区域时,它首先会检查这个缓存的内存地址是否存在行中,如果存在一个有效的缓存行,则处理器将这个操作数写回到缓存,而不是写回到内存,这个操作被称为写命中。转载 2024-03-23 21:40:55 · 2655 阅读 · 0 评论 -
ARM PMU详解及使用
PMU即性能监视器,本文只对ARM架构的PMU进行阐述,它运行时可以收集关于处理器和内存的各种统计信息。对于处理器来说这些统计信息中的事件非常有用,你可以利用它们来调试或者剖析代码,很明显这东西是用来测量性能与调优的。之前有段时间在做性能的优化,它是一种硬件实现的机制,因此测量的结果也是比较可信的。转载 2024-03-23 20:49:53 · 971 阅读 · 0 评论 -
perf_event框架之:ARM PMU硬件
这几个寄存器的bit field分布都相同,如上图所示,分别用来配置PMU counter中断的使能和关闭,以及检查PMU counter的溢出状态。许多体系结构都包含PMU(Performance Monitoring Unit)硬件,用于跟踪、计数系统内部的一些底层硬件事件,如与CPU有关的事件(执行指令数、捕获异常数、时钟周期数等)、与cache有关的事件(data/inst./L1/L2 cache访问次数,miss次数等)以及与TLB有关的事件等。(二)用于配置计数事件的寄存器。转载 2024-03-23 20:41:43 · 1062 阅读 · 0 评论 -
ODP(Open Data Plane)
3. ODP API 规范ODP由三个各自独立又相关联的组件组成。首先,ODP是一个抽象的API规范,用于描述数据面应用程序的功能模型。该规范涵盖了许多常见数据面应用程序的编程需求,如接收、操作、传输数据包,但是并不要求这些功能具体如何实现。这是非常有意义的,正因为ODP API没有一个优选实施例,它们允许在支持ODP实现的各种平台上运行ODP,并进行各种创新开发。为了实现这一目标,ODP API使用了抽象数据类型描述,其定义留给ODP的实现者。例如,ODP数据包由类型为。原创 2024-03-10 15:21:35 · 1455 阅读 · 0 评论 -
进程,线程与多核,多cpu之间的关系
周而复始,一直这样执行下去。cpu的根本任务,就是执行指令,对计算机来说,都是0,1组成的序列,cpu从逻辑上可以划分为3个模块:控制单元、运算单元和存储单元。),速度最快,每个核上都有一个 L1 缓存,L1 缓存每个核上其实有两个 L1 缓存, 一个用于存数据的 L1d Cache(Data Cache),一个用于存指令的 L1i Cache(Instruction Cache)。包含关系:没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;转载 2024-03-10 11:03:55 · 411 阅读 · 0 评论 -
memset性能陷阱
memset 性能陷阱转载 2022-11-12 16:32:26 · 785 阅读 · 0 评论 -
VS code 使用技巧总结
1.中英文切换英文切换到中文在插件安装菜单下,搜索chinese,rux中文切换到英文原创 2021-06-05 11:59:50 · 963 阅读 · 0 评论 -
GCC编译步骤和过程分析(转载)
通常我们在编译时,会简单的使用一条命令,gcc hello.c -o hello,就会产生一个可执行文件,这样做无可厚非,原因在于gcc把哪些复杂的步骤都屏蔽了,只提供了一个很简单的使用命令。其实在编译时,主要包含4个步骤,分别是<1>预处理(preprocess) gcc -E hello.c -o hello.i<2>编译(compile) ...转载 2019-03-16 10:09:53 · 278 阅读 · 0 评论 -
linux 系统常用的命令行关机指令
1,reboot命令reboot 通知系统重启。# reboot //重启机器 # reboot --halt //停止机器 # reboot -p //关闭机器2,poweroff命令# poweroff //关闭机器 # poweroff --halt // 停止机器 # poweroff --reboot // 重启机器3,h...原创 2018-03-11 21:33:44 · 12871 阅读 · 0 评论 -
CentOS、Ubuntu、Debian三个linux比较异同
Linux有非常多的发行版本,从性质上划分,大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本。商业版本以Redhat为代表,开源社区版本则以debian为代表。这些版本各有不同的特点,在不同的应用领域发挥着不同的作用,不能一概而论。而绝大多数VPS上只提供开源社区维护的发行版本。下面就这些不同的Linux发行版进行简单的分析。UbuntuUbuntu近转载 2016-03-30 17:24:42 · 376 阅读 · 0 评论 -
readb,readw,readl,writeb,writew,writel宏函数的讲解
原文地址:http://www.cnblogs.com/alfredzzj/archive/2012/05/19/2508641.htmlreadb(), readw(), readl()函数 功能: 从内存映射的 I/O 空间读取数据。readb 从 I/O 读取 8 位数据 ( 1 字节 );readw 从 I/O 读取 16 位数据 ( 2 字节 );readl 从转载 2016-01-14 16:12:38 · 1688 阅读 · 0 评论 -
编译内核模块的的Makefile的讲解
首先感谢@ermuzhi的分享,声明本文为转载,感觉不错,学习学习。在编译内核模块时,如有Makefile文件如下:ifneq ($(KERNELRELEASE),)param-objs := file1.o file2.oobj-m := param.oelseKDIR := /lib/modules/2.6.18-53.el5/build转载 2016-01-11 09:53:01 · 777 阅读 · 0 评论