自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CPU与内存子系统性能调优

调优思路性能优化的思路如下:如果CPU的利用率不高,说明资源没有充分利用,可以通过工具(如strace)查看应用程序阻塞在哪里,一般为磁盘,网络或应用程序自己的业务逻辑有休眠或信号等待,这些优化措施在其它章节描述。如果CPU利用率高,可以选择更好的硬件,优化硬件的配置参数来适配业务场景,或者通过优化软件来降低CPU占用率。根据CPU的能力配置合适的内存条,建议内存满通道配置,发挥内存最大带宽:一颗鲲鹏920处理器的内存通道数为8,两颗鲲鹏920处理器的内存通道数为16;

2024-07-16 03:13:16 790

原创 网络子系统性能调优

调优思路本章主要是围绕优化网卡性能和利用网卡的能力分担CPU的压力来提升性能。在高并发的业务场景下,推荐使用两块网卡,减少跨片内存访问的次数。即将两块网卡分别绑定在服务器的不同CPU上,每个CPU只处理对应的网卡数据。高并发场景还可以为网卡选择x16的 PCIe 卡。二、介绍ethtool是一个Linux下功能强大的网络管理工具,目前几乎所有的网卡驱动程序都有对ethtool的支持,可以用于网卡状态/驱动版本信息查询、收发数据信息查询及能力配置以及网卡工作模式/链路速度等查询配置。

2024-07-16 03:10:47 500

原创 磁盘IO子系统性能调优

调优思路CPU的Cache、内存和磁盘之间的访问速度差异很大,当CPU计算所需要的数据并没有及时加载到内存或Cache中时,CPU将会浪费很多时间等待磁盘的读取。计算机系统通过cache、RAM、固态盘、磁盘等多级存储结构,并配合多种调度算法,来消除或缓解这种速度不对等的影响。但是缓存空间总是有限的,我们可以利用局部性原理,尽可能的将热点数据提前从磁盘中读取出来,降低CPU等待磁盘的时间浪费。因此我们的部分优化手段其实是围绕着如何更充分的利用Cache获得更好的IO性能。

2024-07-16 03:09:42 421

原创 JVM性能调优

调优思路JVM是Java Virtual Machine(Java虚拟机)的缩写,Java代码在不同平台上运行时不需要重新编译,Java语言使用JVM屏蔽了与具体平台相关的硬件指令差异,使得Java语言编译程序只需生成在JVM上运行的字节码,实现在多种平台上不加修改地运行。JVM包括即时编译(JIT)、内存管理(垃圾回收GC技术)和Runtime技术,其中GC调优是性能调优中应用最为广泛。

2024-07-16 03:08:25 766

原创 编译入门那些事儿(6):LLVM Metadata System

(1)uniqued:顾名思义,表示 Metadata 唯一,在 Metadata 中不会显式打印,如果和其它的 Metadata 相同,会被合并。1 的地方改成使用!LLVM Metadata 是 LLVM IR 中非常重要的一部分,它提供了丰富的信息,帮助开发人员更好地理解和优化 LLVM IR,因此 LLVM Metadata 在编译器中被广泛使用,特别是在调试和优化方面。(2)distinct:与 uniqued 相反,表示不唯一,不能和其他相同的合并,即上例中会生成新的!

2024-07-16 03:05:36 640

原创 编译入门那些事儿(2):LLVM TableGen 概述

尤其是在面对大量的信息记录的时候,用起来比较方便。通常来说,上述指令选择和指令调度需要TableGen生成对应的DAGISel.inc,寄存器分配需要TableGen生成对应的RegisterInfo.inc,Code Emission需要TableGen生成对应的MCCodeEmitter.inc。TableGen的用途是创建包含表的巨大的include文件,文件内容各个平台相互独立,为相关平台LLVM后端服务,如果没有LLVM后端使用创建的include文件,TableGen就没有真正的意义。

2024-07-16 03:04:28 735

原创 编译入门那些事儿(3):不透明指针

LLVM中的类型指针有具体的指针类型信息,这是源于LLVM类型系统最初设计时考虑要支持高层的优化,且指针的类型信息可以用于clang前端校验数据类型是否与IR匹配。类型指针携带的类型信息不是必须的,也不是一定准确的,而携带了类型信息后会引起大量无操作类型转换,导致很多资源损耗以及开发难度增大。很多时候假定指针类型相同,使用类型指针的场景会做隐式类型转换,而使用不透明指针的场景需要显式地做检查。(1)LLVM IR中的指针可以在不同类型间转换,类型指针不一定表示内存中的实际底层类型,不具备具体的语义。

