sponsored links

一次限制程序的 CPU 用量的實操過程

給大家分享一個事情。背景是這樣的,我們要測試某個第三方 SDK 執行效能,這是個 CPU 密集型的服務。我想評估一下它執行一遍到底有多吃 CPU,以便評估上線後我們需要部署多少臺伺服器。

我們是在一臺 16 物理核的機器上測試的,我們的想法是把它啟動起來,然後執行一遍。用耗時乘以 16 核那就是總的 CPU 耗時開銷。不過不巧的是我們發現這個貨在併發上做的並不是特別好,執行的前半段裡只能打滿一個核,而後半段可以把整臺機器上所有 16 核都打滿。這樣就沒法準確估算它的 CPU 消耗了。

最先我想到的方案是將這個 SDK 進行 numa 繫結。但是 nuam 繫結只能將 cpu 限制在一個 node 上,我的機器上 一個 node 裡有 8 個核。問題仍然存在,還是不能精確控制 cpu 的用量。

所以我接著又想到了 cgroup 。假如我能從始至終都限制這個 SDK 只使用一個核,且把一個核全部打滿,這樣我就能準確地評估它的 CPU 耗時。

說幹就幹。Cgroup 這玩意兒聽起來複雜,沒想到用起來那是超級的簡單。首先我找到了 cpu,cpuacct 這個 group。在它下面建立一個子 group,一行 mkdir 就能搞定。

# cd /sys/fs/cgroup/cpu,cpuacct
# mkdir test
# cd test

這時候 cgroup 已經在 test 這個目錄下幫我們建立好了一些檔案,透過修改這些檔案可以控制程序的 CPU 消耗的。

# ls -l
total 0
-rw-r--r-- 1 root root 0 Sep 23 11:38 cgroup.procs
-rw-r--r-- 1 root root 0 Sep 23 11:37 cpu.cfs_period_us
-rw-r--r-- 1 root root 0 Sep 23 11:37 cpu.cfs_quota_us
......

為了簡便,我們只關注上面幾個檔案。其中 cfs_period_us 用來配置時間週期長度,cfs_quota_us 用來配置當前 cgroup 在設定的週期長度內所能使用的 CPU 時間。這兩個檔案配合起來就可以設定 CPU 的使用上限。

比如我想控制我的程序最多隻能使用 1 個核,那麼就這樣。

# echo 500000 > cpu.cfs_quota_us // 500ms
# echo 500000 > cpu.cfs_period_us // 500ms 

每 500ms 能使用 500ms的 CPU 時間,即將 cpu 使用限制在 1 個核以內。(如果想要限制只用兩個核,那就把 cpu.cfs_quota_us 改成 1000000 即可)

這個時候,還缺關鍵的一步。把要限制的程序加進來。這個也簡單,修改 cgroup.procs 把要限制的程序 pid 新增進去就行了。

這裡有個細節,那就是加入一個程序後,這個程序建立的子程序都將預設加到這個 cgroup 的限制中。雖然我們不知道我們將要啟動的程序的 pid 是多少,但是我們可以查到當前 bash 程序的 pid,只要把它加進來就行了。這樣後面透過控制檯啟動程序的時候,都將自動進入 cgroup 限制中。

# echo $$
16403
sh -c "echo 16403 > cgroup.procs"

這個時候我們使用一個簡單的工具 ,stress。用它來模擬開篇 sdk 的 cpu 密集型工作。透過 -c 指定開啟幾個程序,然後每個程序都反覆不停的計算隨機數的平方根,盡最大努力消耗 cpu。

# stress -c 4

另外啟動一個控制檯,觀察 cpu 消耗。發現總量確實是控制住了。stress 及其子程序加起來都只使用了 1 核。

不過我發現了一個不滿意的地方。雖然 cpu 用量是控制住了,但是 cpu 消耗是分散在各個 cpu 核上的,而且還是飄來飄去的。我想要的效果是限制它在某一個核上執行。

回來查看了一下 cgroup 目錄下的檔案。猛然看到了一個叫 cpuset 的 group。第六感告訴我,它一定可以!

# ll /sys/fs/cgroup/
total 0
drwxr-xr-x 2 root root  0 Sep 15 17:43 blkio
lrwxrwxrwx 1 root root 11 Sep 15 17:43 cpu -> cpu,cpuacct
lrwxrwxrwx 1 root root 11 Sep 15 17:43 cpuacct -> cpu,cpuacct
drwxr-xr-x 4 root root  0 Sep 15 17:43 cpu,cpuacct
drwxr-xr-x 3 root root  0 Sep 15 17:43 cpuset  // 就是它!
......

