在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

Redis單實例內存最大申請到多大比較合適

冬至配餃子 ? 來源:開發內功修煉 ? 作者:張彥飛allen ? 2022-08-30 17:26 ? 次閱讀

我們公司的基礎架構部有個云Redis平臺,其中Redis實例在申請的時候可以自由選擇需要的內存的大小。然后就引發了我的一個思考,Redis單實例內存最大申請到多大比較合適?假設母機是64GB內存的物理機,如果不考慮CPU資源的的浪費,我是否可以開一個50G的Redis實例?

于是我在Google上各種搜索,討論這個問題的人似乎不多。找到唯一感覺靠譜點的答案,那就是單進程分配的內存最好不要超過一個node里的內存總量,否則linux當該node里的內存分配光了的時候,會在自己node里動用硬盤swap,而不是其它node里申請。這即使所謂的numa陷阱,當Redis進入這種狀態后會導致性能急劇下降(不只是redis,所有的內存密集型應用如mysql,mongo等都會有類似問題)。

看起來這個解釋非常有說服力。于是乎,我就想親手捕捉一次NUMA陷阱,看看這個家伙究竟什么樣。

1 先聊聊QPI與NUMA

最早在CPU都是單核的時候,用的總線都是FSB總線。經典結構如下圖:

poYBAGMN1piAOk-uAAA9LTZlzWI841.png

圖1 單核時代的FSB總線

到來后來CPU的開發者們發現CPU的頻率已經接近物理極限了,沒法再有更大程度的提高了。在2003年的時候,CPU的頻率就已經達到2個多GB,甚至3個G了。現在你再來看今天的CPU,基本也還是這個頻率,沒進步多少。摩爾定律失效了,或者說是向另外一個方向發展了。那就是多核化、多CPU化。

poYBAGMN1qmAdVyWAABYYA6gqOU319.png

圖2 多核時代的FSB總線

剛開始核不多的時候,FSB總線勉強還可以支撐。但是隨著CPU越來越多,所有的數據IO都通過這一條總線和內存交換數據,這條FSB就成為了整個計算機系統的瓶頸。舉個北京的例子,這就好比進回龍觀的京藏高速,剛開始回龍觀人口不多的時候,這條高速承載沒問題。但是現在回龍觀聚集了幾十萬人了,“總線”還僅有這一條,未免效率太低。

CPU的設計者們很快改變了自己的設計,引入了QPI總線,相應的CPU的結構就叫NMUA架構。下圖直觀理解

pYYBAGMN1riANwZaAAA8NMAaGH4739.png

圖3 QPI總線

2 話說NUMA陷阱

NUMA陷阱指的是引入QPI總線后,在計算機系統里可能會存在的一個坑。大致的意思就是如果你的機器打開了numa,那么你的內存即使在充足的情況下,也會使用磁盤上的swap,導致性能低下。原因就是NUMA為了高效,會僅僅只從你的當前node里分配內存,只要當前node里用光了(即使其它node還有),也仍然會啟用硬盤swap。

當我第一次聽說到這個概念的時候,不禁感嘆我運氣好,我的Redis實例貌似從來沒有掉進這個陷阱里過。那為了以后也別栽坑,趕緊去了解了下我的機器的numa狀態:

pYYBAGMN1siAA1okAABXu0dXtME357.png

上面結果說明我們有兩個node,node0和node1,分別有12個核心,各有32GB的內存。再看zone_reclaim_mode,它用來管理當一個內存區域(zone)內部的內存耗盡時,是從其內部進行內存回收還是可以從其他zone進行回收的選項:

0 關閉zone_reclaim模式,可以從其他zone或NUMA節點回收內存

1 打開zone_reclaim模式,這樣內存回收只會發生在本地節點內

2在本地回收內存時,可以將cache中的臟數據寫回硬盤,以回收內存

4 在本地回收內存時,表示可以用Swap 方式回收內存

poYBAGMN1t-AQog4AAASUyHegVA103.png

3 實踐捕捉numa陷阱未遂

那我的好奇心就來了,既然我的單個node節點只有32G,那我部署一個50G的Redis,給它填滿數據試試到底會不會發生swap。

實驗開始,我先查看了本地總內存,以及各個node的內存剩余狀況。

poYBAGMN1u-AQCIVAABS08kGT7A438.png

總內存不用解釋,/proc/zoneinfo里包含了node可供應用程序申請的free pages。node1有4651908個頁面,4651908*4K=18G的可用內存。接下來讓我們啟動redis實例,把其內存上限設置到超過單個node里的內存大小。我這里單node內存大小是32G,我把redis設置成了50G。開始灌入數據。最終數據全部灌完之后,

poYBAGMN1wCAGr97AACLBjomYE8494.png

實驗證明,在zone_reclaim_mode為1的情況下,Redis是平均在兩個node里申請節點的,并沒有固定在某一個cpu里。

莫非是大佬們的忠告錯了嗎?其實不是,如果不綁定親和性的話,分配內存是當進程在哪個node上的CPU發起內存申請,就優先在哪個node里分配內存。之所以是平均分配在兩個node里,是因為redis-server進程實驗中經常會進入主動睡眠狀態,醒來后可能CPU就換了。所以基本上,最后看起來內存是平均分配的。如下圖,CPU進行了500萬次的上下文切換,用top命令看到cpu也是在node0和node1跳來跳去。

pYYBAGMN1w-AJ1aVAAAfGnzURbE204.png

4 綁定親和性,成功捕獲NUMA陷阱

殺死進程,內存歸位

pYYBAGMN1x-AMhfoAAAkilonPYw204.png

綁定CPU和內存的親和性,然后再啟動。

numactl --cpunodebind=0 --membind=0 /search/odin/daemon/redis/bin/redis-server /search/odin/daemon/redis/conf/redis.conf

top命令觀察到CPU確實一直在node0的節點里。node里的內存也在快速消耗。
pYYBAGMN1z6AKRbfAAAuGejz7A0511.png

看,內存很快就消耗光了。我們再看top命令觀察到的swap,很激動地發現,我終于陷入到傳說中的numa陷阱了。

poYBAGMN11GAPuJGAACYjSaa4sQ642.png

這時候,Redis實際使用的物理內存RES定格到了30g不再上漲,而是開始消耗Swap。又過了一會兒,Redis被oom給kill了。

5 結論

通過今天的實驗,我們可以發現確實有NUMA陷阱這種東西存在。不過那是我手工通過numactl指令綁定cpu和mem的親和性后才遭遇的。相信國內絕大部分的線上Redis沒有進行這個綁定,所以理論上來單Redis單實例可以使用到整個機器的物理內存。(實踐中最好不要這么干,你的大部分內存都綁定到一個redis進程里的話,那其它CPU核就沒啥事干了,浪費了CPU的多核計算能力)

6 擴展

當通過numactl綁定CPU和mem都在一個node里的時候,內存IO不需要經過總線,性能會比較高,你Redis的QPS能力也會上漲。和跨node的內存IO性能對比,可以下面的實例,就是10:21的區別。

poYBAGMN126Aa9ehAAAbdV2jAUg120.png

你要是對性能有極致的追求,可以試著綁定numa的親和性玩玩。不過,no作no die,掉到numa陷阱里可別賴我,嘎嘎!



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux系統
    +關注

    關注

    4

    文章

    594

    瀏覽量

    27441
  • 總線
    +關注

    關注

    10

    文章

    2891

    瀏覽量

    88174
  • FSB
    FSB
    +關注

    關注

    0

    文章

    7

    瀏覽量

    9411
  • Redis
    +關注

    關注

    0

    文章

    376

    瀏覽量

    10888