2024-07-16 03:03:31 267

原创 安装时报指令错误的处理

在使用官网提供的镜像安装数据库,有时会遇到一些 “非法指令” “illegal instruction” 的问题,或者在一些本地搭建的虚拟机上,数据库启动失败,但是没有很明确的错误信息的问题。在编译脚本中 build\script\utils\make_compile.sh,删除掉所有的 -D__ARM_LSE , 重新打包数据库。该指令集的引用在 Makefile 里面,可以全局搜索 -mavx , 删掉如下编译选项里面加载-mavx 指令,然后重新打包构建即可。cpu 可以通过 lscpu 名称查看。

2024-07-16 03:02:28 892

原创 【好文推荐】openGauss psycopg2 批量操作性能测试

测试版本本测试基于 openGauss 版本的 psycopg2 驱动。pg.90204pg.测试环境组件说明客户端Rocky Linux 8 虚拟机数据库网络本地回路网卡Python3.6.8测试接口接口名说明备注执行一个数据库操作,vars_list 列表中的所有参数会逐个被应用到query 中,每组参数都会单独封包发送给服务端。该函数主要用于更新数据库的命令,查询返回的任何结果集都将被丢弃。在其当前实现中,此方法并不比在循环中执行execute()快。

2024-07-16 03:00:51 646

原创 鲲鹏机密计算TrustZone应用容器化开发和部署指导

(1)现在就可以开始部署机密OS环境了,我们首先获取tzdriver源码,编译出加载机密OS的内核模块: tzdriver.ko (该章节已提前编译出该模块,开发者可直接加载,路径为:/home/HC/itrustee_sdk/test/CA/tzdriver/tzdriver.ko)(5)下载itrustee_sdk源码,编译出tee_upgrade.ko模块,该步骤已完成,该模块路径为/home/HC/itrustee_sdk/test/CA/tee_upgrade/,开发者可直接按步骤(6)操作。

2024-07-16 02:58:35 686

原创 编译器优化那些事儿(11):Code Size 优化综述

Code Size 优化技术,又叫做代码缩减优化技术,指在代码功能不改变的前提下,对其做变换以达到减少代码体积的目的。在编译器中,DCE 通常是在代码生成之前的一个阶段,它通过分析程序的控制流图和数据流图来确定哪些代码是“死代码”,即不会被执行的代码。相比于 -Os 选项,该选项会应用更加激进的代码缩减优化技术,通常会获得更好的代码体积优化效果,但同时会使得程序性能有大幅度下降,详细描述同样可以参考:https://clang.llvm.org/docs/CommandGuide/clang.html。

2024-07-16 02:55:54 481

原创 编译器优化那些事儿(12):LLVM 自动向量化

其中循环向量化关注循环迭代间的向量化机会,会使循环的迭代次数减少,单次迭代的计算数据量增大。SLP向量化的目的是结合同一循环迭代内的多个计算操作,将多条标量计算合并为一条向量计算,在减少计算指令执行次数的同时,减少Code Size和寄存器压力。自动向量化技术可以在中间代码层面,针对硬件的特性或用户的指示,对代码中的循环根据特定长度进行切分并将循环中的原标量计算操作替换为硬件支持的向量计算操作,发挥硬件的向量计算单元算力。对于示例循环的打印信息如下图。循环向量化扩展循环中的指令,转换的逻辑如下图所示。

2024-07-16 02:54:21 424

原创 【好文推荐】openGauss 5.0.0 数据库安全——全密态探究

示例:当KEY_PATH = “key_path_value”, 四个文件的名称分别为key_path_value.pub、key_path_value.pub.rand、 key_path_value.priv、 key_path_value.priv.rand。列name1:RSA_2048_256_CEK,列credit_card1:RSA_3072_256_CEK,列name2:RSA_2048_128_CEK,列credit_card2:RSA_3072_128_CEK,

2024-07-16 02:52:49 542

原创 【好文推荐】openGauss索引推荐功能测试