於是乎,我先是廢棄了剛剛的 test 配置,直接刪除即可(rm -rf /sys/fs/cgroup/cpu,cpuacct)。再搜了一下這個 cpuset 怎麼用,開始新的配置。

# cd /sys/fs/cgroup/cpuset
# mkdir test && cd test
# echo "0" > cpuset.cpus //限制在第 0 號核上
# echo 0 > cpuset.mems
# echo $$ > cgroup.procs

繼續開始施加 cpu 壓力。

# stress -c 4

在另外一個控制檯上檢視效果。

一次限制程序的 CPU 用量的實操過程

一次限制程序的 CPU 用量的實操過程

完美!這次不但將 cpu 用量控制在了一個核,而且也將 CPU 消耗牢牢地釘在了 cpu0 上。這就是我想要的效果!

基於這個方法,我們就非常準確地完成了對那個第三方 sdk 的 cpu 消耗用量的測試。也評估出來未來上線後需要幾臺伺服器。

分類: 科技
時間: 2021-10-12

相關文章

王毅出席亞信第六次外長會議:推動後疫情時代亞信程序不斷走深走實
來源:新華網 新華社北京10月12日電 10月12日,國務委員兼外長王毅以影片方式出席亞洲相互協作與信任措施會議第六次外長會議並發表講話. 王毅說,中方始終是亞信程序的參與者和推動者.著眼未來,中方願 ...

建築外牆塗料施工質量最佳化控制
隨著社會的不斷髮展,建築業的興起和國家對建築業的重視,以及建築檔次的提高,建築方面塗料變得尤為重要,建築的塗料決定裝修最後的效果.目前,粉刷技術由滾刷到噴漆再到刮塗,總之,現在裝修的方式多種多樣.儘管 ...

中國東方教育:“職教淮軍”是怎樣煉成的?

中國東方教育:“職教淮軍”是怎樣煉成的?
來源:人民網-安徽頻道 原創稿 合肥,江淮首郡.吳楚要衝. 一百多年前,從這裡走出去的淮軍登上歷史舞臺,在近代化程序中留下濃墨重彩的一筆. 一百多年後,又一支"淮軍"發軔於此,它便 ...

一物一碼:冷鏈安全的終極武器

