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

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

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

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

安晟培半導(dǎo)體 ? 來(lái)源:安晟培半導(dǎo)體 ? 2023-08-08 09:28 ? 次閱讀

概 述

Memcached是一個(gè)開(kāi)源的內(nèi)存鍵值數(shù)據(jù)存儲(chǔ)系統(tǒng),通常用于緩存任意類(lèi)型的小塊數(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ì)算中最具開(kāi)創(chuàng)性的緩存存儲(chǔ)之一,至今仍很受歡迎。

本指南的目的是描述在 AmpereAltra處理器上以最佳方式運(yùn)行 memcached 的相關(guān)技巧。

構(gòu)建先決條件

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

我們使用 CentOS8 作為我們本次優(yōu)化測(cè)試的操作系統(tǒng)

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

sudo yum -y install yum install scl-utils scl-utils-build 
sudo yum -y install gcc-toolset-10-gcc 
scl enable gcc-toolset-10 bash

對(duì)于其他操作系統(tǒng),如 Ubuntu 20.04 LTS 和 Debian, GCC 10.2.1 也是可用的,可直接從相應(yīng)的存儲(chǔ)庫(kù)安裝。

Libevent 是構(gòu)建 memcached 所必需的,可以如下方式下載:

sudo yum install libevent-devel

構(gòu)建和安裝

Memcached wiki 上的安裝指南(https://github.com/memcached/memcached/wiki/Install)有關(guān)于在 Debian/Ubuntu 和 Redhat/Fedora 上安裝 Memcached 的說(shuō)明。源代碼可在 memcached 項(xiàng)目頁(yè)面上獲得。我們建議使用最新的穩(wěn)定版本。

memcached 項(xiàng)目頁(yè)面

可以使用以下命令下載 Memcached。

wget https://memcached.org/latest 
#you might need to rename the file 
tar -zxf memcached-1.x.x.tar.gz 
cd memcached-1.x.x

在繼續(xù)為 Memcached 配置構(gòu)建選項(xiàng)之前,讓我們添加一些特定于 Ampere Altra 處理器的編譯器標(biāo)志:

./configure CFLAGS="-O3 -march=native -mcpu=neoverse-n1" --prefix=/usr/local/memcached 
make && make test && sudo make install

KERNEL 優(yōu)化

眾所周知,Memcached 占用大量網(wǎng)絡(luò)資源,為了獲得良好的性能,內(nèi)核和網(wǎng)卡(NIC)的調(diào)優(yōu)是必要的。

大多數(shù)內(nèi)核調(diào)優(yōu)配置可以通過(guò) sysfs 文件系統(tǒng)修改數(shù)據(jù)結(jié)構(gòu)來(lái)設(shè)置。但是,有些調(diào)整可能需要重新編譯內(nèi)核。一般的內(nèi)核優(yōu)化措施是設(shè)置操作系統(tǒng)使用 64 KB 的頁(yè)面大小。這將提高 Ampere Altra 處理器上的翻譯暫置緩沖區(qū)(TLB)的效率。

查看系統(tǒng)上正在使用的頁(yè)面大?。?/p>

getconf PAGESIZE

對(duì)于 64 KB 的頁(yè)面大小,預(yù)期返回值 65536。如果不是這樣,請(qǐng)檢查 CONFIG_ARM64_64K_PAGES 是否已應(yīng)用于內(nèi)核配置文件,重新編譯并安裝內(nèi)核,然后重新啟動(dòng)。

CONFIG_ARM64_64K_PAGES=y

TUNED PROFILES

考慮到大量的內(nèi)核配置選項(xiàng),有時(shí)使用預(yù)定義的優(yōu)化配置文件來(lái)匹配您的使用場(chǎng)景會(huì)更容易。Tuned 就是這樣一種調(diào)優(yōu)服務(wù),它可以通過(guò)設(shè)置調(diào)優(yōu)配置文件來(lái)配置操作系統(tǒng)來(lái)提高性能。

以 CentOS 8 為例,如果 Memcached 的吞吐量是所關(guān)注的主要指標(biāo),我們建議使用吞吐量-性能(throughput-performance)的 Tuned Profile。該配置文件將 CPU 調(diào)控器(governors)設(shè)置為性能模式,這樣可以減少調(diào)度延遲,最大化 I/O 吞吐量,并減少交換度值(swappiness),所有這些都可以顯著提高性能。

對(duì)于 Ubuntu,如果它不是操作系統(tǒng)安裝的一部分,則可能需要單獨(dú)安裝 tuned profile。

sudo apt-get update -y 
sudo apt-get install -y tuned

為了改進(jìn) Ampere Altra 處理器上的內(nèi)核調(diào)度延遲,我們建議通過(guò)更新 Tuned Profile 文件中的相應(yīng)設(shè)置,將 sched_wakeup_granularity_ns 更改為 5000。

PROFILE_FILE=/usr/lib/tuned/throughput-performance/tuned.conf 
sed -i 's/sched_wakeup_granularity_ns = 15000000/sched_wakeup_granularity_ns = 5000/g' $PROFILE_FILE

然后使用以下命令啟用吞吐量-性能(throughput-performance)的 Tuned Profile:

tuned-adm profile throughput-performance

網(wǎng)絡(luò)設(shè)置

像 Memcached 這樣的應(yīng)用程序通常被調(diào)優(yōu)為在高吞吐量下運(yùn)行,同時(shí)保持嚴(yán)格的服務(wù)水平協(xié)議(SLA)。p.99 延遲通常是一個(gè)常見(jiàn)的標(biāo)準(zhǔn)。為了考慮此類(lèi) SLA 的要求,我們建議調(diào)優(yōu)內(nèi)核 TCP/IP 設(shè)置,因?yàn)閭魅氲恼?qǐng)求是通過(guò) TCP 連接建立的。

