一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

針對Ampere Altra處理器的MongoDB優(yōu)化指南

安晟培半導體 ? 來源:安晟培半導體 ? 2023-07-20 10:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

MongoDB 是一個流行的面向文檔的,跨平臺開源 NoSQL 數(shù)據(jù)庫。其靈活的數(shù)據(jù)模型能支持存儲具有完整索引支持和復(fù)制的非結(jié)構(gòu)化數(shù)據(jù)。根據(jù) DB-Engines 的數(shù)據(jù),截至 2023 年 1 月,MongoDB 是第五大最受歡迎的數(shù)據(jù)庫。它是用 c++ 編寫的,旨在為 web 應(yīng)用程序提供可擴展的高性能數(shù)據(jù)存儲解決方案。

本指南的目的是描述在 AmpereAltra處理器上以最佳方式運行 MongoDB 的一些技術(shù)參考。

01構(gòu)建先決條件

以高性能方式運行應(yīng)用程序首先要正確構(gòu)建應(yīng)用程序并使用適當?shù)木幾g器標志。當在 AmpereAltra處理器上從源碼開始構(gòu)建并運行應(yīng)用程序時,我們建議使用 GCC 編譯器版本 10 或更高的版本。較新版本的編譯器往往對新的處理器特性有更好的支持,并結(jié)合了更高級的代碼生成技術(shù)。

我們的測試使用 CentOS Stream 8 作為操作系統(tǒng)

從 SCL 存儲庫下載并安裝了 GCC 11:

yum -y install scl-utils scl-utils-build 
yum -y install gcc-toolset-11.aarch64 
scl enable gcc-toolset-11 bash

對于 Ubuntu 22.04 LTS 和 Debian 等其他操作系統(tǒng),GCC 11 也是可用的,可以直接從各自的存儲庫安裝。

02構(gòu)建和安裝

MongoDB 可以從操作系統(tǒng)包管理器提供的存儲庫中安裝,也可以直接從源代碼構(gòu)建。全面的 MongoDB 安裝指南可以在官方文檔中找到。我們建議從源代碼安裝,以獲得更好的靈活性,以及控制和配置特定模塊的能力。

為了構(gòu)建針對 AmpereAltra處理器家族優(yōu)化的 MongoDB,可以在編譯階段添加可以利用硬件特性的額外編譯選項。用于編譯的 MongoDB 源代碼可以從 MongoDB 下載頁面獲得。本指南使用穩(wěn)定版本 MongoDB 6.0.3。從源代碼安裝需要某些庫和附加模塊,它們將被編譯成二進制文件。

MongoDB 安裝指南:https://github.com/mongodb/mongo/blob/master/docs/building.md

MongoDB 下載頁面:

https://github.com/mongodb/mongo

執(zhí)行以下步驟來安裝依賴項。

yum -y install libcurl-devel python39 python39-devel openssl-devel
yum -y install zlib-devel git wget xz-devel
yum -y groupinstall "Development Tools"

要支持 https 連接,請從各自的 git 存儲庫下載這些附加源代碼的最新代碼。