一物一碼:冷鏈安全的終極武器
"區塊鏈技術正在讓眾多產業鏈更透明.更可信." 好文4615字 | 7分鐘閱讀 作者:櫟凡,<商業評論>編輯 2020年年底,武漢市東西湖區盈石物流園武漢盒馬B2C(企 ...

第四期數字新農服領袖班馬上開課,趕緊來

第四期數字新農服領袖班馬上開課,趕緊來
第四期數字新農服領袖班暨 農業產業網際網路趨勢 私享會 會議地點:北京農業農村部北區 會議時間:9月27-29日 私享會介 隨著農資經營行業傳統賣貨方式競爭愈演愈烈,農資經營各環節資訊越來越透明化,僅 ...

落筆一掃千人驚?書法大師趙樸初一筆一劃盡顯正氣,一愛好很特別

落筆一掃千人驚?書法大師趙樸初一筆一劃盡顯正氣,一愛好很特別
聲不能傳於異地,留於異時,於是乎文字生. 中國書法歷史由來已久,書法程序是由繁入簡的過程,是中華人民在文學藝術上的重要程序. 習書法之人首先得靜,一個"靜"字表明無論是酷熱難當.天 ...

在4L極小機箱中組建功能強大的MINI-ITX系統:組裝過程

在4L極小機箱中組建功能強大的MINI-ITX系統:組裝過程
專題包含文章,請關注"DMG寶藏大萌哥"頭條號,閱讀文章,指導您的類似嘗試. 1.MINI-ITX機箱怎麼搞出意思?其實追求一件事的極致挺有意思(2021年9月7日) 2.在4L極 ...

“雙減”政策下,職業教育走向何方?——訪環球青藤CEO伊貴業

“雙減”政策下,職業教育走向何方?——訪環球青藤CEO伊貴業
環球青藤CEO伊貴業 7月下旬,<關於進一步減輕義務教育階段學生作業負擔和校外培訓負擔的意見>(以下簡稱"雙減政策")正式釋出,成為業界熱點.一個政策,改變的不僅僅是我 ...

大資料和創構認識論
作者:王天恩(上海大學馬克思主義學院.社會科學學部教授,博士生導師) 內容提要:新一代人工智慧的發展,在更深層次展示了大資料的重要性.正是在大資料基礎上,匯聚了資訊科技發展過程中生髮的新認識論旨趣.從 ...

開啟文火慢燉模式:封閉弱電櫃下軟+AP路由的網路升級

開啟文火慢燉模式:封閉弱電櫃下軟+AP路由的網路升級
大家好! 本來我已開啟超長待機的帶娃模式許久,但是最近幫朋友的阿姨家升級了Wi-Fi6網路,心裡著實癢癢,於是我在沒有一個Wi-Fi6裝置,頻寬僅有200M的情況下購買了軟路由和Wi-Fi6路由器. ...

金空間裝飾正式開啟精益交付計劃

金空間裝飾正式開啟精益交付計劃
品質永遠是裝企的生命線.金空間裝飾作為25年的老品牌,品質,一直是他們考量家裝核心的唯一標準.在品質的提升上,每一年.每一個階段,金空間都在不斷突破和創新,最終實現品質交付. 品質交付,簡簡單單的四個 ...

預算一萬六配的RGB海景房,11700K+3080你覺得值不值?

預算一萬六配的RGB海景房,11700K+3080你覺得值不值?
自己動手組裝一臺心儀的電腦主機是種什麼樣的體驗,那得上手實操了才知道.同事小於很早以前就在計劃著給自己裝一臺高效能的遊戲主機,但奈何近一年來顯示卡行情一直讓人絕望.不過最近他終於下定決心要下山了,從海 ...

冷菜的製作方法(白煮制發)
把原料進行加工整理焯水後,放入開水鍋或湯鍋中(開水下料可使成品色澤潔白美觀),水的用量以淹沒原料為度.先用大火燒開,然後用小火燜煮至八成熟撈起冷晾後,改刀(切成塊或片.條等形狀),澆上配製好的調味汁佐 ...

國際頂刊PNAS發文:“同質化”論文暴增,從根本上阻礙了科學的進步

國際頂刊PNAS發文:“同質化”論文暴增,從根本上阻礙了科學的進步
作者 | 琰琰 從2012年至今,我國科研論文的發表數量一直在持續增長.據Web of science資料統計,近10年中國科研人員發表 SCI 論文總數已累計339.7萬篇,反超美國躍居全球榜首. ...

兩分鐘搞懂,五花八門的門禁卡(ID卡、IC卡、CPU卡),免費複製

兩分鐘搞懂,五花八門的門禁卡(ID卡、IC卡、CPU卡),免費複製
#頭條教育星師計劃# 我是IT悟道,點選右上方"關注",每天分享IT.科技.數碼方面的乾貨. 五色令人目盲,五音令人耳聾,五味令人口爽,馳騁畋獵令人心發狂,難得之貨令人行妨.--& ...

家裡裝修刷乳膠漆,乳膠漆的用量怎麼計算?一桶能刷多少平方米?

家裡裝修刷乳膠漆,乳膠漆的用量怎麼計算?一桶能刷多少平方米?
大家好,我是專注家居和裝修知識分享的家居雜壇.喜歡的就點選一下關注吧! 像我們家裡裝修,基本上都會使用一定數量的乳膠漆.對於絕大多數家庭來說,我們所使用乳膠漆的部位就是我們室內的牆面,還有頂板.例如客 ...

4nm加持,蘋果A16處理器曝光:CPU單核提升20%

4nm加持,蘋果A16處理器曝光:CPU單核提升20%
一年一度的蘋果秋季釋出會也終於拉上了帷幕,在釋出會上我們不僅見到了新一代的iPhone 13,也見到迭代的A15晶片.只是在欣喜見到新品A15的同時,也不免得有些疑惑,為何蘋果沒有在釋出會上對比上一代 ...

默克爾到訪,法國召回駐美大使,馬克龍繼續引領脫美程序?

默克爾到訪,法國召回駐美大使,馬克龍繼續引領脫美程序?
9月17日,法國總統馬克龍下了一道命令,要求召回法駐美國大使.召回大使,意味著兩國關係出現裂痕,對此,白宮表示感到遺憾,而這一遺憾也早就種在了法美關係中. 前一天,德國總理默克爾到訪法國,想到可能是最 ...

小麥底肥、追肥,用什麼肥料好?每畝用量多少?照著配方做就行

小麥底肥、追肥,用什麼肥料好?每畝用量多少?照著配方做就行
玉米用不了多久就要開始收割了,今年玉米鏽病特別嚴重,很多朋友擔心會不會導致小麥也得鏽病.我們知道鏽病主要是空氣來傳播的,可以隨氣流由南方傳到北方,也可由北方傳到南方. 雖然都屬於擔子菌亞門真菌,也都是 ...