我們?cè)?Memcached 測(cè)試中使用的 TCP/IP 調(diào)優(yōu)設(shè)置列表如下:

echo 9999999 > /proc/sys/net/core/somaxconn 


echo 4194304 > /proc/sys/net/core/rmem_max 


echo 4194304 > /proc/sys/net/core/wmem_max 


echo 4194304 > /proc/sys/net/core/rmem_default 


echo 4194304 > /proc/sys/net/core/wmem_default 


echo "4096 87380 4194304" > /proc/sys/net/ipv4/tcp_rmem 


echo "4096 87380 4194304" > /proc/sys/net/ipv4/tcp_wmem 


echo "4096 87380 4194304" > /proc/sys/net/ipv4/tcp_mem 


echo 250000 > /proc/sys/net/core/netdev_max_backlog 


echo 50 > /proc/sys/net/core/busy_read 


echo 50 > /proc/sys/net/core/busy_poll 


echo 3 > /proc/sys/net/ipv4/tcp_fastopen 


echo 0 > /proc/sys/kernel/numa_balancing 


echo 0 > /proc/sys/net/ipv4/tcp_timestamps 


echo 1 > /proc/sys/net/ipv4/tcp_low_latency 


echo 0 > /proc/sys/net/ipv4/tcp_sack 


echo 1 > /proc/sys/net/ipv4/tcp_syncookie

除了內(nèi)核 TCP/IP 設(shè)置之外,我們還需要確保應(yīng)用程序能夠利用大多數(shù)網(wǎng)卡(NIC)內(nèi)置的硬件卸載功能,例如 Generic-Receive-Offload,它可以聚合屬于同一流的多個(gè)傳入數(shù)據(jù)包,以及 large - receive - offload,它可以將屬于同一連接的傳入 TCP/IP 數(shù)據(jù)包合并到一個(gè)大的接收段中,然后將其傳遞給內(nèi)核。

具體操作如下:

ethtool -K  gro on 
ethtool -K  lro on

對(duì)于像 Memcached 這樣的網(wǎng)絡(luò)綁定(network-bound)工作負(fù)載,強(qiáng)烈建議將網(wǎng)卡中斷(irq)分布在多個(gè)核心上,以避免出現(xiàn)瓶頸。參考文檔 2 是關(guān)于 SMP IRQ 關(guān)聯(lián)的一個(gè)非常好的參考。

建議使用以下命令檢查網(wǎng)卡支持的硬件通道數(shù)量,以確保通道數(shù)量與網(wǎng)卡的通道容量匹配:

ethtool -l  
sudo ethtool -L  combined 

MEMCACHED 配置

Memcached 本身是可以做些調(diào)優(yōu)來(lái)更好地匹配實(shí)際應(yīng)用環(huán)境。調(diào)優(yōu)它的一個(gè)很好的起點(diǎn)是 Memcached 內(nèi)置的統(tǒng)計(jì)功能??梢酝ㄟ^(guò)使用 telnet 連接到 memcached 并運(yùn)行它來(lái)研究統(tǒng)計(jì)數(shù)據(jù):

telnet localhost 11211 


Connected to localhost. 


Escape character is '^]'. 


telnet> stats 


STAT pid 23599 


