我正在用 zram 测试我的系统,我需要一个脚本来使用尽可能多的内存。这个脚本应该用随机的东西填满我的内存,而不仅仅是零。
memtester是一个用户空间程序,旨在分配内存(您指定的任何数量)并使用随机模式对其进行测试。它将避免交换使用。但是,如果您首先删除所有内存memtester(检查free -m),然后启动其他任何使用大量内存的程序(gimp、firefox 等),那么应该可以进行交换。
另一种选择类似于跳到最后一行openssl rand -base64 $((1024*1024*1024)) | less,但用处不大>;这将导致 1GB 的 base64 编码随机数据加载到内存中(但速度很慢)。
如果您正在寻找更高效的东西,任何脚本语言(例如 Python)的小脚本都可以。
#!/usr/bin/python2
import numpy
result = [numpy.random.bytes(1024*1024) for x in xrange(1024)]
print len(result)
Run Code Online (Sandbox Code Playgroud)
这将为随机数据分配 1G 内存,并在终止前打印分配的 MB 数。如果您想要超过 1024M,请相应地调整 xrange 值。
赶紧跑 :
echo {1..1000000000}
Run Code Online (Sandbox Code Playgroud)
解释 :
Shell,在向内核发出命令之前,扩展了所有的正则表达式和简写。扩展命令临时存储在 RAM 中。上面的命令扩展为一个非常大的命令,因此它将完全填满 RAM(在 8GB 上测试)。
警告:这不是填充 RAM 的受控方式。运行此命令后,您可能会卡住。我建议您保持system monitor开放(以观察 RAM 使用情况)并尝试使用较小的数字。
正如prophecy201 建议的那样,压力是耗尽系统内存的好工具。添加更多的 worker 会使用更多的 RAM,但它也会使用更多的 CPU,如果你只想测试 RAM,这是非常低效的。更不用说 zram 将需要 CPU 进行压缩。
相反,您应该增加与--vm-bytes标志一起使用的 RAM 量。例如,要使用一名工作人员使用 4 GB 的 RAM:
stress -m 1 --vm-bytes 4G
Run Code Online (Sandbox Code Playgroud)
您可能还会发现该--vm-keep标志很有用,因为它将保存内存分配而不是不断重新分配,因此内存使用量将保持不变而不是波动:
stress -m 1 --vm-bytes 4G --vm-keep
Run Code Online (Sandbox Code Playgroud)
最后,看看这里以确保 zram 是您真正想要的;既然你有交换,zswap 可能是一个更好的解决方案:zram vs zswap vs zcache 终极指南:何时使用哪个
| 归档时间: |
|
| 查看次数: |
29182 次 |
| 最近记录: |