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

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