如何手动增加内存使用量?

如何手动增加内存使用量?

我们的服务器上有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)上编译/测试过它,没有出现任何问题。

相关内容