自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 Java JNI(Java Native Interface)介绍

众所周知,Java 的主要优势之一是它的可移植性,这意味着一旦我们编写并且编译了代码,这个过程的结果就是不依赖于平台的字节码。它可以像我们预期的那样运行在任何能够运行 Java 虚拟机的机器或设备上。但是,有时我们确实需要使用一些为某些特定架构而进行本地编译的原生代码。例如:需要对硬件执行某些操作对性能要求非常苛刻想要重用的现有库,而不是用 Java 重写它。为了实现这一点,JDK 在我们的 JVM 中运行的字节码和原生代码(通常用 C 或 C++ 编写)之间搭建了一座桥梁。

2022-03-15 19:14:05 12373

原创 简单实现使用API通信的vpp管理进程(C语言)

所幸,vpp 还提供了 API 供管理程序调用。这个 API 是基于共享内存实现的消息,管理程序可以异步的非阻塞的处理相关消息。通过这些 API,我们就可以实现在不同的进程上去管理 vpp,而且可以实现非常高的吞吐量。

2022-02-23 09:59:12 3084 1

原创 深入代码优化 (三) 数据结构布局优化

1980年之前,cpu访问内存和访问寄存器的速度是差不多的,但自1980年以来,cpu和内存的性能差距一直在扩大,1980年-2000年,cpu的性能提升了600倍,而内存的访问时间只提升了6倍。在cpu从内存中读取数据的这段时间内,cpu都是处于无事可做的等待状态。所以缓存cache的出现,在很大程度上能够弥补cpu和内存速度之间的巨大鸿沟。在高性能系统中,缓存命中率是决定性能好坏的重要因素。

2022-01-17 11:37:19 741

原创 Centos 上快速搭建 gerrit 服务

以centos为例介绍下如何搭建gerrit服务器以及如何管理

2021-12-13 19:04:23 1737

原创 深入代码优化 (二) 使用SIMD优化程序

想要代码能尽量的自动矢量化,以下几点其实是我们可以做到的:-避免使用全局指针和全局变量以帮助编译器生成 SIMD 代码。-使用尽可能小的 SIMD 数据类型,通过使用更长的 SIMD 矢量长度来实现更多的并行性。- 合理安排循环的嵌套,以便最内层的嵌套没有迭代间的依赖关系。尤其要避免在较早的迭代中存储数据,而在往后的迭代中加载该数据。-避免在循环内使用条件分支。-保持循环变量表达式简单。

2021-12-01 15:24:35 9062

原创 使用VTune分析内存及寻找内存泄漏

在IntelVTune Profiler提供了基于事件的内存消耗分析方法(Memory Consumption Analysis)。如果还不清楚VTune的使用方法,请移步使用Intel VTune Profiler进行性能分析及优化_天寒寒的博客-CSDN博客。该内存分析方法分析的目标是linux本地进程或者JAVA,python目标。如果是基于DPDK这种预先从大页当中分配一块内存,然后通过自身的内存管理办法再进行内存分配和释放的应用程序,该方法是无法进行捕获和分析的。内存消耗分析方法可以探索.

2021-11-22 18:54:05 2942

原创 dpdk/vpp中的memif使用方法

简介同一主机上的不同DPDK进程可以采用内存交换的方式进行报文传输,这一传输接口叫做memif(shared memory packet interface)。传输的报文是原始报文格式,可以配置为Ethernet模式,IP模式,Punt/Inject模式。目前DPDK memif只支持Ethernet模式。memif接口有两种身份,master和slave,也可以称为server和client,两者通过socket传递控制消息。master和slave是一一对应的关系,一个master只能和一个slav

2021-11-10 10:54:46 4762 1

原创 深入代码优化 (一) 使用分支预测技术

简介条件分支是指后续具有两路可执行分支。不跳转分支(not-taken branch),至接下来会顺序执行紧挨着JMP的指令。跳转分支(taken branch),通过JMP跳转到另外一块内存去执行那里的指令。是否执行条件跳转,只有在该分支指令在流水线中通过了执行阶段(execution stage)才能确定下来。如果没有分支预测技术,处理器将会等待分支指令通过了指令流水线的执行阶段,才把下一条指令送入流水线的第一个阶段—取指阶段(fetch stage)。这就会引起流水线停顿(pipeline

2021-11-01 23:40:57 1988

原创 Intel自顶向下微架构分析方法

现代 CPU 使用流水线(pipelining)以及硬件多线程、乱序执行和指令级并行等技术来尽可能有效地利用资源。

2021-10-19 10:56:21 1771

原创 使用Intel VTune Profiler进行性能分析及优化

Intel VTune Profiler是一个全平台的性能分析工具,可以帮助你快速发现和分析应用程序及整个系统的性能瓶颈。工具支持分析本地或远程的Windows,Linux及Android应用,这些应用可以部署在CPU,GPU,FPGA等硬件平台上。支持分析的语言包括:DPC++,C,C++,C#,Fortran,OpenCL,Python,Go,Java,汇编等。

2021-09-19 10:18:04 16813 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除