2010年2月25日 星期四

processes fork and swap space

今天在Sun Solaris上進行壓力測試, 想當然爾跑出了一堆程式, 可是卻停在第20xx後程式就fork不出來了。可憐的是,程式的原始碼不是自己持有,也就是說跑的是別人家的程式,實在很難抓問題,尤其在沒有任何其他明顯線索下。沒辦法了,自己寫一支程式來測試看看嘍,好在之前有在Linux寫了一支壓力測試程式,重新Make後,就趕上架去處理吧。
RUN了2圈後,很快發現fork error , errno=12 (ENOMEM), 從man page上可以發現是swap space的問題,check一下指令
swap -l :查詢swap 空間設定為多少
swap -s:目前當下剩下的swap space 還有多少可用
在測試前後比較,明顯發現swap空間的不足,二話不說,當然是增加swap嘍。

話雖然這樣就解決了,只是fork程式跟swap空間有什麼關係呢
以下摘錄自: http://bbs.nsysu.edu.tw/txtVersion/treasure/linux/M.1013884061.A.html

BSD對swap space的處理頗為保守. 要求所有在主記憶體的page
在配置前都必須要先有一塊swap space. 所以swap space的大
小限制了可以執行的程式數量.不過這也保證程式只有在fork或
exec時才會發生記憶體不足的現象, 而不會執行到一半要被swap
出去, 卻找不到swap space可用的窘況.也就是說如果你的電腦有
64MB的記憶體,但是只劃了16MB的記憶體,這樣的系統只願意讓你使
用16MB而已, 這也是有些系統管理的書籍建議你swap space不要比
main memory小的原因.


這句話也為我自己解釋了長久以來在上課時,老師總要我們把swap空間開DRAM的1~2倍的原因

目前知道跟process 數量上限直接有關的
1. 實體記憶體大小
2.Swap 大小
3.System configuration(ulimit , plimit...etc)

那哪些是間接的呢
例如CPU idle, process使用的共用資源限制(例如程式去搶share memory resource)或socket resource...etc

不知道還有沒有別的?!

PS.真是小時不努力,老大徒傷悲

2010年2月24日 星期三

RHCA之路-第0篇

4年前,第一次接觸LINUX,原本對於自己也不怎麼熟悉的WINDOWS要進入這個領域時,也是抱著必死決心的態度來面對。有太多因素在當時發生了,現在一時之間也講不完....
3年前,為了宣誓自己的決心,去參加課程,也跌跌撞撞考了RHCE,從此也走了這條不歸路。2年前得知RHCA的課程,原本只是抱著取經的心態來體驗,剛好也是工作需要,上了幾門課也在Linux上面增長了一些知識,也因為中毒愈來愈深,不能自拔了。但是,因為工作忙碌的關係,中斷了求知之路。
1年前,在一個機緣下,經過Cheryl的協助(要感謝Cheryl),回去重聽了以前的課,發現這2年也增長了一些知識,以前聽不懂的,慢慢有了一些體會。加上同學的鼓勵,一起參加了RHCA系列考試,一樣跌跌撞撞的。不過,邊走邊成長,過程中很緊湊,但也學得比較快比較多。
不才的我,也這樣經過了333以及436的試鍊,抬頭看未來的路,還很漫長。不僅僅是RHCA的試鍊,其實這陣子還發現很多可以慢慢長知識的。在Google的世界裡,發現Linux的領域真是無遠弗界,嚴格講起來應該是IT領域,也發現在這個小島,其實還是人才濟濟啊。

心得只有一個,活到老學到老,為自己加油了。

文章分類