Unix 中限制程序資源消耗


介紹

在基於 Unix 的作業系統中,管理程序消耗的資源非常重要,以確保系統平穩執行。如果某個程序消耗了過多的資源,可能會導致系統變慢或無響應。在某些情況下,甚至可能導致系統崩潰。因此,能夠限制程序可以消耗的資源非常重要。

在 Unix 中,有多種方法可以限制程序的資源消耗。一種方法是使用 **ulimit** 命令,它允許您設定程序可以消耗的資源的限制。另一種方法是使用 **cgroups** 功能,它允許您將程序分組並設定該組可以消耗的資源的限制。

使用 ulimit 命令

**ulimit** 命令用於設定程序可以消耗的資源的限制。使用 **ulimit** 的語法如下:

$ ulimit [option] [limit]

您可以將多個選項與 **ulimit** 一起使用,包括:

  • **-a** − 此標誌顯示所有當前限制。

  • **-c** − 此標誌限制核心檔案的尺寸。

  • **-d** − 此標誌限制資料段的尺寸。

  • **-f** − 此標誌限制可以建立的檔案的尺寸。

  • **-n** − 此標誌限制開啟的檔案描述符的數量。

  • **-s** − 此標誌限制堆疊的尺寸。

  • **-t** − 此標誌限制程序可以消耗的 CPU 時間量。

  • **-u** − 此標誌限制使用者可以執行的程序數量。

例如,要限制程序可以建立的核心檔案的尺寸,可以使用以下命令:

$ ulimit -c 100000

這會將核心檔案的尺寸限制為 100,000 位元組。

要顯示程序的當前限制,可以使用 **-a** 選項:

$ ulimit -a

這將顯示程序的所有當前限制的列表。

使用 cgroups 命令

在 Unix 中限制程序資源消耗的另一種方法是使用 **cgroups** 功能。**cgroups** 允許您將程序分組並設定該組可以消耗的資源的限制。

要使用 **cgroups**,您首先需要建立一個 **cgroup** 並將程序新增到其中。您可以使用 **cgcreate** 命令來執行此操作。

$ ulimit -g resource_type:cgroup_name

例如,要為 CPU 資源建立一個名為 **mycgroup** 的 **cgroup**,可以使用以下命令:

$ ulimit -g cpu:mycgroup

要將程序新增到 **cgroup**,可以使用 **cgclassify** 命令。

$ cgclassify -g resource_type:cgroup_name pid

例如,要將 PID 為 1234 的程序新增到 **mycgroup cgroup**,可以使用以下命令:

$ cgclassify -g cpu:mycgroup 1234

建立 **cgroup** 並將程序新增到其中後,可以使用 **cgset** 命令設定 **cgroup** 可以消耗的資源的限制。

$ cgset -r resource_type=limit cgroup_name

例如,要將 **mycgroup cgroup** 的 CPU 使用率限制為 50%,可以使用以下命令:

$ cgset -r cpu.cfs_quota_us=50000 mycgroup

您還可以使用 **cgget** 命令檢視 **cgroup** 的當前限制。

$ cgget -r resource_type cgroup_name

例如,要檢視 **mycgroup cgroup** 的當前 CPU 限制,可以使用以下命令:

$ cgget -r cpu.cfs_quota_us mycgroup

示例

為了說明如何使用這些命令,假設我們要將 PID 為 **1234** 的程序的 CPU 使用率限制為 50%。我們可以使用 **cgroups** 功能如下:

cgcreate -g cpu:mycgroup
cgclassify -g cpu:mycgroup 1234
cgset -r cpu.cfs_quota_us=50000 mycgroup

然後,我們可以使用 **cgget** 命令驗證 **mycgroup cgroup** 的當前 CPU 限制。

$ cgget -r cpu.cfs_quota_us mycgroup

這將顯示以下輸出:

$ cpu.cfs_quota_us: 50000

這表示 **mycgroup cgroup** 的 CPU 使用率限制為 50%。

結論

在本文中,我們討論了兩種限制 Unix 中程序資源消耗的方法:使用 **ulimit** 命令和使用 **cgroups** 功能。透過設定程序或程序組可以消耗的資源的限制,您可以確保系統平穩執行,並防止資源密集型程序導致問題。

更新於: 2023年1月4日

215 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.