電腦效能應用與安全研究室 Performance, Applications and Security Lab


我們的研究範圍很廣,從嵌入式系統、手機應用、一直到雲端計算、商務應用、資訊安全都有做。
我們的合作研究夥伴很多,包括聯發科、IBM、中研院、資策會,還有和台大、清大、交大的教授合組研發團隊
,包括高階應用處理器架構研究、虛擬化技術、異質計算、系統軟體等重要技術的研究與創新,我們很關切台灣人才與產業的未來。

2016年2月4日 星期四

那一年我們做系統優化的故事: 為什麼我們會做學界業界不(屑)做的研發?

 前天在與某廠商開會時遇到10年前做過產學合作的熟面孔,為了保護他的隱私,這裡稱他為X先生好了。X先生說他還清楚記得當年我們幫他的老東家「廣達的儲存伺服器研發部門」所開發的技術,這點讓我頗感驚訝。

事隔十年,保密協定也早過期了,論文也發表過了,所以應該可以來說說這個故事。

在2006~2007年間,我們與廣達做產學合作,那是我2005年回國後第一個產學計畫,我帶著實驗室草創後的第一批研究生,研究廣達剛剛研發出來的中階儲存伺服器。這個中階儲存伺服器,有兩個大腦 (雙控制器)來提供容錯功能,每個控制器上有一個處理機跑著廣達輾轉向國外某公司買來的複雜軟體,為了要快,雙控制器把從硬碟載入的資料放在一塊特殊的共享記憶體,然而整個系統,跟競爭對手比起來,還是不夠快。

X先生在前天對我說,他覺得我們很厲害,能夠搞定這個困擾他們工程師許久的非常複雜難懂的系統軟體,把這個儲存伺服器的極速提高了將近十倍,對於產品的競爭力有很大的貢獻。

其實這不是我們厲害,我們做效能分析和優化都是有方法論 (methodology)和工具 (tools)為基礎的。沒有這些,只能做些簡單的東西,不能做複雜的工程。國內很多研發單位只重視短期研發,根本不懂這些。(我講的十年前的狀況,廣達研究院現在應該好些了吧?) 我聽過有人說: 「什麼方法論、工具的? 反正就叫工程師拼命加班做,限時完成產品不就好了? 」所以我跟這些人談前瞻系統研發,等於秀才遇到兵,說也說不清,只有等他們遇到解不了的複雜問題,才會知道專業的價值 -- 現在搞雲端、大數據、物聯網、異質計算,這類複雜問題比比皆是,所以很多人毫無頭緒自己該做甚麼,可能也沒能力做甚麼。

首先,為了分析這台儲存伺服器的效能,我們還特別打造了效能分析工具。黃書政同學,做出了一個利用GCC編譯器在產生機器碼時在程式的進入點和離開點處插入追蹤器以產生追蹤資料,用以觀測程式執行流程的方法。這個工具幫助我們精確地分析儲存伺服器上軟體的流程,黃同學也以此作為碩士論文:

【一個針對嵌入式軟體的追蹤和效能分析技術 (Developing new tracing and performance analysis techniques for embedded applications) / 黃書政(Shu-Jheng Huang), 2007】

當年追蹤分析系統最強的工具之一,是SUN的 Solaris kernel team所開發的DTrace,這個技術後來也被IBM拿去做Linux上的SystemTap。在黃書政同學開發新工具之時,林以迪同學研究如何利用DTrace來自動化分析應用軟體的效能,後來他的分析方法幫助到這個廣達的計畫,也以此為題寫了碩士論文:

【利用DTrace在Solaris系統上以自動化方式建立應用軟體的效能模型與分析 (Automating server application performance modeling process on Solaris system via D-trace and trace-driven analysis) / 林以迪(Yi-Di Li), 2007】