单索引推荐单索引推荐功能,目前支持select查询,看官方介绍类似oracle中的sql_tunning_adviser,不过只是推荐创建索引。根据sql优化原理,猜测应该时根据选择来推荐索引。’);(1 row)调用推荐函数的地方需要注意最后面几个分号与引号,有点费解。目前建议需要在t2表tablename创建索引。

2024-07-16 02:46:31 446

原创 【经验分享】openGauss容灾集群搭建

背景openGauss推出了容灾架构,相比之前的一个集群主从架构,而容灾架构是两个集群间的数据同步。为了更深入了解其原理,本文试图通过阅读gs_sdr命令相关的代码来学习下相关的各种操作。(1)容灾搭建过程可以参考:https://www.modb.pro/db/628767(2)vscode调试配置可以参考:https://www.modb.pro/db/658344(3)个人学习记录,理解不一定完全正确。如有错误,可指出一起探讨_环境准备(1)集群1信息。

2024-07-16 02:45:27 553

原创 GCC for openEuler介绍

前言本手册用于指导用户使用GCC for openEuler构建业务场景及相关注意事项。概述GCC for openEuler基于开源GCC-10.3版本(https://gcc.gnu.org,2021年4月发行)开发,并进行了优化和改进,实现软硬件深度协同优化,挖掘OpenMP、SVE向量化、数学库等领域极致性能,是一种Linux下针对鲲鹏920处理器的高性能编译器。

2024-06-18 17:49:26 737

原创 二进制编译

x86运行环境是ExaGear创建的一个包含所有标准库、实用程序、配置文件的x86应用执行环境,这确保了x86应用程序运行所需的基础设施组件的可用性。从技术角度讲,x86运行环境是一个特定的文件目录,包含了x86库、命令、实用程序和其它系统文件(见图2)。xaGear是一款二进制指令动态翻译软件,运行在Arm64服务器上,通过将x86的指令在运行时翻译为Arm64指令并执行,使得绝大部分x86应用无需重新编译就可运行在Arm64服务器上,实现低成本、快速迁移x86应用到Arm64服务器。

2024-06-18 17:47:17 255

原创 鲲鹏920指令集简介---脚本移植案例

随着计算机技术的发展需要不断引入新的复杂的指令集,为支持这些新增的指令,计算机的体系结构会越来越复杂。然而,在CISC指令集的各种指令中,其使用频率却相差悬殊,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%,显然,这种结构是不太合理的。传统的CISC体系由于指令集庞大,指令长度不固定,指令执行周期有长有短,使指令译码和流水线的实现在硬件上非常复杂,给芯片的设计开发和成本的降低带来了极大困难。将指令长度固定,指令格式和寻址方式种类减少。

2024-06-18 17:45:12 313

原创 Greenplum

Greenplum是一个面向数据仓库应用的关系型数据库,因为有良好的体系结构,所以在数据存储、高并发、高可用、线性扩展、反应速度、易用性和性价比等方面有非常明显的优势。Greenplum是一种基于PostgreSQL的分布式数据库,其采用shared-nothing架构,主机、操作系统、内存、存储都是自我控制的,不存在共享。本质上讲Greenplum是一个关系型数据库集群,它实际上是由数个独立的数据库服务组合成的逻辑数据库。鲲鹏920 5250处理器。操作系统要求如表2所示。硬件要求如表1所示。

2024-06-18 17:43:17 712

原创 PostgreSQL

通过PITR(Point in Time Recovery)技术,可以对数据库进行一次全量备份后,该技术将备份时间点之后的WAL日志通过归档进行备份,使用数据库的全量备份再加上后面产生的WAL日志,即可把数据库向前推到全量备份后的任意一个时间点。在PostgreSQL数据库中,对表进行DELETE操作后,旧的数据并不会立即被删除,并且在更新数据时,也并不会在旧的数据上做更新,而是新生成一行数据。主要用于查询优化时的代价估算,包括一个表和索引进行了多少次的插入、更新、删除操作,磁盘块读写的次数、行的读次数。

2024-06-18 17:40:41 590

原创 OpenMP优化调研系列文章(5)

我们调研了使用手写代码完成上述两种优化的测试,发现在计算量足够大,或者是可以多次重复利用临时数组的时候,可以得到性能的优化。a、b数组为一维数组,元素个数为最大线程数,每个线程根据tid为数组索引访问a、b中不同元素,work函数参数传递方式为传递引用,函数体内存在大量对数组的写回操作,在这种情况下当线程数规模拓展到一定程度,数据一致性导致的Cache冲刷大大降低了Cache的命中率,一个有效的手段就是尽可能使用线程私有变量的读写代替对数组元素的读写。基于键涨落模型数值模拟的并行优化[3]

2024-06-13 17:36:46 432

原创 OpenMP优化调研系列文章(4)

在gather阶段,线程通过将共享标记数组自己的专属位置置0表示到达,团队中的线程需要在同步点等待所有线程都到达。这种优化是必要的,因为并行区域和串行区域之间的barrier通常会阻止死代码的消除来完全移除并行区域,仍会有fork-join的开销。该算法可以看作为扇入为f的树,f的值在不同的级别上可以不同,以保持同步树尽可能平衡。在集中式barrier中,所有线程都在写和读计数器的同一内存位置,导致内存访问的热点问题。构建一棵有多个节点的树,将并行的线程分为几个组,组内的线程共享一个计数器。

2024-06-13 17:35:35 810

原创 编译器优化那些事儿(8):指令调度概述

指令调度通过重排指令顺序,降低指令间依赖,提高程序的并行度,相应的,改变指令的执行时机也会改变指令所使用的寄存器的生命周期;可以知道,将指令调度问题和寄存器分配问题作为两个约束条件进行联合求解得到的解决方案是相对更优的,但由于无论是指令调度还是寄存器分配,都是很复杂的NP完全问题,综合考虑下,编译器一般会分别处理二者[1]。数据冒险可能产生数据流依赖。指令调度受到多方面的约束,如数据依赖约束、功能部件约束、寄存器约束等[3],在这些约束下,寻找到最优解,降低指令流水间的stall,就是指令调度的终极目标。

2024-06-13 17:34:05 962

原创 毕昇JDK 8 KAEProvider 易用性增强介绍

以 AES 算法为例,openssl 软算性能比硬件加速高,目前 KAEProvider 实现的 AES 固定使用 openssl 软算,随着硬件升级以及硬件算法优化,当 AES 硬件加速效果比软算性能高时,用户使用 AES 进行加解密时无法切换到 KAE 硬件加速。不同引擎支持的硬件加速算法不同,kae 支持的算法[2]和 uadk 支持的算法[3]不一样,kae 引擎不支持 SHA256 算法,而 uadk_engine 引擎支持。kaeprovider.conf 文件不支持用户自定义路径。

2024-06-13 17:30:51 594

原创 案例分析 | g_mmpbsa软件移植毕昇编译器无法启动多线程

软件安装需要先安装 apbs 和 gromacs 两个依赖软件,然后安装 g_mmpbsa 软件,在华为云服务器x86架构16核32G内存下,GCC 编译场景,软件安装正常,运行官方用例选择数据1和数据13的组合,程序完成需要4分钟的时间,在运行过程中可以看到软件自动用了华为鲲鹏云服务的16核资源。使用毕昇编译器对软件进行编译后,程序能正常运行,但是运行时间却要花40分钟左右,性能差别很大,并且在毕昇编译器编译后运行程序只有一个线程,CPU使用率都是低于100%,如下图所示。

2024-06-13 17:28:19 568

原创 编译器优化那些事儿(15):数组访问依赖分析

在 MLIR ‘affine’ dialect 中,数组访问依赖分析的实现更加完备(因为在 MLIR 中数组访问的相关信息被完全保留了,而非像在 IR 中那样需要从 getelementptr 等指令反向推导出来),不仅支持依赖关系判断,更支持较复杂的仿射划分。通过将有依赖关系的数组访问安排在一起,可以提升程序的时间/空间局部性,相互独立的部分也能并行。为了将有依赖关系的动态数组访问安排在一起,我们需要找到一个划分:若两个动态数组访问之间存在依赖,则它们应当属于同一个集合。(1)数组访问间是否独立。

2024-06-13 17:27:08 716

原创 鲲鹏机密计算TrustZone应用容器化开发和部署指导

(1)现在就可以开始部署机密OS环境了,我们首先获取tzdriver源码,编译出加载机密OS的内核模块: tzdriver.ko (该章节已提前编译出该模块,开发者可直接加载,路径为:/home/HC/itrustee_sdk/test/CA/tzdriver/tzdriver.ko)(5)下载itrustee_sdk源码,编译出tee_upgrade.ko模块,该步骤已完成,该模块路径为/home/HC/itrustee_sdk/test/CA/tee_upgrade/,开发者可直接按步骤(6)操作。

2024-06-13 17:23:52 953

原创 【鲲鹏DevKit黑科技揭秘】HPC应用1人天精准调优,综合性能提升24%

鲲鹏平台多核多并发、易扩展等特点能够很好的满足风雷软件的高并行计算需求,并且鲲鹏开发套件DevKit提供的全场景性能调优能力、能够快速消除性能瓶颈,进一步提升风雷软件在鲲鹏上的运行性能。鲲鹏DevKit性能分析工具面向HPC场景提供了OpenMP/MPI专项分析能力:该功能可以采集风雷软件面向OpenMP/MPI应用的关键指标以及性能监测相关信息,精准获得串行及并行时间、较准的Top-Down指标、指令分布和内存带宽等信息,并针对异常信息给出优化建议,帮助技术人员精准、快速的完成调优。

2024-06-13 17:21:31 792

原创 揭开HPC应用的神秘面纱

说起高性能计算(High Performance Computing,缩写 HPC),很多人第一个想法就是动辄亿亿次浮点运算的“超级计算机”,国家花这么大代价做出来的机器干啥用呢,其实大到天气预报、飞机制造、新冠疫苗研发,小到唐氏筛查、《熊出没》渲染,到处可见HPC的身影,就拿最近的北京冬奥会来说,其成功举办就脱离不了济南超算对空气质量预报准确及时的预警,当然HPC也可以离我们很远,举几个戈登贝尔奖的栗子(被誉为“超级计算应用领域”内的诺贝尔奖)。这次的运行时间是不是更短了呢?

2024-06-13 17:19:20 806

原创 我和容器有个约会:浅析HPC容器的前世今生

高性能计算应用属于交叉学科,专业性强,懂应用的不懂计算机,懂计算机的不懂应用是非常常见的现象,而且HPC算法晦涩难懂,架构设计复杂多样,导致调优难度普遍较高,2021年的图灵奖颁给了美国计算机科学家 Jack J. Dongarra,他是lapack、atlas等数学库的作者,因为他在数值算法和库方面做出了开创性的贡献,使得高性能计算软件能够跟上四十多年来的指数级硬件更新,说明业界普遍都在追求非常极致的性能、性价比与能耗比,仅是提高很少量的百分点都能为企业带来巨大的经济效益。请在评论区写出你的感受。

2024-06-13 17:17:30 843

原创 isocut 使用指南

本例中使用目录 /home/temp,由如下回显可知 /home 目录可用磁盘为 38 GB,满足要求。默认为 /tmp。如果需要添加额外 RPM 包,并使用 kickstart 自动安装,需要在 /etc/isocut/rpmlist 和 kickstart 文件的 %packages 字段都指定该 RPM 包。如果要添加额外 RPM 包,并使用 kickstart 自动安装,则在 /etc/isocut/rpmlist 和 kickstart 文件的 %packages 字段都要指定该 RPM 包。

2024-05-26 17:34:48 634 1

原创 sysmaster使用说明

本章主要通过一些实例来带领用户初步使用 sysmaster,例如:如何创建 service服务单元配置文件。如何管理单元服务,例如启动、停止、查看服务。更多可以查阅官方手册。创建单元配置文件用户可以在 /usr/lib/sysmaster/system/目录下创建单元配置文件。单元配置文件的类型当前 sysmaster支持 target、socket、service类型的单元配置文件。target:封装了一个由 sysmaster管理的启动目标,用于将多个单元集中到一个同步点。

2024-05-26 17:33:40 248

原创 Gazelle网络

它基于DPDK(Data Plane Development Kit,数据平面开发工具集)在用户态直接读写网卡报文,共享大页内存传递报文,使用轻量级LwIP协议栈。专注于数据库网络性能加速,如MySQL、redis等。单进程且网卡支持多队列时,只需使用liblstack.so,以缩短报文路径。其余场景使用ltran进程分发报文到各个线程。配置openEuler的yum源,直接使用yum命令安装。报文零拷贝,无锁,灵活scale-out,自适应调度。完全兼容POSIX,零修改,适用不同类型的应用。

2024-05-26 17:33:09 379

原创 sysMaster用户指南

• sysmaster-exts:使原本耦合的各组件功能独立,提供系统关键功能的组件集合(如设备管理 devMaster,总线通信 busMaster 等),各组件可单独使用,可根据不同场景灵活选用。sysMaster 目前主要由 sysmaster 和 devmaster 两部分功能组成,其中 sysmaster 负责服务的管理,devmaster 负责设备的管理,下面将对这两部分功能进行说明。sysMaster 实现思路是将传统 1 号进程的功能解耦分层,结合使用场景,拆分出 1+1+N 的架构。

2024-05-26 17:32:36 404

原创 openGauss: AI与数据库的冰与火之歌

来自业务逻辑的挑战:SQL语句的处理过程中,日趋复杂业务场景和商业智能工具的应用,导致生成的SQL语句自身质量良莠不齐,其中的一部分可能会耗费大量的读写和计算资源,导致服务器对其他业务语句造成阻塞,这就对数据库上层业务组件的SQL诊断能力提出了要求。在依赖数据库的大量业务场景中,简单至一次账户登录、订单查询,复杂至上亿行的报表查询、数据挖掘,都会通过业务应用层的抽象转化以SQL语句的形式对数据库进行操作,数据库内核中的SQL引擎则会对SQL语句进行进一步优化。

2024-05-16 14:24:51 573

原创 openGauss数据库性能调优

概述:本文描述了openGauss数据库基于Taishan服务器,在openEuler操作系统上,为了达到数据库的极致性能,所依赖的关键系统级调优配置。(1)硬件规格:CPU: 鲲鹏-920(1620) ARM aarch64 64核 * 2内存: >=512G磁盘: Nvme SSD * 4(每块大于1TB)

2024-05-16 14:22:56 861

原创 带你走进openGauss数据库的核心技术(二)

然而对于全表扫描,需要读取1亿条数据才能获取同样的结果。这条语句,索引扫描需要访问索引中的全部数据和表中的全部数据,并且带来巨量的随机I/O,而全表扫描只需要顺序的访问表中的全部数据,因此在这种情况下,全表扫描的代价更低。openGauss通常采用自底向上的路径搜索方法,首先生成了每个表的扫描路径,这些扫描路径在执行计划的最底层(第一层),在第二层开始考虑两表连接的最优路径,即枚举计算出每两表连接的可能性,在第三层考虑三表连接的最优路径,即枚举计算出三表连接的可能性,直到最顶层为止生成全局最优的执行计划。

2024-05-16 14:20:36 315

原创 带你走进openGauss数据库核心技术(一)

如果能把子查询提升为父查询同级别,那么可以子查询中的表就能和父查询中的表直接做Join操作,由于Join操作可以有多种实现方法,优化器就可以从多种实现方法中选择最优的一种,就有可能提高查询的执行效率,另外优化器还能够应用Join Reorder优化规则对不同的表的连接顺序进行交换,进而有可能产生更好的执行计划。在有效性检查的同时,语义分析的过程还是有效性语义绑定(Bind)的过程,通过语义分析的检查,抽象语法树就转换成一个逻辑执行计划,逻辑执行计划可以通过关系代数表达式的形式来表现,如下图所示。

2024-05-16 14:19:48 460

原创 如何在x86架构的openEuler上编译openGauss

openGauss当前官方支持在ARM架构下的openEuler安装包,本文档帮助读者快速了解在x86架构的openEuler上如何编译openGauss数据库。当前openGauss官方支持ARM架构的openEuler,这里支持x86架构的openEuler需要修改Makefile文件。并拷贝到/root/openGauss-third_party/buildtools/gcc/目录下。从如上GitHub地址下载gcc重命名为:gcc-8.2.0.tar.gz,准备openGauss代码仓库。

2024-05-16 14:18:24 659

原创 如何向openGauss社区提交你的第一篇博客

t=179267,完成Gitee账号的注册,然后需要前往http://gitee.com/profile/emails绑定你的主邮箱。你可以将个人博客以Pull Request的方式提交到openGauss社区blog仓库, 在Pull Request合入blog仓库之后会自动同步到社区官网:https://opengauss.org/zh/blogs/blogs.html。img:博客的缩略图片,如/zh/post/xingchen/title/title.jpg。

2024-05-16 14:16:52 537

空空如也

空空如也

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

TA关注的人

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