99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

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

安晟培半導(dǎo)體 ? 來(lái)源:安晟培半導(dǎo)體 ? 2023-07-20 10:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

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

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

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

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

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

從 SCL 存儲(chǔ)庫(kù)下載并安裝了 GCC 11:

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

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

02構(gòu)建和安裝

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

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

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

MongoDB 下載頁(yè)面:

https://github.com/mongodb/mongo

執(zhí)行以下步驟來(lái)安裝依賴項(xiàng)。

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 連接,請(qǐng)從各自的 git 存儲(chǔ)庫(kù)下載這些附加源代碼的最新代碼。

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+,并且必須安裝幾個(gè) Python 模塊,運(yùn)行命令:

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 支持許多編譯選項(xiàng),如 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 存儲(chǔ)引擎和 snappy 作為塊和日志壓縮器。請(qǐng)參考附錄中顯示的 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或默認(rèn)設(shè)置配置的最大緩存大小)和“bytes current in the cache”(當(dāng)前緩存中的數(shù)據(jù)大?。?。

Eviction 優(yōu)化

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

" eviction=(threads_max=X) "是正在運(yùn)行的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 來(lái)控制存儲(chǔ)引擎同時(shí)處理的讀/寫操作的數(shù)量。默認(rèn)值是 128,在大多數(shù)情況下都很有效的。如果 ticket 降為 0,則后續(xù)所有操作都排隊(duì)等待新的 ticket。長(zhǎng)時(shí)間運(yùn)行的操作可能會(huì)導(dǎo)致可用 ticket 的數(shù)量減少,從而降低系統(tǒng)的并發(fā)性。例如,增加 ticket 的配置值可以增加并發(fā)性。

#讀取當(dāng)前值
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ù)的壓縮類型。壓縮操作會(huì)消耗額外的 CPU 資源,但也最小化了存儲(chǔ)消耗。

blockCompressor

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

64K PAGESIZE

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

Transparent Huge Pages

透明大頁(yè)(Transparent Huge Pages, THP)是一種 Linux 內(nèi)存管理系統(tǒng),它通過(guò)使用更大的內(nèi)存頁(yè),減少了在具有大量?jī)?nèi)存的機(jī)器上 TLB(Translation Lookaside Buffer)查找的開銷。然而,在啟用 THP 的情況下,數(shù)據(jù)庫(kù)工作負(fù)載通常表現(xiàn)不佳,因?yàn)樗鼈兺哂邢∈瓒沁B續(xù)的內(nèi)存訪問模式。在 Linux 上運(yùn)行 MongoDB 時(shí),應(yīng)該禁用 THP 以獲得最佳性能。

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

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

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

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)、每個(gè)進(jìn)程的最大線程數(shù)(kernel.threads-max)和每個(gè)進(jìn)程的最大內(nèi)存映射區(qū)域數(shù)(vm.max_map_count)。對(duì)于大型系統(tǒng),以下值是不錯(cuò)的參考值:

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)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19896

    瀏覽量

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

    關(guān)注

    7

    文章

    3927

    瀏覽量

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

    關(guān)注

    3

    文章

    3690

    瀏覽量

    43836
  • nosql
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

    10311
  • Ampere
    +關(guān)注

    關(guān)注

    1

    文章

    81

    瀏覽量

    4711

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

    業(yè)界首款!Ampere發(fā)布有80個(gè)核心的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ù)和邊緣計(jì)算客戶出樣

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

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

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

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

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

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

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

    詳細(xì)解說(shuō)Ampere Altra性能測(cè)試與結(jié)果對(duì)比

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

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

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

    Ampere Altra處理器實(shí)現(xiàn)Arm架構(gòu)運(yùn)行虛擬機(jī)

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

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

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

    Ampere全新AmpereOne系列處理器,多達(dá)192個(gè)單線程Ampere

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

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

    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個(gè)物理核心

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

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

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

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

    基于Ampere Altra 系列處理器的一系列平臺(tái)為 AI 高效賦能

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