STAT uptime 675 


STAT time 1211439587 


STAT version 1.2.5 


STAT pointer_size 32 


STAT rusage_user 1.404992 


STAT rusage_system 4.694685 


STAT curr_items 32 


STAT total_items 56361 


STAT bytes 2642 


STAT curr_connections 53 


STAT total_connections 438 


STAT connection_structures 55 


STAT cmd_get 113482 


STAT cmd_set 80519 


STAT get_hits 78926 


STAT get_misses 34556 


STAT evictions 0 


STAT bytes_read 6379783 


STAT bytes_written 4860179 


STAT limit_maxbytes 67108864 


STAT threads 1 


END

get_hits 和 get_misses 值特別重要,它們可用于計(jì)算 Memcached 的緩存命中/未命中比率。像 Memcached 這樣的內(nèi)存緩存的經(jīng)驗(yàn)法則是將緩存命中率保持在 90% 以上。

清除值(evictions value)計(jì)算從緩存中清除的未過(guò)期項(xiàng)的數(shù)量,以便為新項(xiàng)騰出空間。清除次數(shù)過(guò)多可能表明緩存過(guò)度使用或分配的內(nèi)存量不足。

最后,Memcached 線程的數(shù)量可能是影響 Memcached 總體性能的一個(gè)設(shè)置。對(duì)于像 Ampere Altra 系列處理器這樣的高核數(shù)處理器,我們建議在研究性能擴(kuò)展時(shí)增加線程數(shù)量以使用盡可能多的核。極高的線程數(shù)可能導(dǎo)致鎖爭(zhēng)用,從而降低性能。在啟動(dòng) Memcached 時(shí),可以通過(guò)使用 -t 選項(xiàng)來(lái)更改線程數(shù)。

在生產(chǎn)環(huán)境中對(duì) Memcached 這樣的應(yīng)用程序進(jìn)行微調(diào)需要對(duì)其用法和端到端軟件堆棧有深入的了解。我們希望本指南中討論的設(shè)置可以幫助提高 Memcached 的性能,并建議參考這里提供的所有配置選項(xiàng),以更好地匹配您的使用。

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

    關(guān)注

    68

    文章

    18927

    瀏覽量

    227232
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6545

    瀏覽量

    122744
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1602

    瀏覽量

    48896
  • Memcached
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    6991
  • Ampere
    +關(guān)注

    關(guān)注

    1

    文章

    60

    瀏覽量

    4516

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

    高性能計(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 ?1260次閱讀

    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 ?1286次閱讀

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

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

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

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

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

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

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

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

    Ampere Computing發(fā)布全新AmpereOne系列處理器,192個(gè)自研核

    2023 年 5 月 19 日,中國(guó)北京——Ampere Computing 宣布推出全新 AmpereOne 系列處理器,該處理器擁有多達(dá) 192 個(gè)單線程
    的頭像 發(fā)表于 05-19 11:04 ?1151次閱讀

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

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

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

    AmpereOne出現(xiàn)以前,Ampere Altra系列最多128核心,新的AmpereOne則是從136核起步,最多192核心。所以,AmpereOne可以看做是Ampere
    發(fā)表于 06-02 10:43 ?528次閱讀
    <b class='flag-5'>Ampere</b>發(fā)布AmpereOne<b class='flag-5'>系列</b><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 ?1224次閱讀
    <b class='flag-5'>Ampere</b> <b class='flag-5'>Altra</b><b class='flag-5'>系列</b><b class='flag-5'>處理器</b>的鎖和內(nèi)存序

    全新AmpereOne系列處理器,一款192核的云原生CPU

    這個(gè)基于自研內(nèi)核打造的產(chǎn)品與之前的產(chǎn)品不會(huì)存在任何的兼容問(wèn)題,因?yàn)锳mpereOne系列處理器Ampere Altra系列
    發(fā)表于 06-08 11:50 ?820次閱讀
    全新AmpereOne<b class='flag-5'>系列</b><b class='flag-5'>處理器</b>,一款192核的云原生CPU

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

    MongoDB 是一個(gè)流行的面向文檔的,跨平臺(tái)開(kā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++ 編寫(xiě)的,旨在為 web 應(yīng)用程序提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
    的頭像 發(fā)表于 07-20 10:10 ?482次閱讀

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

    ,‘芯’未來(lái)”的主題,Ampere 在本次活動(dòng)上展示了基于 Ampere Altra 系列處理器的一系列
    的頭像 發(fā)表于 09-21 09:13 ?757次閱讀