最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux中使用cgroups控制內(nèi)存資源介紹

  發(fā)布時間:2014-06-11 09:52:56   作者:佚名   我要評論
這篇文章主要介紹了Linux中使用cgroups控制內(nèi)存資源介紹,需要的朋友可以參考下

cgroups 中有個 memory 子系統(tǒng),用于限制和報告進程的內(nèi)存使用情況。

其中,很明顯有兩組對應(yīng)的文件,一組帶 memsw ,另一組不帶

復(fù)制代碼
代碼如下:

memory.failcnt
memory.limit_in_bytes
memory.max_usage_in_bytes
memory.usage_in_bytes</p> <p>memory.memsw.failcnt
memory.memsw.limit_in_bytes
memory.memsw.max_usage_in_bytes
memory.memsw.usage_in_bytes

帶 memsw 的表示虛擬內(nèi)存,即物理內(nèi)存加交換區(qū)。不帶 memsw 的那組僅包括物理內(nèi)存。其中,limit_in_bytes 是用來限制內(nèi)存使用的,其他的則是統(tǒng)計報告。

復(fù)制代碼
代碼如下:

# echo 10485760 >/sys/fs/cgroup/memory/foo/memory.limit_in_bytes

即可限制該組中的進程使用的物理內(nèi)存總量不超過 10MB。對 memory.memsw.limit_in_bytes 來說,則是限制虛擬內(nèi)存使用。memory.memsw.limit_in_bytes 必須大于或等于 memory.limit_in_byte。這些值還可以用更方便的 100M,20G 這樣的形式來設(shè)置。要解除限制,就把這個值設(shè)為 -1 即可。

這種方式限制進程內(nèi)存占用會有個風(fēng)險。當(dāng)進程試圖占用的內(nèi)存超過限制,訪問內(nèi)存時發(fā)生缺頁,又沒有足夠的非活動內(nèi)存頁可以換出時會觸發(fā) oom ,導(dǎo)致進程直接被殺,從而造成可用性問題。即使關(guān)閉控制組的 oom killer,進程在內(nèi)存不足的時候,雖然不會被殺,但是會長時間進入 D (等待系統(tǒng)調(diào)用的不可中斷休眠)狀態(tài),無法繼續(xù)執(zhí)行,導(dǎo)致仍然無法服務(wù)。因此,我認為,用 memory.limit_in_bytes 或 memory.memsw.limit_in_bytes 限制進程內(nèi)存占用僅應(yīng)當(dāng)作為一個保險,避免在進程異常時耗盡系統(tǒng)資源。如,預(yù)期一組進程最多只會消耗 1G 內(nèi)存,那么可以設(shè)置為 1.4G 。這樣在發(fā)生內(nèi)存泄露等異常情況時,可以避免造成更嚴重問題。

在 memory 子系統(tǒng)中,還有一個 memory.soft_limit_in_bytes 。和 memory.limit_in_bytes 的差異是,這個限制并不會阻止進程使用超過限額的內(nèi)存,只是在系統(tǒng)內(nèi)存不足時,會優(yōu)先回收超過限額的進程占用的內(nèi)存,使之向限定值靠攏。

前面說控制組的 oom killer 是可以關(guān)閉的,就是通過 memory.oom_control 來實現(xiàn)的。cat memory.oom_control 可以看到當(dāng)前設(shè)置以及目前是否觸發(fā)了 oom 。echo 1 >memory.oom_control 就可以禁用 oom killer。

usage_in_bytes、max_usage_in_bytes、failcnt 則分別對應(yīng) 當(dāng)前使用量,最高使用量和發(fā)生的缺頁次數(shù)。

memory 子系統(tǒng)中還有一個很重要的設(shè)置是 memory.use_hierarchy 這是個布爾開關(guān),默認為 0。此時不同層次間的資源限制和使用值都是獨立的。當(dāng)設(shè)為 1 時,子控制組進程的內(nèi)存占用也會計入父控制組,并上溯到所有 memory.use_hierarchy = 1 的祖先控制組。這樣一來,所有子孫控制組的進程的資源占用都無法超過父控制組設(shè)置的資源限制。同時,在整個樹中的進程的內(nèi)存占用達到這個限制時,內(nèi)存回收也會影響到所有子孫控制組的進程。這個值只有在還沒有子控制組時才能設(shè)置。之后在其中新建的子控制組默認的 memory.use_hierarchy 也會繼承父控制組的設(shè)置。

memory.swappiness 則是控制內(nèi)核使用交換區(qū)的傾向的。值的范圍是 0 – 100。值越小,越傾向使用物理內(nèi)存。設(shè)為 0 時,只有在物理內(nèi)存不足時才會使用交換區(qū)。默認值是系統(tǒng)全局設(shè)置: /proc/sys/vm/swappiness 。

memory.stat 就是內(nèi)存使用情況報告了。包括當(dāng)前資源總量、使用量、換頁次數(shù)、活動頁數(shù)量等等。

相關(guān)文章

  • Linux中使用cgroups限制cpu資源實例

    這篇文章主要介紹了Linux中使用cgroups限制cpu資源實例,可以避免某個進程占用了所有的CPU資源,需要的朋友可以參考下
    2014-06-11
  • linux cgroups詳細介紹

    這篇文章主要介紹了linux cgroups詳細介紹,Cgroups是control groups的縮寫,是Linux內(nèi)核提供的一種可以限制、記錄、隔離進程組(process groups)所使用的物理資源(如:cp
    2014-06-11

最新評論

融水| 文成县| 房山区| 扶沟县| 尚志市| 共和县| 霍邱县| 泰安市| 石楼县| 莱西市| 河东区| 孝义市| 新野县| 山东省| 宝兴县| 仁布县| 克山县| 右玉县| 金乡县| 长岛县| 湘乡市| 曲沃县| 新和县| 剑川县| 新源县| 云浮市| 阳信县| 襄汾县| 洞口县| 石台县| 湟中县| 若尔盖县| 独山县| 郧西县| 孟连| 德阳市| 肃宁县| 巴东县| 皋兰县| 建昌县| 德兴市|