要知道,一般的效能分析多半是針對CPU-intensive的應用,探討CPU的使用,然而儲存伺服器的重點不只在CPU上,還包括磁碟和網路這類的I/O動作,這些是一般工具和普通工程師較難對付的部分,所以陳人豪製作了一個量測和模擬的框架,讓我們能評估I/O部分的問題,這也是他的碩士論文題目:

【系統層級的效能量測與評估框架 (System-level performance profiling and simulation framework for I/O-intensive applications) / 陳人豪(Jen-Hao Chen), 2007】

不要忘了, 一個複雜的多工系統不只是一次只做一個工作,還有多個核心來做多項工作,所以張筱薇同學 (實驗室唯一的女生!)選擇做這個最硬的研究工作,利用SystemC做出一個能夠快速分析多執行緒應用程式效能的模擬環境,令我感到非常難能可貴:

【設計與實作一個快速分析多執行緒應用程式效能之多核心系統模擬環境 (A rapid simulation environment for application performance estimation on parameterized multi-core/multi-threading architecture models) / 張筱薇(Hsiao-Wei Chang), 2007】

搞清楚效能的問題所在,接下來就是設法優化(optimize)其效能了。怎麼做呢? 我們實驗室研究效能優化,著重的是那些編譯器做不到的事情,而不是那些編譯器可做的事情,這是跟那些做編譯器研究的實驗室最大的不同。我們認為,天底下有太多編譯器做不到的最佳化工作,厲害的人可以手動搞定。

舉例來說,編譯器往往不知道該怎麼優化程式,所以提供一大堆選項讓開發者來選。當時的GCC有42個可能影響效能的選項,請問要怎麼選? 至少有2的42次方種組合,不可能暴力搜尋。陳奇孟同學在十年前就採用的現在最紅的「機器學習」來幫助編譯器自動找到最佳的選項集合:

【以機器學習快速的搜尋最佳編譯器選項集合 (Finding the best compiler optimization option set rapidly via machine learning) / 陳奇孟(Chi-Meng Chen), 2007】

然而,一般的搜尋方式,只適用於普通的應用程式,為了最佳化這個儲存伺服器的核心,每次編譯過後必須重開機測試效能,所以非常耗費時間,所以林煌森同學針對這個議題設計了一套自動化搜尋機制:

【自動搜尋編譯器選項最佳設定 : 應用於儲存伺服器核心模組效能之提升 (Automatic selection of compiler options for performance optimization on the kernel modules of a storage server) / 林煌森(Huang-Sen Lin), 2007】

適當選用編譯器的選項,的確提供了效能,但真正讓這套儲存伺服器效能起飛的是對於軟體架構的改進。然而,如果沒有蒐集足夠的效能資料和對於系統完整的分析,根本不可能碰觸到軟體架構的改進,所以最佳化的成果還是得歸功於整個團隊的合作。

陳嘉翔同學在這套儲存伺服器中,加入了高效率的快取索引表,大幅改善了原本極為沒效率的搜尋機制。誰知道這套廣達花錢買來的軟體,會寫得這麼沒效率呢? 陳同學的碩士論文:

【磁碟陣列系統之最佳化研究 : 快取索引表之設計與實作 ( Performance optimization on a RAID system ; design and implementation of a fast indexing table for disk caching) / 陳嘉翔(Jia-Siang Chen), 2007】

吳建成同學算是集大成者,他不僅加入了預測使用者未來的需求做預先提取(prefetch)的機制,同時負責整合和評估最終的結果,寫出他的碩士論文:

【評估快取與預先提取在儲存伺服器上的效能 (Performance evaluation of caching and prefetch strategies on a storage server) / 吳建成(Chien-Cheng Wu), 2007】

總合來說,這些研究,讓儲存伺服器的極速提高了將近十倍,而廣達只贊助了我們一百多萬台幣的研究經費 ,這不能怪廣達小氣,這對當時沒有國科會經費、又沒有名氣的我來說,這筆錢讓我能夠購買設備和供養學生;不過這點經費大概只能僱一位菜鳥工程師做一年研發的成本,如果比起當年廣達贊助MIT的研究經費以及給台大的捐款,所以我想廣達的經費應該是大大值回票價了。

