主頁 > 資料庫 > 當GaussDB遇上了畢昇編譯器

當GaussDB遇上了畢昇編譯器

2023-06-13 08:33:54 資料庫

摘要:當應用軟體及硬體確定后,編譯器對應用的自動優化將成為應用性能的關鍵,

從應用優化說起

一個應用的優化通常有架構級優化、模塊級優化和函式級優化,高性能作為云資料庫GaussDB主打特性之一,其在這幾方面都進行了大量的優化,也有很強的性能表現,如何進一步提升性能,是否還有其他方面的切入點?

答案之一是編譯器,編譯器作為人機交流的橋梁,一方面正確地把高級語言翻譯成機器語言,另一方通過各種優化變換方法生成更高效的等價語意,所以當應用軟體及硬體確定后,編譯器對應用的自動優化將成為應用性能的關鍵,

1.畢昇編譯器是什么

畢昇編譯器是華為編譯器實驗室針對通用處理器架構構建,支持C/C++/Fortran編程語言,增強和引入了多種編譯優化技術,致力于打造高性能、高可信及易擴展的編譯器工具鏈,畢昇編譯器針對鯤鵬架構深度優化,SPEC CPU 2017性能較開源GCC提升30%,

  • 高性能:編譯深度優化,增強多核并行化,自動向量化等,大幅提升指令和資料呑吐量,
  • 多算力支持:支持其他Arm架構國產芯片,如飛騰,支持x86、RISC-V、龍芯等架構,
  • 高可信:商業+自研測驗套,每日100萬+測驗用例,全面質量保障;開發態提供多種安全編碼工具;社區CVE及時修復;車規級安全認證,

2. 相關編譯器優化技術

2.1 函式行內(inline)

函式/程序是編程語言的重要組成部分,函式/程序之間的呼叫是有一定的開銷,比如保存和恢復背景關系、傳遞引數等操作開銷,函式行內優化是一種常用的優化技術,它可以將函式呼叫處直接替換為函式體,從而減少函式呼叫的開銷,下面是一個簡單的示例,展示了如何在編譯器中應用inline優化,

 int square(int x) { 
 return x * x; 
 } 
 int calculate(int a) { 
 return square(a) + square(a + 1); 
 } 

編譯器進行自動行內后,如下:

 int calculate(int a) { 
 return (a * a) + ((a + 1) * (a + 1));
 }

在優化后的代碼中,不再有呼叫square函式的開銷,另外行內后可以幫助編譯器發現更多的優化機會,比如本例中,可以進一步進行編譯期間的計算,

這只是一個簡單的例子,實際的編譯器inline優化會更為復雜,涉及到更多的優化策略和技術,畢昇編譯器進行了inline優化增強,如下是mataERP場景下inline的情況,

函式行內后對應用熱補丁機制有一定影響,制作作業量會略有增加,

2.2 指令預取優化

指令預取(Instruction Prefetching)是一種計算機體系結構中的優化技術,用于提前獲取未來可能需要執行的指令資料,并將其預加載到指令快取中,以減少指令訪問延遲和提高程式的執行效率,

在執行程式時,處理器需要從記憶體中獲取指令資料并進行解碼和執行,由于記憶體訪問的延遲比處理器的執行速度慢,處理器可能需要等待指令資料的到達,導致指令執行的停滯,為了克服這種延遲,指令預取技術被引入,

指令預取的基本原理是根據程式的訪存模式和分支預測資訊,提前預測和獲取未來可能需要執行的指令資料,這樣,當處理器執行到需要這些指令的時候,它們已經被預先加載到指令快取(例如指令高速快取)中,避免了等待時間,

如下面這個來自GaussDB的函式:

畢昇編譯器(右側)插入了prfm預取指令,prfm是鯤鵬平臺上定義的記憶體資料預取指令,執行指令預取優化,

2.3 自動向量化技術

自動向量化技術是編譯器利用硬體架構提供的SIMD(single instruction multiple data)指令,如Arm的NEON/SVE指令,x86平臺的SSE/AVX指令,一條指令可以處理多路資料,從而提升應用二進制的執行效率,畢昇編譯器做了大量向量化新場景識別和演算法增強,并結合鯤鵬SIMD指令特點進行深度優化,

如上圖,如有兩組四個整形資料相加運算,左側需要四次操作,而右側向量化后只需要1次操作,

2.4 鏈接時優化技術

鏈接時優化LTO(Link Time Optimization)是程式鏈接期優化,也叫鏈接期程序間優化,如下圖,編譯器在鏈接時將所有編譯單元(程序)合并在一起,這樣可以發掘不同程序間的優化機會,比如行內(inline)、函式特化(function specialization)、冗余代碼消除、常量傳播等等,通常可以獲得更高的性能收益,當然同時也帶來編譯器時間加長的負面收益,

2.5 CFGO優化

對于控制流較多、對資料分段訪問較多的應用(例如資料庫類應用)非常適合編譯器的反饋類優化技術,CFGO(Continuous FGO)通過收集程式運行時資訊(profile)進行優化決策,編譯器根據這些運行時資訊指導各種編譯優化技術進行更準確的優化決策,生成目標程式,

3. 性能收益

畢昇編譯器協同GaussDB跨域創新,基于應用層優化、編譯中端優化、算力優化等多種手段對GaussDB應用場景持續優化,

  • 高性能:對插入、更新、洗掉等不同負載的業務,畢昇 for GuassDB優化實作 TPCC性能提升30%,TPCH性能提升13%,應用性能提升5%-10%,
  • 高安全:畢昇編譯器全面升級代碼檢測工具,保障安全可信代碼開發,實作高質量、高安全的持續集成、交付與部署,

4. 總結與展望

資料庫和編譯器都是關鍵的基礎軟體,為關基行業提供軟體根技術,后續將進行如下幾方面的作業:

(1)完成GaussDB切換畢昇編譯器,直接獲取已有的性能收益;

(2)針對典型客戶場景,技術能力聯合創新和快速驗證;

(3)突破編譯器/虛擬機關鍵技術,支撐高斯PLSQL性能提升;

目前GaussDB已啟動切換畢昇編譯器行程,并在已經在銀行、政務云等客戶進行了POC驗證,相信后續畢昇編譯器可以為GaussDB提供更強大的競爭力,從而也為更多行業客戶創造更多的商業價值,

另外,畢昇編譯器作為通用編譯器,也可涵蓋金融領域其他應用場景,如優化haproxy應用,助力工行音視頻互動服務獲得收益;落地上交所CICD,通過協助檢測記憶體安全、代碼規范,保障高質量交付,

 

點擊關注,第一時間了解華為云新鮮技術~

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/555025.html

標籤:其它

上一篇:MySQL 8.0.29 instant DDL 資料腐化問題分析

下一篇:返回列表

