當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 江西OA系統(tǒng) > 南昌OA系統(tǒng) > 南昌OA信息化
Linux遭遇擴(kuò)展性問題
使用真正大型機(jī)器的樂趣,一方面在于能夠比別人更早在可擴(kuò)展性方面發(fā)現(xiàn)新的驚奇,所以使用SGI高性能計(jì)算機(jī)的人常常比我們許多人享有更多的樂趣。他們最近的發(fā)現(xiàn)與內(nèi)核線程的數(shù)量有關(guān): 在4096路系統(tǒng)上,Linux內(nèi)核線程的數(shù)量導(dǎo)致內(nèi)核出現(xiàn)了令人關(guān)注的一些行為。
發(fā)現(xiàn)問題
首先他們發(fā)現(xiàn):即使使用默認(rèn)的配置,也啟動不了內(nèi)核。Linux系統(tǒng)在任何一個特定的時間,活動進(jìn)程通常限制在32768個。運(yùn)行過ps命令的人都會注意到: 內(nèi)核線程在占用數(shù)量越來越多的內(nèi)存插槽。單處理器桌面系統(tǒng)可能在運(yùn)行其中的39個活動進(jìn)程。實(shí)際上,如今一個典型的系統(tǒng)上有足夠多的內(nèi)核線程,以至這些線程會占滿4096路機(jī)器上的全部空間,甚至更多。這個問題比較容易得到解決,只要提高處理器數(shù)量的限額。不過,這樣一來情況變得比較有意思了。
對系統(tǒng)上的其他每個進(jìn)程(包括內(nèi)核線程)來說,init進(jìn)程是最終的父進(jìn)程。所以在大型系統(tǒng)上,init有許多子進(jìn)程。這些子進(jìn)程位于一個很大的鏈表(linked list)上。該鏈表由諸多函數(shù)來搜索,其中包括wait()的變種版本。如果正在搜索中的進(jìn)程接近鏈表末端,那么這個搜索需要花費(fèi)很長時間。一是因?yàn)榇蠖鄶?shù)內(nèi)核線程是長期線程,二是因?yàn)樾逻M(jìn)程被放在鏈表末端,所以某次搜索很可能確實(shí)會尋找末端的某個進(jìn)程。
然后把某個模塊裝入內(nèi)核。當(dāng)新模塊進(jìn)行鏈接時,模塊裝入過程就會調(diào)用stop_machine_run(),該函數(shù)會為系統(tǒng)上的每個進(jìn)程創(chuàng)建高優(yōu)先級的內(nèi)核線程。該線程就會獲取分配給它的CPU,然后只是閑置在那里,直到被告知退出;盡管所有CPU以這種方式被擱置起來,但鏈接過程照常執(zhí)行。即便在最好的時候(即線程數(shù)量不多的時候),調(diào)用stop_machine_run()這樣的函數(shù)也是有點(diǎn)不合常理,更何況對一個擁有4096路處理器的系統(tǒng)而言,stop_machine_run()會創(chuàng)建4096個線程,每個線程都會進(jìn)入到init的子鏈表的末端;每個線程等到需要清理時,都必須進(jìn)行搜索。結(jié)果就是,系統(tǒng)在很長一段時間過后才會停機(jī)。
解決辦法
有人可能認(rèn)為,擁有這么大系統(tǒng)的人根本不應(yīng)該裝入模塊,但可能會受到來自用戶社區(qū)的反對。所以需要找到其他的解決方案。有關(guān)報告提供了一種簡單的補(bǔ)丁,可以把現(xiàn)有的進(jìn)程轉(zhuǎn)移到子鏈表的始端。這種變化解決了眼前的問題,因?yàn)樗梢酝ㄟ^搜索這些子進(jìn)程就能找到它們,不必遍歷不會去任何地方的所有長期進(jìn)程。
Linus有幾個變通辦法。辦法之一就是為僵尸進(jìn)程(zombie process)建立不同的鏈表,從而完全不需要這種搜索。另一個辦法就是停止讓內(nèi)核線程成為init進(jìn)程的子進(jìn)程,因?yàn)樵谌魏吻闆r下,它們與用戶空間都沒有多大關(guān)系。但一些開發(fā)人員認(rèn)為,真正的解決方案也許在于開始減少內(nèi)核線程的數(shù)量。
導(dǎo)致內(nèi)核線程大量創(chuàng)建的最主要原因無疑是工作隊(duì)列。默認(rèn)情況下,工作隊(duì)列會為系統(tǒng)上的每個CPU創(chuàng)建一個線程。有些情況能夠得益于多個線程和CPU局部性(CPU locality),但毫無疑問也有許多情況下不需要所有這些線程。清除這些線程有助于解決部分?jǐn)U展性問題; 另一個好處就是,這可以讓ps列表顯得整潔一些。
在許多情況下,工作隊(duì)列可能根本沒有必要。相反,內(nèi)核子系統(tǒng)可能完全使用“一般的”keventd工作隊(duì)列(作為events/n線程來運(yùn)行)。使用keventd內(nèi)核線程存在一些問題,包括無限制延遲以及可能性很小的死鎖,不過在許多情況下,它的工作效果足夠好。
在其他情況下,使用線程很有必要。涉及長時間延遲的任務(wù)是一個例子; 使用kevented運(yùn)行延遲時間好幾秒的函數(shù)被認(rèn)為是不恰當(dāng)?shù)?。需要?fù)雜上下文的工作也會得益于其自己的線程。不過在許多情況下,這些線程在一些工作實(shí)際完成之前并不需要創(chuàng)建。大多數(shù)系統(tǒng)上迅速運(yùn)行ps命令可以顯示與錯誤處理、異步I/O、藍(lán)牙及更多方面有關(guān)的線程。按照當(dāng)前方式,這些線程在啟動時(或者模塊裝入時)創(chuàng)建,其中許多線程在系統(tǒng)關(guān)閉之前可能根本不做任何實(shí)際工作。創(chuàng)建線程的成本很低,所以許多這些線程可以在需要時創(chuàng)建而成。
這方面恐怕需要進(jìn)行一些真正的改進(jìn)。需要的只是有人、有時間、有動力來做這項(xiàng)工作。與此同時,使用4096路處理器系統(tǒng)的人可能需要打上一兩個補(bǔ)丁。
鏈接:進(jìn)程與線程
可執(zhí)行文件由指令和數(shù)據(jù)組成。進(jìn)程就是在計(jì)算機(jī)上運(yùn)行的可執(zhí)行文件針對特定的輸入數(shù)據(jù)的一個實(shí)例,同一個可執(zhí)行程序文件如果操作不同的輸入數(shù)據(jù)就是兩個不同的進(jìn)程。
線程是進(jìn)程的一條執(zhí)行路徑,它包含獨(dú)立的堆棧和CPU寄存器狀態(tài),每個線程共享其所附屬的進(jìn)程的所有的資源,包括打開的文件、頁表(因此也就共享整個用戶態(tài)地址空間)、信號標(biāo)識及動態(tài)分配的內(nèi)存等等。線程和進(jìn)程的關(guān)系是:線程是屬于進(jìn)程的,線程運(yùn)行在進(jìn)程空間內(nèi),同一進(jìn)程所產(chǎn)生的線程共享同一物理內(nèi)存空間,當(dāng)進(jìn)程退出時該進(jìn)程所產(chǎn)生的線程都會被強(qiáng)制退出并清除。
Linux內(nèi)核只提供了輕量進(jìn)程的支持,限制了更高效的線程模型的實(shí)現(xiàn),但Linux著重優(yōu)化了進(jìn)程的調(diào)度開銷,一定程度上也彌補(bǔ)了這一缺陷。目前最流行的線程機(jī)制LinuxThreads所采用的就是線程-進(jìn)程“一對一”模型,調(diào)度交給核心,而在用戶級實(shí)現(xiàn)一個包括信號處理在內(nèi)的線程管理機(jī)制。
在Linux的“一對一”模型中,用一個核心進(jìn)程(輕量進(jìn)程)對應(yīng)一個線程,將線程調(diào)度等同于進(jìn)程調(diào)度,交給核心完成,而其他諸如線程取消、線程間的同步等工作,都是在核外線程庫中完成的。因此可以把進(jìn)程看作一組線程,這組線程擁有相同的線程組號(TGID),這個TGID就是這組線程序所附屬的進(jìn)程的ID號,每個線程的ID號就是我們用ps命令所看到的LWP號。(ccw)
- 1局域網(wǎng)加速五個方法
- 2支招OA選型:簡單三步完成篩選
- 3一招克死所有病毒
- 4OA:服務(wù)如何助客戶提升管理能力
- 5自建維基網(wǎng)站
- 6物理隔離技術(shù)及產(chǎn)品的選購要點(diǎn)
- 7VoIP治療通信病
- 8界面與程序分離 --- MIS開發(fā)新方法
- 9聚焦OA時代 安全、易用是關(guān)鍵
- 10移動OA 外出碎片時間也可創(chuàng)效益
- 11核心網(wǎng)網(wǎng)絡(luò)測試技術(shù)
- 12“明星程序員”的DNA
- 13大協(xié)同時代的智慧管理
- 14智慧城市之共享式標(biāo)準(zhǔn)移動OA產(chǎn)品
- 15Sybase數(shù)據(jù)庫安全性控制策略
- 16怎樣清理故障磁盤上的殘留數(shù)據(jù)
- 17如何挽救大型機(jī)技術(shù)危機(jī)
- 18網(wǎng)絡(luò)管理員避免10種愚蠢行為
- 19霍邱縣政務(wù)協(xié)同辦公(OA)系統(tǒng)啟用暨業(yè)務(wù)培訓(xùn)會召開
- 20七種IP擁塞控制算法需改進(jìn)
- 21OA系統(tǒng)行業(yè)八強(qiáng)功力大比拼協(xié)同定江山
- 22怎樣應(yīng)對IDS八大高危事件
- 23實(shí)現(xiàn)JSP與MySQL的連接
- 24OA選型霾氣重 抓住要害治“霧霾”
- 25OA辦公系統(tǒng)選購法則:理性、務(wù)實(shí),永遠(yuǎn)
- 26以信息化引領(lǐng)公安工作現(xiàn)代化
- 27文件備份故障五大原因分析
- 28企業(yè)CIO進(jìn)行OA選型的注意事項(xiàng)
- 29路由器的五代家譜
- 30了解OA六大重點(diǎn) 掌握選型主動權(quán)
成都公司:成都市成華區(qū)建設(shè)南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