但或許廣達不這麼看,這才是當時身為菜鳥助理教授的我,最為感到不值的部分。那個儲存伺服器研發部門,被長官要求要自負盈虧,為了要在短期內謀求利潤,只好開始刪減「不必要」的研發開支,所以在一年的研究期間過後,就沒有下文了。

所以我說國內業界短視近利、不懂軟體研發,這是我親身經歷的第一個實例。X先生應該是站在我們這邊,但他當時也是小咖,即便覺得應該持續贊助我們,也改變不了大長官的旨意。X先生目前在某大公司擔任處長,前天開會中發言強調軟體開發的重要性,支持提早做軟體的開發,我聽了非常窩心,希望業界有更多懂得系統和軟體的人才。

另外,在學術方面,我指導這批第一屆的研究生做實務研究,在2007年產出了八份碩士論文,忙得不亦樂乎,隨後將部分論文改寫投稿,在2008才發表兩篇國際會議論文(註一) (註二),2009年一篇(註二),投資報酬率極低,發實務研究的論文難度高,是其他領域的人所不能夠理解的。

首先,關於這類系統研究,教導學生基本知識和技能、指導學生做研究、解決實作問題、驗證研究結果,原本就可能要比其他領域花更多心力;其次,要寫一篇優質的實務研究論文,必須能言善道、精準犀利,但大多數學生推導數學公式可以,寫程式可以,卻不大會用英文談論設計方法、分析利害得失、探討關鍵議題、展現系統優勢,如果要在國際會議或期刊上發表論文,我們必須在論文寫作上花很多時間。另外,寫論文時還要顧及與廠商的保密協議,必須遮遮掩掩的,當然更不利於發表。

所以我說國內學術界在數SCI論文數量的同時,把很多教授和學生逼上找尋容易發表論文的途徑,像這類我認為很有價值的產學合作,在那個SCI掛帥的年代,因為事倍功半,所以被年輕教授們視為畏途。

業界短視近利,加上學術界SCI掛帥,我對於這個系統優化的產學研究案的積極投入,算是非常吃力不討好,唯二能夠安慰自己的,第一是教出一群能實作的研究生,第二是這個研究案讓我更清楚我們能做出業界需要的前瞻研究,只是時機未到。

至於個人的學術成就,懂的人就懂,對於那些只會算論文數量的人,我也不冀望他們的理解。但上述的情況在這些年嚴重阻礙台灣的產學發展,造成前瞻研發不務實、論文氾濫的現象,甚至影響教育品質和人民生計。然而,產業仍不乏有能人,學界還是有志士,只要堅持走對的方向,我們還是有可能走出困境的。



(註一) Shih-Hao Hung, Chia-Heng Tu, and Chien-Cheng Wu, Optimizing the Embedded Caching and Prefetching Software on a Network-Attached Storage System, in Proc. 2008 IEEE/IFIP International Conference on Embedded and Ubiquitous Computing (EUC) , pp.152-161, Shanghai, China, December 17-20, 2008.

(註二) Shih-Hao Hung, Shu-Jheng Huang, and Chia-Heng Tu, New Tracing and Performance Analysis Techniques for Embedded Applications, in Proc. the 14th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications (RTCSA) , pp.143-152, Kaohsiung, Taiwan, August 25-27, 2008.

(註三) Shih-Hao Hung, Chia-Heng Tu, Huang-Sen Lin and Chi-Meng Chen, An Automatic Compiler Optimizations Selection Framework for Embedded Applications, in Proc. the 6th International Conference on Embedded Software and Systems (ICESS) , pp.381-387, HangZhou, Zhejiang, China, May 2009.

2 則留言: