oliseh 发表于 2016-08-20 21:36

如何编写一个C程序:不断耗用主机内存直至占满10G的内存


性能测试需要模拟主机内存被大量占用的情况,因此需要编写一个C程序实现如下功能,假设程序名是allm

执行allm 1024就可以占用1024M的内存
执行allm 2048就可以占用5000M的内存

请大师们提供一下源代码,谢谢

windoze 发表于 2016-08-22 02:16


#include <stdlib.h>
#include <string.h>
#include <sys/mman.h>
int main(int argc, char *argv[]) {
    unsigned long n=atoi(argv);
    void *p=mmap(NULL, n*1024*1024, PROT_READ| PROT_WRITE, MAP_ANON, -1, 0);
    while(1) memset(p, 0, n*1024*1024);
}

VIP_fuck 发表于 2016-08-22 08:46

耗尽内存做性能测试?测试什么呢?测试极限情况服务状况?

流氓无产者 发表于 2016-08-22 09:26

windoze 发表于 2016-08-22 02:16


手太快了,正想用map来着

dorodaloo 发表于 2016-08-23 08:59

那这个源代码该如何设计呢

folklore 发表于 2016-08-23 09:52

while(1) memset(p, 0, n*1024*1024);

这个很慢的, 改成一页随机写入一个字节(字)比较好。
页大小可通过参数传入。

a742794196 发表于 2016-08-24 10:11

学习了。回复 2# windoze


windoze 发表于 2016-08-24 11:35

回复 6# folklore


这样写程序短……
再说lz不是要烧机器么,正好帮他烧一下。

folklore 发表于 2016-08-24 11:54

回复 8# windoze


:)。

PS:
我以前试过一页写一个int的, 全部写完16G要十几分钟~~
(刚买电脑时,测试内存用的)
页: [1]
查看完整版本: 如何编写一个C程序:不断耗用主机内存直至占满10G的内存