收藏 人收藏

    評論

    相關推薦

    在那能申請到STC89C52單片機的開發學習板????

    在那能申請到STC89C52單片機的開發學習板????
    發表于 10-29 10:50

    8x8x8光立方間距多大比較

    8x8x8光立方間距多大比較好?
    發表于 05-12 22:58

    請問發燒友么 免費能申請到開發板,芯片的方法匯總

    請問發燒友么 免費能申請到開發板,芯片,元器件的各種方法 都有什么方法啊。請親們能不能匯總出來。包括什么樣的網站什么的。
    發表于 07-25 09:43

    dip40的IC緊鎖座的焊盤和孔應該設置多大比較合適

    請教一下dip40的IC緊鎖座的焊盤和孔應該設置多大比較合適
    發表于 01-07 09:48

    【Aworks申請】盡最大努力掌握每個模塊,及設計出一個具有創新精神的實物

    申請理由:最近真正學習ARM開發,幸而貴公司提供免費開發板,且這款開發板控制簡單,是初學ARM的首選,所以想想通過這次機會,申請到這款開發板,向學習更深層次的ARM提供幫助。項目描述:盡自己最大努力,體現出它的
    發表于 07-10 10:21

    哪里可以申請到單片機的開發板

    哪里可以申請到單片機的開發板哪里有靠譜點兒的地方啊?淚奔。。。。。。
    發表于 07-22 15:22

    請問怎么在TI官方網上申請到免費樣品?

    本帖最后由 一只耳朵怪 于 2018-6-6 14:48 編輯 在TI官方網上怎么樣才能申請到免費樣品?
    發表于 06-06 01:31

    睡眠模式向協調器申請數據,請問如何看申請到的消息是什么?

    星型網絡,協調器直接掛終端。終端在睡眠模式下,通過按鍵喚醒并使用函數NLME_SetPollRate(1)向協調器申請數據,如何看申請到的消息是什么?如何提取返回的數據?
    發表于 08-09 07:54

    請問ADM2483隔離電源功率選擇多大比較合適

    Hi 大家好: 現在使用ADM2483芯片來做RS485收發器,隔離電源采用金升陽BS0505-1W模塊,現在一塊電路板想支持5路485電路,使用5片ADM2483芯片,請問需要多大功率的隔離電源比較合適? 謝謝大家!
    發表于 08-29 11:45

    AD9517參考輸入電壓選用多大比較合適

    想咨詢下ADI工程師,AD9517-4這款芯片的參考時鐘信號電壓選用多大比較合適。看評估板上給出的是0-6dbm,數據手冊上推薦REF為1.6V,REF_N為1.5V。這樣的話如果是輸入端時鐘信號,通過變壓器ETC1-1-13
    發表于 12-18 09:20

    請問RESET引腳通過多大的電阻連接到OUT比較合適

    請問。TLE4275的,RESET引腳通過多大的電阻連接到OUT比較合適,即圖中的R1取多大比較合適
    發表于 07-29 15:42

    請問ucosii中函數的timeout設置多大比較好?

    ucosii中的函數中的timeout設置多大比較合適?只能隨便設嗎?有沒有別的辦法?
    發表于 08-12 21:58

    redis應用場景及實例

    本文主要闡述了redis應用場景及實例Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API。在這篇
    的頭像 發表于 02-09 15:01 ?7016次閱讀
    <b class='flag-5'>redis</b>應用場景及<b class='flag-5'>實例</b>

    香港移動成功申請到了香港5G頻段

    香港通訊事務管理局辦公室發布公告宣布中國移動香港、香港電訊、數碼通三家電信服務商成功申請到香港5G頻段。 據悉,本次三家獲得的頻段為26GHz到28GHz。其中,中國移動香港、香港電訊、數碼通分別獲得400MHz頻譜。
    發表于 03-21 09:57 ?1481次閱讀
    香港移動成功<b class='flag-5'>申請到</b>了香港5G頻段

    華為云Flexus X實例Redis性能加速評測及對比

    隨著云計算技術的飛速發展,Redis 作為一種高性能的內存數據庫,在各種應用場景中發揮著越來越重要的作用。為了滿足不同用戶對 Redis 性能的高要求,華為云推出了 Flexus X 實例
    的頭像 發表于 12-29 15:47 ?175次閱讀
    華為云Flexus X<b class='flag-5'>實例</b>,<b class='flag-5'>Redis</b>性能加速評測及對比
    主站蜘蛛池模板: 高清不卡一区| mide-776中文字幕在线| 一区二区三区四区无限乱码在线观看| 欧美另类69xxxxxhd| aaa特级毛片| 激情网站网址| 日本三级最新中文字幕电影| 日韩怡红院| 免费看黄色网页| 国产网红精品| 久精品视频村上里沙| 日日噜噜爽爽狠狠视频| 三级黄色短视频| 久久综合久久久久| 国产美女主播在线| 99久久99久久久99精品齐| 午夜看看| 不卡中文字幕在线| 永久免费看片| 5151四虎永久在线精品免费| 午夜看片影院在线观看| 极品吹潮视频大喷潮tv| 爱逼色| 在线看免费视频| 成人免费的性色视频| 精品伊人久久大线蕉色首页| 国产成都一二三四区| 狠狠色丁香久久婷婷综| 欧美在线视频二区| 色噜噜噜| 天天看视频| 亚洲国产成人在线| 在线免费观看视频你懂的| 天天狠狠色噜噜| 久久美女性网| 亚洲精品九色在线网站| 国产午夜视频| 亚洲一区二区三区不卡视频| 日本边添边爱边摸边做边爱| 亚洲国产精品综合久久2007| 欧美一级在线免费观看|