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