Re: [问题] 如何把linux的Ram占光

楼主: lf5471 (lf)   2015-02-13 21:08:37
※ 引述《LORDJACK (文亚南)》之铭言:
: 最近公司的linux server有个问题
: 以前装32G的ram工作正常, 内存超过了就用page
: 最近把ram加到64G, 发生奇怪的问题
: 内存用量到24G时就会整个系统卡住, 连page也不用了
: 因此我想写一个程式如下
没有真的跑, 试看看吧.
简单说就是一直 fork 到 fork 不了为止
#define SIZE_4GB 0x100000000UL
int g_n = 0;
int main(void)
{
pid_t pid;
char *buf;
pid = fork();
if (pid < 0) // fork fail
{
printf("\nFork fail! => total malloc size = %d (GB)\n", 4*g_n);
return 1;
}
// else, fork success
if (pid == 0) // child process
{
if ((buf = (char *)malloc(SIZE_4GB)) != NULL)
{
memset(buf, 0x00, SIZE_4GB);
g_n++;
printf("child (%6d) : %d\n", pid, g_n);
}
else
printf("child (%6d) : malloc fail! g_n = %d\n", pid, g_n);
}
else
{
//Parent process, do nothing.
printf("parent (%6d) : do nothing\n", getpid());
}
return 0;
}
作者: PkmX (阿猫)   2015-02-13 21:17:00
你这样只会fork一次吧...
作者: OPIV (Monitor)   2015-02-14 11:11:00
没记错的话,现在的linux内核会阻止无穷循环fork()...那叫做fork bomb...
楼主: lf5471 (lf)   2015-02-14 16:11:00
sorry, TIMEOUT 可加大, 例如 60 (一分钟)
作者: PkmX (阿猫)   2015-02-14 20:15:00
实在太麻烦了XD...为何不写一个会吃4G内存的程式 然后shell下多开几个就好XD
作者: dirkc (3781615)   2015-02-15 00:32:00
楼上说的没错。另外把内存都耗掉是否能有效抓出原来的虫或许更值得深入讨论。这样的debug方式,在server上风险相当高

Links booklink

Contact Us: admin [ a t ] ucptt.com