日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

调度-资源隔离

發布時間:2024/4/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 调度-资源隔离 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們如何讓計算任務的進程能受限制的使用機器資源呢,這里不僅指占用某臺機器的粗粒度使用,也指對某臺機器的CPU/內存/帶寬/硬盤的細粒度限制。

資源限制和資源控制看上去差不多,但是我們接下來會發現他們的區別。

資源調度有兩種解決方案:限制方式和控制方式。

所謂限制方式,也就是有個虛擬的容器限制,進程無法使用更多的資源。

Lxc、Cgroup的實現是一種限制方式,通過虛擬化或者輕量級虛擬化限制資源的使用,后面7.4.2談到的Mesos也是這種方式。

Cgroup是Linux內核提供的一個操作系統層面的資源控制組,通過對進程組(process groups)的資源進行分配和使用限制達到目的。該項技術最初也是Google工程師發明,目前成為lxc(輕量級虛擬化容器)的重要組成技術。

Cgroup提供了對進程組可以使用的資源數量限制、優先級控制、進程組使用的資源數量記錄(進程組使用的CPU時間)、進程組隔離、進程組掛起和恢復等功能。

Cgroup的一些主要子系統如下:

? Blkio:這個子系統為塊設備設定輸入/輸出限制,比如物理設備(磁盤、固態硬盤、USB等等)。

? Cpu:這個子系統使用調度程序提供對CPU的Cgroup任務訪問。

? Cpuacct:這個子系統自動生成Cgroup中任務所使用的CPU報告。

? Cpuset:這個子系統為Cgroup中的任務分配獨立CPU(在多核系統)和內存節點。

? Devices:這個子系統可允許或者拒絕Cgroup中的任務訪問設備。

? Freezer:這個子系統掛起或者恢復Cgroup中的任務。

? memory:這個子系統設定Cgroup中任務使用的內存限制,并自動生成由那些任務使用的內存資源報告。

? net_cls:這個子系統使用等級識別符(Classid)標記網絡數據包,可允許Linux流量控制程序(tc)識別從具體Cgroup中生成的數據包。

? Ns:名稱空間子系統。

? Cgroup啟動是通過Cgconfig完成的:

#/etc/init.d/cgconfig start
#/etc/init.d/cgconfig stop

顯示已經存在的子系統:

cpu /cgroup/cpu

創建一個新的Cgroup:

cgcreate -g cpu,net_cls:/mygroup

通過cgclassify命令將進程移到Cgroup中:

cgclassify -g cpu,memory:group1 1701

或者通過cgexec命令在Cgroup中啟動進程:

cgexec -g cpu:group1 lynx?

Cgroup詳細的使用可參見Linux官方文檔http://www.redhat.com。

另一種是控制方式,進程實際上可以用更多的資源,但是我們通過監控的手段,根據資源使用狀況,控制住進程的啟動。

通過JVM或者其他系統監控API,對CPU內存使用情況進行獲取并控制,早期的Hadoop對內存的控制也是該方式。

Java的MemoryPoolMXBean機制可以很好地設置使用內存的閥值,并在內存不足時進行事件通知,并將任務分配到其他Java虛擬機,然后停止接受任務,內存足夠后再重新恢復接收任務。這個機制是可以用來實現內存隔離的(不能像Cgroup那樣隔離,但是可以做到控制)。另外,OperatingSystemMXBean機制可以支持線程和Java虛擬機進行CPU時間檢測(包括用戶CUP時間和系統CPU時間),通過CPU檢測可以對占用率高的時刻停止接收任務。

遺憾的是,Java本身對系統層面的監控力度支持還是不太理想,沒有太好的做法。很多老外推薦使用開源軟件Sigar(System Information Gatherer And Reporter)來彌補Java本身在這塊的不足,Sigar提供了跨平臺的系統信息收集的API,包括:

? CPU信息,包括基本信息(vendor、model、mhz、cacheSize)和統計信息(user、sys、idle、nice、wait)。

? 文件系統信息,包括Filesystem、Size、Used、Avail、Use%、Type。

? 事件信息,類似Service Control Manager。

? 內存信息,物理內存和交換內存的總數、使用數、剩余數;RAM的大小。

? 網絡信息,包括網絡接口信息和網絡路由信息。

? 進程信息,包括每個進程的內存、CPU占用數、狀態、參數、句柄。

? IO信息,包括IO的狀態,讀寫大小等。

? 服務狀態信息。

? 系統信息,包括操作系統版本,系統資源限制情況,系統運行時間以及負載,Java的版本信息等。

轉載于:https://www.cnblogs.com/muzinan110/p/11052064.html

總結

以上是生活随笔為你收集整理的调度-资源隔离的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。