git clone [https://github.com/mongodb/mongo](https://github.com/mongodb/mongo)
git checkout -b myr6.0.3.rc2 r6.0.3-rc2

需要 Python 3.7+,并且必須安裝幾個 Python 模塊,運行命令:

python3 -m pip install -r etc/pip/compile-requirements.txt

編譯

diff a/src/mongo/db/stats/counters.h b/src/mongo/db/stats/counters.h
224a225,226
>   static_assert(sizeof(decltype(_together)) <= stdx::hardware_constructive_interference_size,
>          "cache line spill");

python3 buildscripts/scons.py 支持許多編譯選項,如 CC, CFLAGS 等。

# get help of scons, such as define CXX=, CC= 
python3 buildscripts/scons.py -h
# Note: configure g++ and gcc path
# --force-jobs is CPU core number
python3 buildscripts/scons.py --force-jobs=8040 DESTDIR=

MongoDB 配置

在本指南中,MongoDB 被配置為使用 WiredTiger 存儲引擎和 snappy 作為塊和日志壓縮器。請參考附錄中顯示的 mongodb.conf 文件配置服務(wù)器。

#start the server
$MongoDB_Install_Dir/bin/mongod --config mongod_conf --storageEngine wiredTiger
#stop the server
$MongoDB_Install_Dir/bin --config mongod_conf --shutdown

03性能優(yōu)化

有數(shù)百種設(shè)置可以改變 MongoDB 的功能和性能。下面列出的只是一些可以使用的更常見的調(diào)節(jié)變量。推薦參考 MongoDB 文檔了解所有設(shè)置詳情。

cachesizeGB

定義了內(nèi)部使用的緩存最大值,WiredTiger 將其適用于所有數(shù)據(jù)。

增加 cacheSizeGB 可以減少磁盤 io 的影響,提高讀寫性能。

使用“db.serverStatus(). wiredtiger”命令檢查“maximum bytes configured”(cacheSizeGB或默認設(shè)置配置的最大緩存大小)和“bytes current in the cache”(當前緩存中的數(shù)據(jù)大?。?。

Eviction 優(yōu)化

當應(yīng)用程序接近最大緩存大小時,WiredTiger 開始清除,以防止內(nèi)存使用增長過大,遵循“最近最少使用”算法。" eviction=(threads_min=X) "是正在運行的 WiredTiger Eviction 工作線程的最小數(shù)量,取值必須在 1 到 20 之間。

" eviction=(threads_max=X) "是正在運行的WiredTiger Eviction工作線程的最大數(shù)量。取值必須在 1 到 20 之間。這應(yīng)該與 MongoDB 的 threads_min 設(shè)置相匹配。

#get
db.adminCommand({getParameter: 1, wiredTigerEngineRuntimeConfig: "eviction"})
{
 wiredTigerEngineRuntimeConfig: 'eviction=(threads_min=4,threads_max=8)',
 ok: 1
}
#set
db.adminCommand({setParameter: 1, wiredTigerEngineRuntimeConfig: "eviction=(threads_min=4,threads_max=8)"})

concurrentTransactions

iredTiger 使用 ticket 來控制存儲引擎同時處理的讀/寫操作的數(shù)量。默認值是 128,在大多數(shù)情況下都很有效的。如果 ticket 降為 0,則后續(xù)所有操作都排隊等待新的 ticket。長時間運行的操作可能會導致可用 ticket 的數(shù)量減少,從而降低系統(tǒng)的并發(fā)性。例如,增加 ticket 的配置值可以增加并發(fā)性。

#讀取當前值
db.serverStatus().wiredTiger.concurrentTransactions
{
 write: { out: 0, available: 128, totalTickets: 128 },
 read: { out: 0, available: 128, totalTickets: 128 }
}


#修改值
db.adminCommand({setParameter: 1, wiredTigerConcurrentWriteTransactions: 256})
{ was: 0, ok: 1 }


db.adminCommand({setParameter: 1, wiredTigerConcurrentReadTransactions: 256})
{ was: 0, ok: 1 }

journalCompressor

指定用于壓縮 WiredTiger 日志數(shù)據(jù)的壓縮類型。壓縮操作會消耗額外的 CPU 資源,但也最小化了存儲消耗。

blockCompressor

指定集合數(shù)據(jù)的默認壓縮。在創(chuàng)建集合時,可以在每個集合的基礎(chǔ)上重置此設(shè)置。當然壓縮操作會消耗額外的 CPU 資源,但也最小化了存儲消耗。

64K PAGESIZE

內(nèi)核 PAGESIZE 建議設(shè)置為 64K??梢允褂妹睢癵etconf PAGESIZE”來確定。PAGESIZE 是一個內(nèi)存頁的大小,以字節(jié)為單位,在編譯內(nèi)核時配置。使用較大的頁面可以減少將虛擬頁面地址轉(zhuǎn)換為物理頁面地址的硬件延遲。延遲的減少是由于硬件翻譯緩存(如 translation lookaside buffer,TLB)的效率得到了提高。因為硬件轉(zhuǎn)換緩存只有有限數(shù)量的條目,所以使用更大的頁面大小會增加緩存中每個條目可以轉(zhuǎn)換的虛擬內(nèi)存量。這不但增加了應(yīng)用程序可以訪問的內(nèi)存量,而且不會導致硬件轉(zhuǎn)換延遲。

Transparent Huge Pages

透明大頁(Transparent Huge Pages, THP)是一種 Linux 內(nèi)存管理系統(tǒng),它通過使用更大的內(nèi)存頁,減少了在具有大量內(nèi)存的機器上 TLB(Translation Lookaside Buffer)查找的開銷。然而,在啟用 THP 的情況下,數(shù)據(jù)庫工作負載通常表現(xiàn)不佳,因為它們往往具有稀疏而非連續(xù)的內(nèi)存訪問模式。在 Linux 上運行 MongoDB 時,應(yīng)該禁用 THP 以獲得最佳性能。

echo never > /sys/kernel/mm/transparent_hugepage/enabled

大多數(shù)類 unix 操作系統(tǒng),包括 Linux 和 macOS,都提供了在每個進程和每個用戶的基礎(chǔ)上限制和控制系統(tǒng)資源(如線程、文件和網(wǎng)絡(luò)連接)使用的方法。這些“限制”可以防止單個用戶使用過多的系統(tǒng)資源。有時,這些限制的默認值比較低,這可能會在正常的 MongoDB 操作過程中導致許多問題。

要為這些版本配置 ulimit 值,請創(chuàng)建一個名為?/etc/security/limits.d/99-mongodb-nproc.conf? 的文件,并添加新值以提高該進程的限制閾值。

echo "* soft  fsize    unlimited" | sudo tee -a /etc/security/limits.conf
echo "* hard  fsize    unlimited" | sudo tee -a /etc/security/limits.conf
echo "* soft  cpu     unlimited" | sudo tee -a /etc/security/limits.conf
echo "* hard  cpu     unlimited" | sudo tee -a /etc/security/limits.conf
echo "* soft  as      unlimited" | sudo tee -a /etc/security/limits.conf
echo "* hard  as      unlimited" | sudo tee -a /etc/security/limits.conf
echo "* soft  memlock   unlimited" | sudo tee -a /etc/security/limits.conf
echo "* hard  memlock   unlimited" | sudo tee -a /etc/security/limits.conf
echo "* soft  nofile    64000" | sudo tee -a /etc/security/limits.conf
echo "* hard  nofile    64000" | sudo tee -a /etc/security/limits.conf
echo "* soft  nproc    64000" | sudo tee -a /etc/security/limits.conf
echo "* hard  nproc    64000" | sudo tee -a /etc/security/limits.conf

為您的部署配置足夠的文件句柄(fs.file-max)、內(nèi)核 pid 限制(kernel.pid_max)、每個進程的最大線程數(shù)(kernel.threads-max)和每個進程的最大內(nèi)存映射區(qū)域數(shù)(vm.max_map_count)。對于大型系統(tǒng),以下值是不錯的參考值:

sysctl -w vm.max_map_count = 98000
sysctl -w kernel.pid_max = 64000
sysctl -w kernel.threads-max = 64000
sysctl -w vm.max_map_count=128000
sysctl -w net.core.somaxconn=65535

開始調(diào)優(yōu)并使用吞吐量-性能配置文件

tuned-adm profile throughput-performance

04附錄

MongoDB conf file

processManagement:
  fork: true
net:
  bindIp: %SERVER%
  port: %PORT%
storage:
  dbPath: %DATA_ROOT%/%PORT%
  engine: wiredTiger
  wiredTiger:
   engineConfig:
     journalCompressor: snappy
     cacheSizeGB: 30
   collectionConfig:
     blockCompressor: snappy


systemLog:
  destination: file
  path: "%DATA_ROOT%/%PORT%/mongod.log"
  logAppend: true
storage:
  journal:
   enabled: true

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19896

    瀏覽量

    235356
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3927

    瀏覽量

    66268
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3690

    瀏覽量

    43840
  • nosql
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

    10311
  • Ampere
    +關(guān)注

    關(guān)注

    1

    文章

    81

    瀏覽量

    4711

原文標題:安博士講堂|針對 Ampere? Altra? 處理器的 MongoDB 優(yōu)化指南

文章出處:【微信號:AmpereComputing,微信公眾號:安晟培半導體】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Ampere推出業(yè)內(nèi)首款擁有最多內(nèi)核數(shù)量的云原生處理器系列

    Ampere Altra系列提供了解決各種工作負載的靈活性,并且Ampere正在與生態(tài)系統(tǒng)中的伙伴合作,以滿足客戶的特定需求。
    發(fā)表于 06-28 16:44 ?1660次閱讀

    業(yè)界首款!Ampere發(fā)布有80個核心的ARM處理器

    今天晚上,Ampere發(fā)布了Ampere Altra處理器,官方稱這是業(yè)界首款80核服務(wù)處理器
    的頭像 發(fā)表于 03-04 10:11 ?2768次閱讀

    Ampere發(fā)布業(yè)內(nèi)首款80核ARM架構(gòu)64位處理器Altra 并已開始向云服務(wù)和邊緣計算客戶出樣

    高性能計算公司Ampere今日發(fā)布了業(yè)內(nèi)第一款80核ARM架構(gòu)64位處理器Altra,其用于服務(wù)、數(shù)據(jù)中心產(chǎn)品,目標是與Intel、AMD所代表的x86陣營競爭。
    發(fā)表于 03-04 11:33 ?1560次閱讀

    Ampere全新推出業(yè)界首款80核服務(wù)處理器Ampere Altra?處理器

    安晟培半導體科技有限公司(Ampere Computing)于今日正式發(fā)布全新一代Ampere Altra?處理器,此款產(chǎn)品是業(yè)界首款搭載80個內(nèi)核數(shù)量的服務(wù)
    發(fā)表于 03-05 07:53 ?1498次閱讀

    安晟培半導體Ampere Altra處理器推出,應(yīng)用于云和邊緣計算數(shù)據(jù)中心中

    3月4日消息,據(jù)國外媒體報道,安晟培半導體科技有限公司(Ampere Computing,簡稱“安晟培半導體”)發(fā)布Ampere Altra處理器,這是業(yè)界首款搭載80個內(nèi)核數(shù)量的服務(wù)
    的頭像 發(fā)表于 03-04 17:03 ?3359次閱讀

    128核云原生新力作:Ampere? Altra? Max性能參數(shù)公布,提升50%!

    Ampere Altra Max的實驗室的測試結(jié)果顯示,在進行AES-256-gcm加密計算時,它可以加密的數(shù)據(jù)塊比Ampere Altra多出57%,所用密鑰大小從16到16K字節(jié)不
    發(fā)表于 03-15 17:12 ?2447次閱讀

    詳細解說Ampere Altra性能測試與結(jié)果對比

    現(xiàn)代云對更高的性能,更好的可擴展性,能源效率的需求在不斷增長。去年年初發(fā)布的業(yè)內(nèi)首款云原生處理器AmpereAltra,以全新設(shè)計以滿足現(xiàn)代云的需求,具有令人矚目的整數(shù)性能,高內(nèi)核數(shù)和出色的能源效率等特點,Ampere Altra
    的頭像 發(fā)表于 03-24 15:13 ?7986次閱讀
    詳細解說<b class='flag-5'>Ampere</b> <b class='flag-5'>Altra</b>性能測試與結(jié)果對比

    Ampere? Altra? Max 對比測試數(shù)據(jù)公布,性能能效雙領(lǐng)先

    ,軟件架構(gòu)得以重建,就如同搬進新家時,家具需要因地制宜重新擺放。 ? 2020 年,面向云計算的新時代,Ampere Computing 設(shè)計并推出了第一款云原生處理器——80 核?Ampere??
    的頭像 發(fā)表于 04-02 11:30 ?4481次閱讀
    <b class='flag-5'>Ampere</b>? <b class='flag-5'>Altra</b>? Max 對比測試數(shù)據(jù)公布,性能能效雙領(lǐng)先

    Ampere Altra處理器實現(xiàn)Arm架構(gòu)運行虛擬機

     近日,微軟推出了基于 Ampere Altra 云原生處理器的 Azure 虛擬機(VM)。
    的頭像 發(fā)表于 04-10 10:16 ?3769次閱讀

    HPE正式發(fā)布搭載Ampere云原生處理器的HPE ProLiant RL300 Gen11平臺

    在今年的 HPE Discover 2022 全球峰會上,HPE 宣布正式發(fā)布搭載 Ampere AltraAmpere Altra Max 云原生
    的頭像 發(fā)表于 07-13 11:40 ?2581次閱讀

    Ampere全新AmpereOne系列處理器,多達192個單線程Ampere

    強調(diào)Ampere憑借過去Ampere AltraAmpere Altra Max處理器創(chuàng)建了云
    發(fā)表于 05-23 11:44 ?763次閱讀

    Ampere發(fā)布AmpereOne系列處理器,單顆處理器支持最高192個物理核心

    AmpereOne出現(xiàn)以前,Ampere Altra系列最多128核心,新的AmpereOne則是從136核起步,最多192核心。所以,AmpereOne可以看做是Ampere Altra
    發(fā)表于 06-02 10:43 ?948次閱讀
    <b class='flag-5'>Ampere</b>發(fā)布AmpereOne系列<b class='flag-5'>處理器</b>,單顆<b class='flag-5'>處理器</b>支持最高192個物理核心

    Ampere Altra系列處理器的鎖和內(nèi)存序

    的 Arm 版本在功能上可以很好地工作,但隨著核心數(shù)量的增加和鎖的爭用更加頻繁,預(yù)計性能會受到影響。Ampere AltraAmpere Altra Max 支持 LSE,并配備
    的頭像 發(fā)表于 06-07 17:36 ?1946次閱讀
    <b class='flag-5'>Ampere</b> <b class='flag-5'>Altra</b>系列<b class='flag-5'>處理器</b>的鎖和內(nèi)存序

    針對Ampere Altra系列處理器的Memcached優(yōu)化指南

    Memcached 是一個開源的內(nèi)存鍵值數(shù)據(jù)存儲系統(tǒng),通常用于緩存任意類型的小塊數(shù)據(jù),如字符串,或數(shù)據(jù)庫和 API 調(diào)用結(jié)果中的對象。由于其基于內(nèi)存的特性,Memcached 旨在通過在 RAM 中緩存數(shù)據(jù)和對象來加速動態(tài) web 應(yīng)用程序,并減少數(shù)據(jù)庫查找。它是云計算中最具開創(chuàng)性的緩存存儲之一,至今仍很受歡迎。
    的頭像 發(fā)表于 08-08 09:28 ?970次閱讀

    基于Ampere Altra 系列處理器的一系列平臺為 AI 高效賦能

    ,‘芯’未來”的主題,Ampere 在本次活動上展示了基于 Ampere Altra 系列處理器的一系列平臺。憑借高性能、低功耗、可擴展性等卓越特性,基于
    的頭像 發(fā)表于 09-21 09:13 ?1162次閱讀