PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] 如何把linux的Ram占光
楼主:
LORDJACK
(文亚南)
2015-02-13 17:55:25
最近公司的linux server有个问题
以前装32G的ram工作正常, 内存超过了就用page
最近把ram加到64G, 发生奇怪的问题
内存用量到24G时就会整个系统卡住, 连page也不用了
因此我想写一个程式如下
int main(void){
unsigned long int total = 0;
unsigned long int size = 1000000;
while (size > 0) {
char *p = malloc(sizeof(char) * size);
if (NULL != p) {
total += size;
output(total);
}
else {
size /= 1000;
output(total);
}
} output(total);
return 0;
}
output函数就不附上了, 就是显示用了多少G而已
这城市compiler后, 执行的成果
永远都在4G又275M
但我的系统有64G啊
请问是不是有其他的写法可以让我占用全部的RAM测试一下呢?
作者:
carylorrk
(carylorrk)
2015-02-13 18:15:00
单纯 user space 不行吧?
作者:
descent
(“雄辩是银,沉默是金”)
2015-02-13 18:19:00
printf 是用 %lx 吗?
作者: longlongint (华哥尔)
2015-02-13 18:51:00
pow(2,32) 是多少
作者:
PkmX
(阿猫)
2015-02-13 19:28:00
你是在32bit还是64bit的linux上跑得啊?另外linux有memory overcommitment的机制 你如果只malloc但是没有使用到该page的话 kernel根本就不会去map实体的memory给他
作者:
johnpage
(johnpage)
2015-02-13 20:13:00
先确认作业系统的位元,32or64
作者: LiloHuang (十年一刻)
2015-02-13 20:16:00
http://linux.die.net/man/3/malloc
建议 Note 先看熟Linux 默认是打开 overcommit 的情况下,malloc 除了要求配置大小为 0 之外,都一定会回传指标给你做 NULL 检查会造成不如预期的状况发生 ...就像 PkmX 提到的,你得真的去用该 page 才行方法也很简单,对回传的指标做 memset(p, 0x0, size);至于你只能用 4G 的情况,听起来是 32bit 的作业系统
作者:
cspy
(Perfect Stranger)
2015-02-13 20:42:00
死结?
作者:
Baternest
(忍蛋)
2015-02-13 23:08:00
试一下这个
http://pyropus.ca/software/memtester/
作者:
Push5F
(帐号已卖)
2015-02-14 01:24:00
MMU max size = 4G ? if install 1G ram ,MMU = 4Gif install 5G RAM ... ???
作者:
tjjh89017
(伊达政宗)
2015-02-14 18:53:00
@Push5F: 请去了解MMU的运作模式
作者:
lovejomi
(JOMI)
2015-02-15 02:28:00
若一定回传non null,要怎知道malloc fail呀??
作者: LiloHuang (十年一刻)
2015-02-15 21:07:00
坦白说,没办法 :) 楼上也可以关掉 overcommit
继续阅读
[问题] 记录compile当下的时间日期
tyc5116
[问题] 指数运算子问题
zzhiphop6
[讨论] 丢上去uva compler error
longted5
[问题] 新手printf与乱数问题
q10242
[问题] 初学者 找两数之间质数问题
R119
[问题] 新手问 MFC小问题
chiang0514
[问题] template with C linkage - string
jiqian
[问题] 关于head file reference的问题
MaxHaru
[问题] 影像接图的Libary
wu110011
[问题] textbox 与 Button_Click
kisha024
Links
booklink
Contact Us: admin [ a t ] ucptt.com