我们的服务器上有Solaris 10操作系统,我想在这台服务器上进行测试。对于此测试,内存使用量应该很高。
所以我想知道是否有一种简单的方法可以手动增加内存使用量?
答案1
最简单的方法是填充 /tmp,假设它使用默认的 tmpfs。运行df -k /tmp
以确保它是。
要将(虚拟)内存使用量增加 1 GB,请运行
mkfile 1g /tmp/1g
释放它
rm /tmp/1g
答案2
这一页应该对你有帮助。只是c中的小程序:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char** argv) {
int max = -1;
int sleep_interval = 2;
int mb = 0;
char* buffer;
if(argc > 1)
max = atoi(argv[1]);
if(argc > 2)
sleep_interval = atoi(argv[2]);
while((buffer=malloc(1024*1024)) != NULL && mb != max) {
memset(buffer, 0, 1024*1024);
mb++;
printf("Allocated %d MB\n", mb);
}
printf("sleeping for %d\n",sleep_interval);
sleep(sleep_interval);
return 0;
}
请记住,如果不为程序提供最大内存量,它将分配直到耗尽其可以分配的内存量(可能受到 ulimit、内存量或地址空间大小的限制)。
答案3
我知道填充内存的最简单方法是制作一个分配字符串数组(或任何其他类型的数组)的程序,如果您需要将数据保留在内存中而不是分页,则应该定期扫描分配的内存。
我会在分配后添加一个长的(可能由命令行参数控制)睡眠间隔。
我将运行上述程序的多个实例,直到填满所需的内存量。
答案4
我不知道这是否也适用于 Solaris - 但由于它设计为在 Posix 兼容系统上运行,你可以尝试一下:压力是一个非常“简单”的压力测试生成器,可以执行各种压力 - 创建内存占用是其中的一部分。
到目前为止,我在一些 Linux 发行版(CentOS、SLES)上编译/测试过它,没有出现任何问题。