標籤雲
其他(160885) Python(38222) JavaScript(25493) Java(18225) C(15237) 區塊鏈(8270) C#(7972) AI(7469) 爪哇(7425) MySQL(7248) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5874) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4589) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2435) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1984) 功能(1967) HtmlCss(1964) Web開發(1951) C++(1933) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1881) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • 當GaussDB遇上了畢昇編譯器

    摘要:當應用軟體及硬體確定后,編譯器對應用的自動優化將成為應用性能的關鍵。 從應用優化說起 一個應用的優化通常有架構級優化、模塊級優化和函式級優化,高性能作為云資料庫GaussDB主打特性之一,其在這幾方面都進行了大量的優化,也有很強的性能表現。如何進一步提升性能,是否還有其他方面的切入點? 答案之 ......

    uj5u.com 2023-06-13 08:33:54 more
  • MySQL 8.0.29 instant DDL 資料腐化問題分析

    - 前言 - Instant add or drop column的主線邏輯 - 表定義的列順序與row 存盤列順序闡述 - 引入row版本的必要性 - 資料腐化問題 - 原因分析 - Bug重現與決議 - MySQL8.0.30修復方案 ## 前言 DDL 相對于資料庫的 DML 之類的其他操作, ......

    uj5u.com 2023-06-13 08:32:47 more
  • Hbase的JavaAPI和資料存盤

    # 匯入Maven依賴 ```XML org.apache.zookeeper zookeeper 3.4.6 org.apache.hbase hbase-client 2.2.5 org.apache.hadoop hadoop-client 3.2.1 org.apache.hadoop ha ......

    uj5u.com 2023-06-13 08:32:21 more
  • 政務云建設提速,天翼云夯實智慧政務數字底座

    5月30日,2023數字政府高質量發展論壇在北京舉辦,大會聚焦業界關注的政策、技術、應用、標準、發展等議題,邀請政產學研各界共議政府數字化轉型之路。現場重磅發布了由中國電信聯合中國資訊通信研究院云計算與大資料研究所共同撰寫的《安全可信政務云一體化建設白皮書》(以下簡稱“白皮書”),中國資訊通信研究院... ......

    uj5u.com 2023-06-13 08:32:08 more
  • HBase的資料結構原理與使用

    一、HBase簡介 HBase是一個開源的、分布式的、版本化的NoSQL資料庫(即非關系型資料庫),依托Hadoop分布式檔案系統HDFS提供分布式資料存盤,利用MapReduce來處理海量資料,用Zookeeper作為其分布式協同服務,一般用于存盤海量資料。HDFS和HBase的區別在于,HDFS ......

    uj5u.com 2023-06-12 08:29:09 more
  • Hbase安裝和shell客戶端操作

    # 簡介 HBase 是一個**面向列式存盤的分布式資料庫**,其設計思想來源于 Google 的 BigTable 論文。 HBase 底層存盤基于 HDFS 實作,集群的管理基于 ZooKeeper 實作。 HBase 良好的分布式架構設計為海量資料的快速存盤、隨機訪問提供了可能,基于資料副本機 ......

    uj5u.com 2023-06-12 08:23:50 more
  • Navicat Premium將關系和物體添加到概念模型的方法

    Navicat Premium是一款強大的跨平臺資料庫管理工具,支持多種主流的關系型資料庫系統,包括 MySQL、MariaDB、SQLite、Oracle、PostgreSQL 和 Microsoft SQL Server 等。它提供了直觀易用的用戶界面和豐富的功能,使得資料庫管理變得更加簡單和高 ......

    uj5u.com 2023-06-12 08:18:37 more
  • Navicat Premium將關系和物體添加到概念模型的方法

    Navicat Premium是一款強大的跨平臺資料庫管理工具,支持多種主流的關系型資料庫系統,包括 MySQL、MariaDB、SQLite、Oracle、PostgreSQL 和 Microsoft SQL Server 等。它提供了直觀易用的用戶界面和豐富的功能,使得資料庫管理變得更加簡單和高 ......

    uj5u.com 2023-06-12 08:12:26 more
  • HBase的資料結構原理與使用

    一、HBase簡介 HBase是一個開源的、分布式的、版本化的NoSQL資料庫(即非關系型資料庫),依托Hadoop分布式檔案系統HDFS提供分布式資料存盤,利用MapReduce來處理海量資料,用Zookeeper作為其分布式協同服務,一般用于存盤海量資料。HDFS和HBase的區別在于,HDFS ......

    uj5u.com 2023-06-12 08:06:41 more
  • Hbase安裝和shell客戶端操作

    # 簡介 HBase 是一個**面向列式存盤的分布式資料庫**,其設計思想來源于 Google 的 BigTable 論文。 HBase 底層存盤基于 HDFS 實作,集群的管理基于 ZooKeeper 實作。 HBase 良好的分布式架構設計為海量資料的快速存盤、隨機訪問提供了可能,基于資料副本機 ......

    uj5u.com 2023-06-12 08:06:28 more