其實(shí),是我的錯,我真的沒有好好對她。我錯了……我真的錯了…………
關(guān)于《 請善待她 》,請猛點(diǎn)進(jìn)入。它描述了我在coding過程中發(fā)現(xiàn)的一個現(xiàn)象:當(dāng)malloc的內(nèi)存總量大于可用空閑物理內(nèi)存的時候,會出現(xiàn)與磁盤之間的換頁,嚴(yán)重影響性能。于是我懷疑Linux的內(nèi)存分配機(jī)制出了問題[見下圖],并給出了一套解決方案。 詳見全文 。
+-------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------+
今天早上睡在床上和席子聊起這個事情,聊著聊著我覺得是不是我在內(nèi)存初始化函數(shù)init_memory()中犯傻了?噌噌讓他上google code查我的代碼,找到init_memory(),往下一拖,我就囧了:
在代碼的最后,為了調(diào)試我將分配的六七G內(nèi)存挨個寫了一遍!光寫一遍這幾G的內(nèi)存就花了我五六秒時間,難怪init_memory()函數(shù)執(zhí)行得這么慢!這還無所謂, 關(guān)鍵是該行為直接強(qiáng)迫內(nèi)核為所有緩沖區(qū)分配了真正的物理頁面,最終導(dǎo)致了物理內(nèi)存不足,進(jìn)而出現(xiàn)換頁 ……N
ightmare降臨……
我清楚地看到這么一行注釋:/* for debug */,嗯,好習(xí)慣……0x41,嗯,夠?qū)I(yè)!
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
