cgroups ルールを特定のユーザーに適用しました。上記のユーザーから実行されているプログラムのメモリが期待どおりに制限されているかどうかをテストしたいと思います。次のスクリプトで試しました。
import string
import random
if __name__ == '__main__':
d = {}
i = 0;
for i in range(0, 100000000):
val = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(200)) # generate ramdom string of size 200
d[i] = val
if i % 10000 == 0:
print i
コマンドでプロセスを監視したps
ところ、%MEM が 4.8 に増加し、両方の cgroups サービスがオンでもオフでも変更されないことが判明しました。
$ ps aux | grep mem_intensive.py
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
jason 11531 88.5 4.8 3312972 3191236 pts/0 R+ 22:16 0:07 python mem_intensive.py
このシナリオでは、合計メモリは 62 GB であり、その 4.8% で約 3 GB になります。このユーザーで他のプロセスを実行せずに、制限を 4GB に設定しました。
では、この問題のある python スクリプトについて誰か教えていただけないでしょうか? 前もって感謝します。