我已经对一个特定用户应用了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 3GB,因此4.8%的内存约为3 3GB。我将限制设置为4 4GB,没有在此用户上运行任何其他进程。
那么,谁能给我一些关于这个有问题的python脚本的想法?提前谢谢。
发布于 2015-05-29 17:40:13
我使用过您的脚本,它一直在增长,尽管速度很慢。瓶颈是使用random.choice。如果你想快速填满内存,生成随机性对你不利。因此,仅使用固定字符串会相当快地耗尽内存。如果使用下面的代码,同时想看看它是如何增长的,那么您可能会在print之后抛出一个time.sleep()
if __name__ == '__main__':
d = {}
i = 0;
for i in range(0, 100000000):
d[i] = 'A'*1024
if i % 10000 == 0:
print(i)更快地填充内存:
只有一句话:
['A'*1024 for _ in xrange(0, 1024*1024*1024)]https://stackoverflow.com/questions/30509322
复制相似问题