ECS內(nèi)存使用常見問題

      網(wǎng)友投稿 1403 2022-05-29

      【問題背景】

      在ECS的使用中會出現(xiàn)一些關于內(nèi)存的使用問題,例如:

      1、我的ECS實際可以使用的總內(nèi)存(MemTotal)與購買的規(guī)格不一致

      2、free查到的服務器內(nèi)存已使用數(shù)量跟top顯示的進程使用內(nèi)存不一致

      上述問題中通常為系統(tǒng)設置產(chǎn)生,該文檔對以上問題場景進行分析和處理。

      【問題分析與處理】

      ECS內(nèi)存使用常見問題

      問題一:

      我的ECS實際可以使用的總內(nèi)存(MemTotal)與購買的規(guī)格不一致

      問題現(xiàn)象

      從free和/proc/meminfo中看到的總內(nèi)存小于購買的規(guī)格內(nèi)存(實際ECS規(guī)格為2G)

      問題分析

      1、可以通過dmesg查看系統(tǒng)啟動時內(nèi)存分配情況

      # dmesg | grep Memory

      如上圖所示,實際總內(nèi)存為2096440KB,其中可用內(nèi)存為1860840KB,absent 392KB,reserved 235408KB。

      kdump使用kexec引導到第二個內(nèi)核(捕獲內(nèi)核),第二個內(nèi)核位于第一 個內(nèi)核無法訪問的系統(tǒng)內(nèi)存的reserved部分中,第二個內(nèi)核捕獲崩潰的內(nèi)核內(nèi)存的內(nèi)容(崩潰轉(zhuǎn)儲)并保存,且reserved?內(nèi)存屬于第二內(nèi)核,并且永遠不會被釋放或交換。

      系統(tǒng)可用內(nèi)存的計算方式為:

      available =?物理內(nèi)存?– absent – reserved

      確認是否配置crashkernel,可以通過查看/proc/cmd

      # cat /proc/cmdline

      如上圖所示可以確認crashkernel已開啟,crashkernel中內(nèi)存包含在reserved中。

      確認不需要kdump可以釋放該部分內(nèi)存。釋放crashkernel使用的內(nèi)存會導致kdump無法使用。

      操作步驟

      1、修改grub配置,刪除crashkernel配置項。

      # cp /etc/default/grub /etc/default/grub.bak

      打開/etc/default/grub找到GRUB_CMDLINE_LINUX行,將crashkernel=auto(crashkernel的值可能為具體的值或者范圍,以實際參數(shù)設置為準)參數(shù)刪除。

      2、使用grub2-mkconfig?命令重新生成cfg文件

      # grub2-mkconfig -o /boot/grub2/grub.cfg

      3、重啟服務器

      說明

      步驟2中如果出現(xiàn):error: environment block too small

      則運行以下命令后:

      # mv /boot/grub2/grubenv /grubenv.bak

      # grub2-mkconfig -o /boot/grub2/grub.cfg

      問題二:

      free查到的服務器內(nèi)存已使用數(shù)量跟top顯示的進程使用內(nèi)存不一致

      問題現(xiàn)象

      在4U8G的linux彈性云服務器,執(zhí)行free –lh?命令后發(fā)現(xiàn)顯示已使用內(nèi)存5.9G,使用率將近78%,top查詢的內(nèi)存使用率只有不到10%,與free –lh的結(jié)果不匹配。

      問題分析

      在某些場景和應用中需要在系統(tǒng)內(nèi)配置hugepage(大頁內(nèi)存)和共享內(nèi)存,而大頁內(nèi)存和共享內(nèi)存體現(xiàn)在free的結(jié)果中的used但是不會計算在進程的使用內(nèi)存中,針對此類問題可以從這個方向進行定位。

      我們可以通過atop命令在MEM行可以看到內(nèi)存的分配詳情,如下圖標記處可以看到hptot(hugepage total)項為4.9G。

      這部分內(nèi)存,即被“大內(nèi)存頁”占用的這些存儲器永遠不會被交換出內(nèi)存。它會一直保留除非修改了配置。

      大頁內(nèi)存的詳情可以通過/proc/meminfo查看

      # cat /proc/meminfo |grep Huge

      可以看到開啟了Huge,每個大頁內(nèi)存的大小是2048kB,大頁內(nèi)存的數(shù)據(jù)是2520個,加起來一共使用了5G內(nèi)存。free –lh顯示的5.9G的內(nèi)存使用量,減去大頁內(nèi)存5G,實際使用的是0.9G.使用率跟top查詢的結(jié)果相匹配。

      大頁內(nèi)存在某些應用是必要的配置,是否取消大頁內(nèi)存需要根據(jù)實際場景進行決定。大頁內(nèi)存的設置可以通過內(nèi)核參數(shù)vm.nr_hugepages進行設置。

      說明:

      1、HugePages?是?Linux?操作系統(tǒng)的一個內(nèi)核特性,讓操作系統(tǒng)可以支持現(xiàn)代硬件架構(gòu)的大頁面容量功能。通過啟用?HugePages?并使用大頁面,可以用一個頁表條目代表一個大頁面,而不是使用許多條目代表較小的頁面,從而可以管理更多內(nèi)存,減少操作系統(tǒng)對頁面狀態(tài)的維護并提高?TLB?緩存命中率。在?Linux?中,Hugepage默認大小為?2 MB。

      2、共享內(nèi)存是多個進程間共同地使用同一段物理內(nèi)存空間,它是通過將同一段物理內(nèi)存映射到不同進程的 虛擬空間來實現(xiàn)的。由于映射到不同進程的虛擬空間中,不同進程可以直接使用,不需要像消息隊列那樣進行復制,所以共享內(nèi)存的效率很高。

      列出共享內(nèi)存的使用

      # ipcs –m

      共享內(nèi)存的設置可以通過內(nèi)核參數(shù)kernel.shmall進行設置

      Linux 彈性云服務器 ECS

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:華為云在線教育解決方案
      下一篇:Zephyr物聯(lián)網(wǎng)操作系統(tǒng)初識(一):硬件準備與開發(fā)環(huán)境配置
      相關文章
      亚洲无码视频在线| 国产精品高清视亚洲精品| 亚洲剧情在线观看| 亚洲国产精品国产自在在线| 最新亚洲人成网站在线观看| 自拍日韩亚洲一区在线| 亚洲日韩中文字幕| 亚洲福利在线视频| 亚洲人成无码网WWW| 国产91成人精品亚洲精品| 亚洲最大无码中文字幕| 亚洲国产精品美女| 亚洲系列中文字幕| 亚洲精品网站在线观看你懂的| 亚洲天堂在线视频| 精品亚洲一区二区三区在线播放| 亚洲国产成人乱码精品女人久久久不卡 | 亚洲A∨午夜成人片精品网站| 久久亚洲AV成人无码国产电影| 亚洲熟妇AV一区二区三区浪潮| 亚洲色图激情文学| 亚洲最大成人网色香蕉| 亚洲一区精彩视频| 亚洲人成网站看在线播放| 国产精品亚洲综合五月天| 亚洲精品伊人久久久久| 亚洲一区二区三区高清在线观看| 亚洲 暴爽 AV人人爽日日碰| 亚洲一区二区三区高清在线观看 | 亚洲国产第一页www| 亚洲精品国产成人| 国产.亚洲.欧洲在线| 亚洲乱码日产精品一二三| MM1313亚洲精品无码久久| 亚洲成av人片在线观看天堂无码| 亚洲中文字幕丝袜制服一区| 亚洲人成网亚洲欧洲无码久久 | 亚洲乱妇老熟女爽到高潮的片| 国产成人精品久久亚洲高清不卡| 亚洲第一se情网站| 丝袜熟女国偷自产中文字幕亚洲|