簡體   English   中英

在centos 7中使用pid進行內存限制預處理

[英]Memory limit pre process using pid in centos 7

我想將內存限制為使用腳本中的pid的進程,我想查看我可以使用的內容,例如cpulimit或其他軟件

Linux中進程的內存限制通常如下所示:

  1. 您可以通過setrlimit系統調用( 手冊頁 )為當前進程設置內存限制
  2. 運行要限制誰的內存的進程。 子項將在創建時繼承父項的限制。
  3. 中提琴! 現在,您正在運行子進程,並將內存限制設置為自己喜歡的水平。
  4. 重置父母的記憶限制(不會影響孩子!)

實際上,它看起來像這樣:

$ ulimit -v [memory limit kilobytes]
$ ./[program who's memory you want to limit]
$ ulimit -v unlimited

Firejail是一個很好的工具,可以做到這一點。 使用Firejail,我們可以萌芽具有512字節內存限制的子進程,如下所示:

firejail --rlimit-as=number [command]

但是,與ulimit不同,默認情況下,firejail不隨CentOS一起安裝。

我知道這是不是正是你問什么。 我告訴您如何啟動一個具有內存限制的進程,而嚴格地說,您僅詢問如何通過其PID 修改可用於正在運行的進程的內存。

與CPU和文件訪問限制不同,如果在進程創建時而不是在運行時執行,則任何Linux發行版上的內存限制都非常簡單。 這是由於內核的設計,特別是我前面提到的setrlimit syscall。 因此,盡管有可能。

但是 ,如果絕對確定要動態更改現有進程的內存限制,則可以使用cgroups來完成。 您所要做的就是創建一個具有特定內存限制的cgroup,並將您的進程放入該cgroup中。 您應該執行以下操作:

mkdir /sys/fs/cgroup/memory/groupname
echo 1000 > /sys/fs/cgroup/memory/groupname/memory.limit_in_bytes
echo pid > /sys/fs/cgroup/memory/groupname/cgroup.procs

該方法更接近您的要求,但是第一種方法要簡單得多,如果您的問題完全可行,我強烈建議您使用。 祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM