色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    瀏覽量

    27410
  • 總線
    +關注

    關注

    10

    文章

    2888

    瀏覽量

    88134
  • FSB
    FSB
    +關注

    關注

    0

    文章

    7

    瀏覽量

    9411
  • Redis
    +關注

    關注

    0

    文章

    376

    瀏覽量

    10882
收藏 人收藏

    評論

    相關推薦

    在那能申請到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這款芯片的參考時鐘信號電壓選用多大比較合適??丛u估板上給出的是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 ?7011次閱讀
    <b class='flag-5'>redis</b>應用場景及<b class='flag-5'>實例</b>

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

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

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

    隨著云計算技術的飛速發展,Redis 作為一種高性能的內存數據庫,在各種應用場景中發揮著越來越重要的作用。為了滿足不同用戶對 Redis 性能的高要求,華為云推出了 Flexus X 實例
    的頭像 發表于 12-29 15:47 ?159次閱讀
    華為云Flexus X<b class='flag-5'>實例</b>,<b class='flag-5'>Redis</b>性能加速評測及對比
    主站蜘蛛池模板: 蜜桃传媒星空传媒在线播放| 春药按摩人妻中文字幕| 一攻多受h嗯啊巨肉bl巨污| 敌伦小芳的第一次| 免费可以看污动画软件| 亚洲欧洲精品A片久久99| 国产国拍亚洲精品av麻豆| 青春草久久| 2020亚洲 欧美 国产 日韩| 回复术士勇者免费观看全集| caoporn 免费视频| 狼人无码伊人AV啪啪| 有码在线播放| 久久精品视频91| 一个人日本的视频免费完整版 | 深夜释放自己污在线看| YELLOW视频直播在线观看| 女子初尝黑人巨嗷嗷叫| av无码在线日本天堂| 皮皮色狼网| 成人手机在线| 外国xxxx| 韩国电影久久| 中文字幕人妻无码系列第三区| 恋夜秀场支持安卓版全部视频国产| 最近的2019中文字幕HD| 男女疯狂一边摸一边做羞羞视频| 99热这里只有 精品| 日本免费无码A专区在线观看| 俄罗斯aaaa一级毛片| 国拍在线精品视频免费观看| 亚洲熟妇无码乱子AV电影| qvod 电影| 全是肉的高h短篇列车| 动漫H片在线播放免费高清| 午夜国产视频| 久久久GOGO无码啪啪艺术| 99re精品视频在线播放视频| 日日AV夜夜添久久奶无码| 国产亚洲精品a在线观看app| 一本道手机无码在线看|