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


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

2010年3月31日 星期三

如何做研究?

如何做研究?想必是大家作為研究生都關心的切身問題。我們有一陣子沒有談這個了,有些同學自我摸索也進展到不錯的境界,也許有些同學會希望有本書可以引領快速入門。

有本書叫做Research Papers For Dummies,2002年出版,已經有點舊了,介紹的比較像是大學部的專題研究等級的技能。如果真的沒有時間,但是想很快地概括了解研究需要注意到哪些東西,就翻翻這本書吧。

最近看到一些朋友在推這本書:Research Design: Qualitative, quantitative, and mixed methods approaches (3rd Ed)(2008),我沒看過,但這本書在Amazon.com上面評價非常高,我覺得實驗室應該買一兩本給大家參考。

另外,不小心逛到這個網站(研究生2.0)
http://newgenerationresearcher.blogspot.com/
也有一些不錯的參考資料。

Maxwell (1996) 提出的九個作研究的核心問題,對初寫 proposal 的人應該很有幫助:

1. What do we need to better understand your topic?
2. What do we know little about in terms of your topic?
3. What do you propose to study?
4. What are the setting and the people that you will study?
5. What methods do you plan to use to provide data?
6. How will you analyze the data?
7. How will you validate your findings?
8. What ethical issues will you study present?
9. What do preliminary results show about the practicability and the value of the proposed study?

以下是學生補充的相關網站:


How to Write Your Thesis
http://www.ldeo.columbia.edu/~martins/sen_sem/thesis_org.html

中山老師的收集
http://wmi.ee.nsysu.edu.tw/enter/index.php/研究生學習態度

在IBM Watson Research慶祝指導教授Ed Davidson 70歲大壽的workshop

剛收到這則通知,我的指導教授Ed Davidson今年70歲了,學生們要聚集起來幫他慶生,就決定今年五月在IBM Watson Research Center辦一個整天的workshop,名為Pioneering Contributions to Computer Architecture (PCCA)。  Ed是一個非常好的老師和學者,他讓我真正學到做人跟做研究應有的態度,也成為我盡力去仿效的對象。



Hello All, (apologies if you receive two copies of this invitation)

Online RSVP may be found at 
https://www.eecs.umich.edu/eecs/etc/pcca/index.html
Ed Davidson - Professor Emeritus, teacher, friend, confidant and philosopher – turned 70 years old in December, and some of his former students and colleagues would like to honor him with an IBM Watson Workshop and dinner on Memorial Day Weekend, May 28 through 30, 2010. A draft agenda is below. 




Pioneering Contributions to Computer Architecture (PCCA)
An IBM Watson Workshop in honor of Professor Edward S. Davidson
- 70th Birthday Celebration -
 Thursday, May 27, 2010
Informal Reception
Hosted by Pradip and Shamila Bose
Time/Location TBD

Friday, May 28, 2010
Main Auditorium and 26-004/014/024: IBM T. J. Watson Research Center
Yorktown Heights, NY
 
TENTATIVE AGENDA
9:00 – 9:30 a.m.: Arrival of guests; badge registrations, Watson Lobby Entrance
9:30 – 9:40 a.m.: Opening Remarks, Dr. Tilak Agerwala, VP Systems, IBM Research
9:40 – 10:00 a.m.: Welcoming Remarks by Jarir Chaar/Pradip Bose/Viji Srinivasan
Session 1  - co-chaired by Phil Emma and Pradip Bose
10:00  – 12:00 Noon
The Illinois Days - Computer Systems Group@Coordinated Science Lab
10:00 – 11:30 a.m.:
Tributes by:
·      Speaker 1 [professor from UIUC/Other]
·      Speaker 2 [professor from UIUC/Other]
11:30  – 12:00 noon:
·      5-minute anecdotal tributes by ex-students, other colleagues from the Illinois era
LUNCH: 12:00 noon – 1:30 p.m. @ 26-004/014/024
Lunch Speakers (15-30 minutes each): to talk about Ed & Ellie in general
·      Speaker 1 - TBD
·      Speaker 2 - TBD
Session 2 - co-chaired by Jarir Chaar and Viji Srinivasan
1:30  – 3:30 p.m.
The Michigan Days
1:30  – 3:00 p.m.:
Tributes by:
·      Speaker1 [professor from UM/Other]
·      Speaker2 [professor from UM/Other]
 3:00  – 3:30 p.m.:
·      5-minute anecdotal tributes by ex-students, other colleagues from the UM era
COFFEE BREAK: 3:30 – 4:00 p.m.@26-004/014/024
Session 3 - chairs TBD; perhaps the senior-most student(s) of Ed in attendance
4:00 – 5:00 p.m @26-004/014/024)
Closing Tributes:
·      Mementos presented to Ed and Ellie on behalf of ex-students
·      Others in the audience wanting to present 5-minute tributes
·      A few words from Ed and Ellie
6:30 – 9:00 PM: Dinner Reception - location: TBD
 
Saturday, May 29, 2010
ON YOUR OWN
Sunday, May 30, 2010
 Informal BBQ at the home of Jarir Chaar
Time TBD

2010年3月29日 星期一

給修Linux Systems, Kernel and Applications課的大學部學生的信

學生來信問:

雖然我對電腦已經小有了解
( 在電機系修過計算機結構 )
但是還是看了不太能吸收

原本老師在課堂上提出報告這個作業的要求是說要深入調查

但是我現在對一些可能對大家來說是基礎的知識還不太了解
而很多名詞只是聽過而已
要在短時間內忽然間上手而進行深入調查似乎是有點困難的事
( 可能演變成在用自己不懂的邏輯分析自己不懂得主題... )


我的回答:

知識不足,就由這門課的學習中補足,這是我教這門課的目的。如同我上周課中講到的,請同學們不要擔心報告或是期末專題做不好,只要有認真去學習,把一個自 己有點基礎有興趣的題目完整搞清楚,就算是對你自己有所交代。你還是大學生,我不會用研究生的標準來評估你,這點你可以放心。

電機系的同 學,由於必修課很重,有不少像你這樣,到了大四才有機會接觸Linux和高階嵌入式系統,這點我很清楚,因為我也是電機系的。國內的門戶之見很重,雖然是 電資學院,但是電機資訊各系所有不少人是只懂自己領域內的東西,很少有人是軟硬兼修。 很高興看到你願意花時間學習,那就很不錯了。

(以下關於作業的具體建議省略)

學生的回應:

(找到方向,準備做某方面的報告等等省略)


我很想成為軟硬兼修無所不會的人
以後在工業界各領域都走走時常替人解決問題
多方見識體驗
感覺教授已經相當程度地完成了我的目標了呢!



我的感想:

能夠主動學習的學生已經越來越少,不大能夠跟當初我們一票人沒有種種誘惑之下,可以熱情十足地投入在學習上相比,能看到大學生主動提問,也對未來有些想法,算是頗難得的。

Professional Multicore Programming

關於Multicore Programming,最近一直很受到重視,我在學校教的幾門課,還有到業界的演講,不少時候都圍繞在這個議題。要把Multicore Programming的功夫練好,非常不容易。光是修一兩門課,也只能入門而已。嚴格來講,要軟硬體兼修,才是真功夫。不過,這個年頭,講究速成,要軟體的人去搞懂硬體,讀好幾本computer architecture的書,簡直要命。底下這本書,Professional Multicore Programming,算是比較新的書,如書名所述,比較偏實用性,較適合想速成的人當參考。

Professional Multicore Programming - Design and Implementation for C++ Developers
Cameron Hughes and Tracey Hughes
Wiley Publishing Inc. 2008

Introduction ............................................................................................... xxi
Chapter 1: The New Architecture .................................................................. 1
Chapter 2: Four Effective Multicore Designs ................................................. 19
Chapter 3: The Challenges of Multicore Programming ................................... 35
Chapter 4: The Operating System’s Role ....................................................... 67
Chapter 5: Processes, C++ Interface Classes, and Predicates ....................... 95
Chapter 6: Multithreading .......................................................................... 143
Chapter 7: Communication and Synchronization
of Concurrent Tasks .................................................................. 203
Chapter 8: PADL and PBS: Approaches to Application Design ...................... 283
Chapter 9: Modeling Software Systems
That Require Concurrency ......................................................... 331
Chapter 10: Testing and Logical Fault Tolerance
for Parallel Programs .............................................................. 375
Appendix A: UML for Concurrent Design .................................................... 401
Appendix B: Concurrency Models ............................................................... 411
Appendix C: POSIX Standard for Thread Management ................................. 427
Appendix D: POSIX Standard for Process Managemnet ............................... 567
Bibliography .............................................................................................. 593
Index ........................................................................................................ 597

2010年3月27日 星期六

The Intel® Manycore Testing Lab - cloud computing on 32 cores for academia.

又收到Intel的email... 非常積極地推動multicore和cloud,看起來是提供學術界資源,但這個作法基本上是要學界先提研究計畫,他們只支助所謂『最好』的計畫,好像在抽獎一樣,其實試想從學界吸取ideas。難保計畫內容不被抄襲,所以大多數都是拿做過的東西去提計畫。另外有個『OpenCirrus Cloud Computing Testbed』的類似研究平台,也是差不多 -- 你想要免費的平台,他想要你的ideas。我們還是自己來建構自己的平台比較實在...



INTRODUCING…

The Intel® Manycore Testing Lab
cloud computing on 32 cores for academia.

Have you ever wished you could get your hands on the latest technologies? Use it for classroom demonstrations?  See if your code scales?
The Intel Academic Community has a new opportunity for our members including remote access to a 32 core software development environment. Transform your curriculum and give your students a leading edge by providing them with experience on manycore systems… absolutely free!  Scheduling for members begins June 2, but contact us right away if you’d like to register. 
Enter the 32 Core Testing Plan Contest!
You (or your students) could get access to the Intel® Manycore Testing Lab as early as next month.  Simply tell us about the project you would like to test.  The five (5) best proposals* will receive access to the complete testing environment, as well as Intel engineering and marketing support to ensure maximum practical experience, AND full documentation (for great resume building). This is a great opportunity for student projects. Get more information and enter now! Entries are due April 23, 2010.
Learn more about the Intel® Manycore Testing Lab.



Think Parallel… Teach Parallel
Intel Academic Community

【雲端科技論壇】 林百里董事長、李琳山院長與青年學子對談

4/12 12:00-14:00 台大博理館101演講廳
http://www.csie.ntu.edu.tw/~hungsh/pub/cloud-quanta.jpg

2010年3月26日 星期五

雲端計算學分學程規劃

有同學問起,要學習雲端運算要修些什麼課,看什麼書?剛好我們正在規劃『雲端運算學程』的草案,裡面有必修和選修課的大綱,提供給同學參考:

必修課
  • 雲端運算概論(三學分、新開課程) 
  • 雲端運算專題(三學分、新開課程) 
核心課
  • 系統程式(三學分) 
  • 計算機網路(三學分) 
  • 雲端計算安全(三學分、新開課程) 
  • 網路及平台服務程式設計(三學分、新開課程) 
  • 分散式系統(三學分、新開課程) 
  • 平行與分散式程式設計(三學分、新開課程) 
開設課程的暫定大綱如下:

雲端運算概論
Introduction
Grid computing
Utility computing
Infrastructure as a service (IaaS)
Machine virtualization and platform virtualization
Platform as a service (PaaS)
Software as a service (SaaS)
Cloud computing business model

系統程式
UNIX-like systems
System programming
System calls
File system management
Process management
Inter-process communication
Unix signal processing

計算機網路
Principles of networking
Protocols
Internet
Network services

雲端計算安全
Cryptography in computer security
Network security
Network protocol
Network defense mechanism
Malware, computer viruses, spyware, and key-loggers
Web security
Network security services
Security as a service
Anti-virus mechanism

網路及平台服務程式設計
Software-as-a-service concept
Middleware
Network protocol
Service oriented architecture (SOA)
Script programming
Google App Engine

分散式系統
Distributed processing
Distributed algorithms
Distributed file systems (including lab session)
Distributed database (including lab session)
GFS
BigTable
Hadoop HDFS
Hbase

平行與分散式程式設計
Parallel algorithms
MapReduce
MPI
OpenMP
CUDA

台大的雲端運算學程,摘錄自「台大校園焦點新聞」

以下摘錄自「台大校園焦點新聞」,2010.02:

根據市場研究機構IDC預測,到了2012年,全球企業在雲端運算上的投資,將從08年的一百六十億美元大幅提升到四百二十億美元。跟隨此波雲端運 算的趨勢,軟體銷售與運作已漸漸由單一主機轉向在大量平行運算的網雲上運行。而在這樣的經濟發展模式及商業策略影響之下,如何提升學生競爭力與業界接軌更 顯重要。同時,在金融海嘯衝擊之下,如何減少資訊部門的投資,持續提供高品質的資訊服務已經是刻不容緩的議題,因此雲端計算成為資訊產業新興重要課題之 一。藉由雲端計算的技術,企業能以合理的價格,藉由網路獲取計算資源資料服務,以及軟體服務,軟體業者則可藉由雲端計算技術,集中資源發展軟體系統,不需考慮後端平臺的整合與維護。

本校電機資訊學院將與趨勢科技合作,由趨勢科技贊助開設「雲端計算趨勢學程」。本學程將提供三個服務層次的課程,使同學對雲端計算有通盤的了解,藉以使同學能夠從事雲端計算的研發與應用。

同時,趨勢科技宣布凡是修畢「雲端計算趨勢學程」結業的學生,不需經面試可直接參加雲端新人培訓課程,通過課程測驗合格後即可成為趨勢科技的新鮮 人,相信此舉將讓學術培育與職場應用一氣呵成,使學界教育與業界需求無斷層。本校李校長表示:「在各大科技產業積極發展雲端之際,優秀雲端運算人才的到位 將是臺灣能否競逐雲端世界舞臺、扮演關鍵角色的決定性因素。臺灣大學很榮幸能夠領先學界,特別開設『雲端計算趨勢學程』,除了堅強的師資陣容和教材規劃, 相信透過趨勢科技的產業經驗和技術專業,必定能為傳統學術課程增添寶貴的實用價值,開創更宏觀的視野!」

本校電機資訊學院院長李琳山也補充說明:「這是個很難得的機會,相信這群嚴格篩選後進行修業的在校生,將能藉由完整的雲端運算多層次課程與到趨勢科技的實習機會,進一步修煉成為臺灣最精銳的雲端菁英。」趨勢科技文化長陳怡蓁期望:「向來積極投入資訊人才培育的趨勢科技,延續多年長期在程式競賽活動規 劃的資訊人才養成之精神,這次與臺灣大學電機資訊學院合作、贊助開設『雲端計算趨勢學程』,相信更能有效的完整實踐趨勢科技對培育人才的想法。」


2010年3月22日 星期一

Android 架構、開發工具與虛擬平台

(這篇文章是我接受網通國家型計畫邀請,於2009.10和我的學生廖彧宏所合寫。)

引言

Google於2008年正式公開的手機作業系統Android,大幅度降低廠商發展智慧型手機系統的複雜度。由於使用Android並不需要支付 Google軟體授權費用,許多手機廠商均對Android抱持支持的態度。台灣業界長期代工設計手機,硬體方面已有相當基礎,Android的出現,正 是台灣業界的契機。Android採用開放原始碼的技術與策略,讓全世界的開發人員都有機會深入了解並且改善其內部,使得Android成為熱門的研究平 台,因此本文簡介Android平台的架構以及Android軟體開發工具中的虛擬平台,以拋磚引玉,希望國內學界業界在開發Android應用的同時, 能夠更進一步研發與改進Android平台,讓台灣擁有世界一流的技術。

點閱文章內容

2010年3月19日 星期五

IBM徵求軟體研發人才 - Performance, Security, Linux Kernel

IBM最近在台灣擴大軟體研發團隊,也和我們談妥合作計畫,在雲端運算的趨勢中,研究及開發適用於虛擬主機的網路安全相關的技術。IBM高階主管在洽談中也提到適任的人才難尋,這也是台灣現在所面對的困境。長久以來,業界專注於低門檻的系統組裝和組件開發,學界專注論文發表的數量,「系統與軟體工程」沒有受到應有的重視。今天業界投入「智慧手機」和「雲端運算」,要建構有足夠競爭力的團隊,除了嚴重缺乏基層系統軟體研發人才,更缺少有經驗的中高階研發主管。

系統與軟體工程,要懂得東西太多了,絕不是一兩年的苦練,就能夠造就出人才。以往的短視,造成今天的情況,許多教授和學生還濛濛懂懂,檯面上的長官只會呼口號講場面話,有可能解決問題嗎?令人想起以前的孫運璿和趙耀東,今天有人能為台灣找到下一個黃金時代嗎?

回想我五年前剛回國時,見到這情況,比對自己在學界和業界的經驗,真是難以理解。現在對於台灣的產學生態多方瞭解之後,也只能習以為常了。君不見,許多所謂大型的研究計畫(還記得「太空計劃」嗎?),到後來都不了了之。在此大環境中,為了個人理想,也只有盡一己綿薄之力,做個人認為是對的事。花費兩年時間和精力來訓練碩士研究生,能夠在最後半年做出一點研究成果就算是難得了,必須靠著不斷累積和苦心經營,才能有真正重大的創新。大部分的時候,這些可說是賠本生意;然而,來學校教書就不要計較這些利害得失,不是嗎


以下IBM Jeffery 2010.03.18的來信,徵求的人才,正是我一直在培養的。放在這裡給大家參考,也不妨多想想在學校該學些什麼。



Hi Professor,

Here is the list of job opportunities we currently have for appliance related projects. Please help to forward these opportunity to anyone you think appropriate.
The resume can send to our HR contact (ivanl@tw.ibm.com) , or me : )

Thank you !

1. Software Performance Analyst:

Job description
Employees in this role use mathematical and benchmarking techniques to analyze the performance characteristics of a running software system, and make tuning and testing recommendations to improve those characteristics. In addition, employee will also perform code inspections and use profiling tools in order to find patterns causing less than optimal performance. They interpret data from performance tests and use this information in capacity planning and client support.   

Required   
    * Bachelor's Degree
    * At least 2 years experience in Java programming language skills with debugging and concurrency test experience.
    * At least 1 year experience in IBM product skill including WAS, WPS, WESB
    * At least 1 year experience in Operating system - AIX, Linux and Windows
    * At least 1 year experience in Database - DB2 and Oracle. Ruby
    * At least 6 months experience in Performance measurement and turning
    * English: Fluent
    * Chinese traditional: Fluent

Preferred   
# Master's Degree in Information Technology

2. Software Performance Engineer

Job description
This role executes the tasks required to fully test an IBM product or system to ensure it functions according to specifications and customer requirements and meets the business needs. Testing activities cover all aspects of the product/system including function/component, performance, system, regression, and service. People in this role must demonstrate knowledge of the domain that they are responsible for testing. For example, a functional tester must have deep knowledge of the function that they are responsible for. A solution tester must have knowledge of the overall solution. Knowledge of the target market for the product and the customer environment is necessary. They must also be familiar with testing methodology, tools and techniques. Software Testers may set up test environments, design and plan testing activity, develop test cases/scenarios/use cases, and/or execute required testing. Testers also investigate problems uncovered during testing, recreating those problems as appropriate and executing fix validations. They provide feedback on usability, serviceability and documentation and report status to the appropriate audience. This position will includes developing new tests as well as executing and maintaining existing tests. Perform maintenance and ongoing operation of physical QA lab setup and configuration. Maintain and execute automated tests using scripting and programming languages. Main focus for this position is to Server Product line as define in the requirement and Test Plans.   

Required   

    * Non-Degree Program
    * At least 1 year experience in Virtualization technology (e.g. VMware, Windows Hypervisor, Xen and KVM)
    * At least 1 year experience in troubleshooting skills in MS Windows, Linux and UNIX environments
    * At least 1 year experience in TCP/IP networking and troubleshooting skills
    * At least 1 year experience in developing Test Plan and Test Cases
    * At least 1 year experience in developing Test Automation software and good understanding of automation framework.
    * At least 1 year experience in Java, VBScript, Perl or Shell Scripting
    * English: Fluent
    * Chinese traditional: Fluent

Preferred   
# Master's Degree in Information Technology
# At least 4 years experience in Virtualization technology (e.g. VMware, Windows Hypervisor, Xen and KVM)
# At least 4 years experience in troubleshooting skills in MS Windows, Linux and UNIX environments
# At least 4 years experience in TCP/IP networking and troubleshooting skills
# At least 4 years experience in developing Test Plan and Test Cases
# At least 4 years experience in developing Test Automation software and good understanding of automation framework.
# At least 4 years experience in Java, VBScript, Perl or Shell Scripting
       
Additional information
* Hands on experience configuring server hardware and deployment of Linux, UNIX and MS operating Systems.
* Excellent English communication and listening skills. Someone who has prior experience working with US customer/Partners.
* Good understanding of Software development / Test life cycle.
* Good understanding for Security Software testing.
* Travel ready to Atlanta.   

3. Senior Software Developer - Linux and Kernel programmer

Job description
Employees in this role use design documentation, such as Functional Programming Specifications and high level design documents to implement the identified components. They also ensure that the implemented components are unit tested and ready to be integrated into the product. Software developers also provide fixes to defects identified by the verification team during the software development life cycle.

We are looking for people with strong background in computer science, that are interested in a software development role. We are seeking people from Engineering, Computing, and IT disciplines. Our ideal candidates must have strong technical skills, a passion for technology and software, strong teaming skills and show leadership potential. Must be able to work in a high energy environment and exhibit creative thinking and collaboration. Having the ability to turn ideas into reality, communicate effectively, and work closely with others in teams around the world is essential. Our positions offer an excellent opportunity to develop technical skills with a multi-disciplinary team of developers, designers and business professionals focused on the next generation of software. You will gain real life experience with a corporate position that will not only impact IBM’s bottom line but also influence the future of software. Previous work or co-op experience on software project is a plus.

Job requirement:
- Programming fundamental: Data structures, Algorithms, ability to produce quick prototypes, IPC, Memory models, Process and Threads, Globalization, Ability to convert marketing requirements to code. Design and develop new classes to complex modules and provide interfaces and definitions. Strong programming in multithreaded and multi processors (or cores) environments.

- Programming Languages: C, C++ Ability to reverse engineer application/code. Should have sound understanding on various (popular) toolkits, SDK, APIs and Kernel development   

Required   

    * Bachelor's Degree in Information Technology
    * At least 5 years experience in Network Programming
    * At least 5 years experience in Linux programming with c/c++
    * At least 5 years experience in Linux kernel
    * English: Fluent
    * Chinese traditional: Fluent

Preferred   
# Master's Degree
       
Additional information
* Proficient in English/Chinese communication is required.
* At least 5 years on network programming experience is plus.
* Have network security experience is plus.
* Full product lifecycle management   

4. Senior Software Developer for network security - Microsoft Windows programmer

Basic requirements for this job:
Programming fundamental: Data structures, Algorithms, ability to produce quick prototypes, IPC, Memory models, Process and Threads, Globalization, Ability to convert marketing requirements to code. Design and develop new classes to complex modules and provide interfaces and definitions. Strong programming in multithreaded and multi processors (or cores) environments.

Bachelor's Degree in Information Technology
At least 5 years experience in Testing on UTM or IPS
At least 5 years experience in Linux shell scripts
At least 5 years experience in Configuration/verification on security product
English: Fluent
Chinese traditional: Fluent

5. Senior Software Testing Engineer - Network Security
Bachelor's Degree in Information Technology
At least 5 years experience in Testing on UTM or IPS
At least 5 years experience in Linux shell scripts
At least 5 years experience in Configuration/verification on security product
English: Fluent
Chinese traditional: Fluent


-- Jeffrey

關於雲端計算 Cloud Computing

前言

時至今日,上至行政院長,下至房地產廣告,「雲端運算」一詞,像是「奈米科技」一般,許多人朗朗上口,我們資工系搞系統的內行人,看了有些人大言慚慚,不禁啞然失笑,甚至搖頭嘆息。台灣有多少受過高度訓練,有實務背景的優秀軟體工程和資訊系統人才,能夠一起努力把雲端運算這塊餅做好做大?現在,產官學很多人都來搞雲端運算,文章東抄西抄的,說的比唱的好聽,很多人看了幾篇文章,瞬間都變成了專家了。實際上,到底拿得出什麼東西出來呢?我們不是要唱衰這個局面,而是希望大家務實一點,一步一腳印從根本技術面紮根,才會真正成功。

事實上,不只是在台灣,全世界都在講cloud,還有很多不同的講法。很多人把cloud講得太神了,幾乎是無所不能。吹牛的、騙錢的浮誇(hype)滿天飛,惹來不少物議。重量級的批評者,如以GNU計畫聞名的Richard Stallman警告大家cloud是個大陷阱,Oracle的Larry Ellison把cloud批評的一文不值。實際的情況究竟如何呢?

個人還在學習階段,因為雲端運算很好玩,相關的基礎技術多得不勝枚舉,正好適合個人這種喜歡軟硬通吃、東拉西扯的習性。還好身在學術界,不需要聽公司的命令行事,可以比較自由找尋研發方向。「雲端運算」的商機究竟如何,必須看個案來決定,不可人云亦云。極端保守地說,學習雲端運算的學生,若是本身資質不錯,博學多聞,未來有很大的成功機會。

個人傾向從「系統設計與運作」的觀點來看雲端運算,如何將成千上萬台廉價的電腦,經過適當的網路連結起來,加上高效能分散式容錯的檔案儲存系統,結合主機虛擬化技術和分散式平行處理,達成系統運作的目標:降低系統及運作成本、縮短處理時間、確保資料儲存、服務大量使用者等等。要建構一個好的系統並且讓他保持在最佳的執行狀態並不容易,Google和Amazon內部用了多少軟體工程師和研發人員,才能有今天的局面?

雲端運算技術?

什麼是所謂的雲端運算技術?其實,雲端運算能夠成功地提供前所未有的服務或計算能力,並不是單單靠著某一兩項新技術。從系統層面來看,雲端運算是累積結合許多技術之後,所產生的一種概念。概念很簡單,讓使用者和應用開發者都能夠很方便地運用在雲深不知處的彼端所提供的服務。還記得十年前紅極一時的電子商務,五年前家喻戶曉的P2P網路,都只是抽象的概念而已。沒有在背後支持的基礎技術,也不會有今天的雲端服務。

那麼,雲端服務的背後,有哪些基礎建設呢?

  • 計算能力越來越強,售價確越來越便宜的低階伺服器
  • Internet、行動網路(3G)與智慧型可上網的行動裝置(iPhone,電子書)的普及
  • 開源碼與高效率的Linux作業系統,網路通信應用中介軟體
  • 虛擬機器的成熟,高效率虛擬化技術
  • 大容量的記憶體和磁碟機,高效率的分散式檔案系統
  • 網路時代使用者與服務提供者所建構與累積的大量資料
  • 使用者對網路服務的信賴度與依存度與日俱增
  • (還有許多,無法一一列舉)
所以,雲端運算所牽扯的技術層面可以是非常遼闊,我們要如何著手學習呢?這也是許多學生所面臨的難題。

技術層面

先把一些個人認為重要的基礎技術列舉如下,日後有空再加以補充或引申。
  • Programming on Linux systems
  • Linux operating system and kernel
  • I/O, Storage, network
  • Computer architecture
  • Parallel processing
  • Distributed computing
  • System-level performance monitoring
  • Performance analysis and tuning
  • Software engineering
  • Virtualization technology
  • Network security

(未完,待續)

指導學生及作品

Ph.D. Students
  • 涂嘉恆 Chia-Heng Tu
    Research Topics: Performance Tools and Analysis via a Virtualization Environment
    • Shih-Hao Hung, Shu-Jheng Huang, and Chia-Heng Tu, New Tracing and Performance Analysis Techniques for Embedded Applications, in the 14th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications (RTCSA 2008), Kaohsiung, Taiwan, August 25-27, 2008. (Abstract)(PDF File)
    • Shih-Wei Liao, Shih-Hao Hung, Chia-Heng Tu, and Jen-Hao Chen, Scalable Lossless High Definition Image Coding on Multicore Platforms, in 2007 IFIP International Conference on Embedded and Ubiquitous Computing, Taipei, December 17 - 20, 2007. (Abstract)(PDF File)
  • 戴邦炘 Ban-Sin Dai
    Research Topics: Multicore Simulation and Virtual Platforms
  • 謝正鵬 J.P. Shieh
    Research Topics: Virtual Machines, Network Security and Cloud Computing
  • 李正邦 Cheng-Ban Lee
    Research Topics: Performance Modeling of Wireless Sensor Networks
  
Master Students, Joined in 2009
  • 李慧娟  Hui-Chuan Lee    
  • 黃昱文  Yu-Weng Huang    
  • 邱柏勳  Po-Hsun Chiu  
  • 張育碩  Yu-Shuo Chang
  • 梁福田  Fu-Tien Liang
  • 陳裕偉 Yu-Wei Chen 
  • 徐名蔚  Ming-Wei Hsu

Master Students, Joined in 2008
  • 蕭叡鴻  Jui-Hung Hsiao    
  • 楊秋盛  Qiu-Cheng Yang  
  • 林俊廷  Chun-Tin Lin
  • 周威廷  Wei-Tin Chou
  • 蔡東杰  Tung-Chieh Tsai
  • 林庚佑  Gen-You Lin

Master Students, Joined in 2007
  • 林宗慶  Zong-Cing Lin     
    • Big Integer Factorization on Parallel Computers, Master Thesis, August 2009
  • 楊文隆  Wen-Long Yang  
    • Development of a High-Performance Inter-processor Communication Library for Multicore Platform, Master Thesis, August 2009
  • 許文昌  Wen-Chang Hsu
    • Fast and Non-intrusive Profiling of Application Performance with a Virtual Platform, Master Thesis, August 2009            
  • 張皓翔  Hao-Siang Chang  
    • Design and Software Support of Hybrid Storage Devices, Master Thesis, August 2009      
  • 陳俞任  Yu-Jen Chen
    • Design and Implementation of Network Attached Storage Servers with the IBM Cell Platform, Master Thesis, 2009
  • 陳雋中  Chun-Jong Chen
    • Detection of Buffer Overflow Attacks via Dynamic Binary TranslationMaster Thesis, August 2009  
  • 孫天秀  Thean-Siew Soon
    • Trace-based Performance Analysis Tools on a Heterogeneous Multicore PlatformMaster Thesis, August 2009

Master Students, Joined in 2006
  • 蔡承祐   Cheng-yu Tsai
    • Optimization of Dynamic Scratchpad Memory Utilization :A Hardware/Software Approach, Master Thesis, August 2008 (Abstract)(PDF File)
  • 陳江睿   Jiang-Rui Chen
    • A System-Level Performance and Power Simulation Environment for Embedded Computer Systems, Master Thesis, August 2008 (Abstract)(PDF File)
  • 王俊文  Chun-wen Wang
    • Performance Optimization of the Samba Read Service on Linux-based Network-Attached Storage Systems, Master Thesis, August 2008 (Abstract)(PDF File)
  • 黃昶竣  Chang-Jun Huang
    • Performance Optimization of the Samba write serviceon Linux-based Network-Attached Storage Systems, Master Thesis, August 2008 (Abstract)(PDF File)
  • 莊豐旭  Feng-Hsu Chuang
    • Power Estimation for Embedded Processors based on Verilog-to-SystemC Conversion, Master Thesis, August 2008 (Abstract)(PDF File)
  • 陳冠儒  Kuanju Chen
    • Evaluating Task Migration Overhead for Heterogeneous Multi-Core Architectures, Master Thesis, August 2008 (Abstract)(PDF File)
  • 廖彧宏  Yuh-Hung Liaw

Master Students, Joined in 2005
  • 林以迪  Yi-Di Lin
    • Automating Server Application Performance Modeling Process on Solaris System via D-Trace and Trace-driven Analysis, Master Thesis, August 2007 (Abstract)(PDF File)
  • 林煌森  Huang-Sen Lin 
    • Automatic Selection of Compiler Options for Performance Optimization on the Kernel Modules of a Storage Server, Master Thesis, August 2007 (Abstract)(PDF File)
  • 張筱薇  Hsiao-Wei Chang
    • A Rapid Simulation Environment for Application Performance Estimation on Parameterized Multi-core/Multi-threading Architecture Models, Master Thesis, August 2007 (Abstract)(PDF File)
  • 吳建成Chien-Cheng Wu
    • Performance Evaluation of Caching and Prefetch Strategies on a Storage Server, Master Thesis, August 2007 (Abstract)(PDF File)
  • 陳嘉翔  Jia-Siang Chen 
    • Performance Optimization on a RAID System: Design and Implementation of a Fast Indexing Table for Disk Caching, Master Thesis, August 2007 (Abstract)(PDF File)
  • 陳人豪  Jen-Hao Chan 
    • System-Level Performance Profiling and Simulation Framework for I/O-Intensive Applications, Master Thesis, August 2007 (Abstract)(PDF File)
    • Shih-Wei Liao, Shih-Hao Hung, Chia-Heng Tu, and Jen-Hao ChenScalable Lossless High Definition Image Coding on Multicore Platforms, in 2007 IFIP International Conference on Embedded and Ubiquitous Computing, Taipei, December 17 - 20, 2007.
  • 陳奇孟  Chi-Meng Chen 
    • Finding the Best Compiler Optimization Option Set Rapidly via Machine Learning, Master Thesis, August 2007 (Abstract)(PDF File)
  • 黃書政  Shu-Jheng Huang
    • Developing New Tracing and Performance Analysis Techniques for Embedded Applications, Master Thesis, August 2007 (Abstract)(PDF File)
    • Shih-Hao Hung, Shu-Jheng Huang, and Chia-Heng Tu, New Tracing and Performance Analysis Techniques for Embedded Applications, in the 14th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications (RTCSA 2008), Kaohsiung, Taiwan, August 25-27, 2008. (Abstract)(PDF File)
  • 林柏宏  Po-hung Lin 
    • Performance and Power Evaluation for Non-Uniform Cache Architecture, Master Thesis, January 2008 (Abstract)(PDF File)

研究著作列表

  • Yi-Hung Wei, Chuan-Yue Yang, Tei-Wei Kuo, Shih-Hao Hung, and Yuan-Hua Chu, "Energy-Efficient Real-Time Scheduling of Multimedia Tasks on Multi-Core Processors", in the 25th Annual ACM Symposium on Applied Computing (SAC), Sierre, Switzerland, March 22-26, 2010 (EI)
  • Shih-Hao Hung, Chia-Heng Tu, Thean Siew Soon, Trace-based Performance Analysis Framework for Heterogeneous Multicore Systems, to be presented in the 15th Asia and South-Pacific Design Automation Conference (ASP-DAC 2010), Taipei, Taiwan, Jan. 2010 (EI)
  • Yu-Hsien Lin, Chiaheng Tu, Chi-Sheng Shih and Shih-Hao Hung, Zero-Buffer Inter-Core Communication Protocol for Heterogeneous Multi-core Platforms, The 15th IEEE International Conference on Embedded and Real-Time Computing Systems and  Applications (RTCSA 2009), Beijing, China, Aug. 2009 (EI)
  • Shih-Hao Hung, Chia-Heng Tu, Huang-Sen Lin and Chi-Meng Chen, An Automatic Compiler Optimizations Selection Framework for Embedded Applications, The 6th International Conference on Embedded Software and Systems (ICESS 2009), HangZhou, Zhejiang, China, May 2009 (EI)
  • Shih-Hao Hung, Chia-Heng Tu, and Chien-Cheng Wu, Optimizing the Embedded Caching and Prefetching Software on a Network-Attached Storage System, in 2008 IEEE/IFIP International Conference on Embedded and Ubiquitous Computing (EUC 2008), Shanghai, China, December 17-20, 2008. (EI)Shih-Hao Hung, Shu-Jheng Huang, and Chia-Heng Tu, New Tracing and Performance Analysis Techniques for Embedded Applications, in the 14th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications (RTCSA 2008), Kaohsiung, Taiwan, August 25-27, 2008. (Abstract)(PDF File)
  • Nei-Chiung Perng and Shih-Hao Hung, Task Scheduling for Context Minimization in Dynamically Reconfigurable Platforms, in 2007 IFIP International Conference on Embedded and Ubiquitous Computing, Taipei, December 17 - 20, 2007. (Abstract)(PDF File)
  • Shih-Wei Liao, Shih-Hao Hung, Chia-Heng Tu, and Jen-Hao Chen, Scalable Lossless High Definition Image Coding on Multicore Platforms, in 2007 IFIP International Conference on Embedded and Ubiquitous Computing, Taipei, December 17 - 20, 2007. (Abstract)(PDF File)
  • Chi-Sheng (Daniel) Shih, Chia-Lin Yang, Shih-Hao Hung, Chih-Wen Hsueh, Chuen-Liang Chen, and Tei-Wei Kuo, SoC System Design Program for Computer Science Majors, in the Proceedings of the Workshop of Embedded Software Education, October, 2007. (Abstract)(PDF File)
  • Tai-Yi Huang, Chung-Ta King, Shih-Hao Hung and Tei-Wei Kuo, An Update on the Embedded Software Consortium of Taiwan, in 2006 Workshop on Embedded System Education, held in conjunction with the EMSOFT conference, Seoul, South Korea, October 26, 2006. (Abstract)(PDF File)
  • Chun-Yuan Chang, Tsungnan Lin, Din-Yuan Chan and Shih-Hao Hung, A Low Complexity Rate-Distortion Source Modeling Framework, in 2006 IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP), Toulouse, France, May 14-19, 2006. (Abstract)(PDF File)
  • C.-Y. Chen, C.-L. Yang, S.-H. Hung, Cache Leakage Management for Multi-programming Workloads, in Tenth Asia-Pacific Computer Systems Architecture Conference (ACSAC 05), Singapore, October 24 - 26, 2005. (Abstract)(PDF File)
  • S.-H. Hung and P. Bhattacharya. On the Delivered Performance of the Sun Crypto Accelerator 1000. the Sun Users Performance Group 2002 Conf., HonululuHawaii, April. 2002. (PDF File)
  • J. Huang, S.-H Hung, G.-P. Musumeci, M. S. Klivansky, and K.-T. Ko. Sun Fire Gigabit Performance Characterization. the Sun Users Performance Group 2001 Conf., AmsterdamNetherlands, Oct. 2001, (PDF File)
  • P. Czarnul, S. Venkatasubramanian, C. D. Sarris, S.-H. Hung, D. Chun, K. A. Tomko, E. S. Davidson, L. P.B. Katehi and B. Perlman, Locality Enhancement and Parallelization of a Finite Difference Time Domain Simulation, HPCMO Users Conf., BilloxiMS, June, 2001. (PDF File)
  • C. Sarris, K. Tomko, P. Czarnul, S.-H. Hung, R. Robertson, D. Chun, E. Davidson, L. Katehi. Multiresolution Time Domain Modeling for Large Scale Wireless Communication Problems. the 2001 IEEE AP-S Intl Conf. on Antennas and Propagation. July 2001, Boston(PDF File)
  • S.-H. Hung and E. S. Davidson. A framework for performance optimization of parallel applications. In Performance Evaluation and Benchmarking with Realistic Applications, pp. 129- 160, The MIT Press, 2001. (PDF File)
  • S.-H. Hung and E. S. Davidson. System Support for Dynamic Optimization of Application Performance. In Innovative Architecture for Future Generation High-Performance Processors and Systems, pp. 7-20, IEEE CS Press, Jan. 99. (PDF File)
  • Shih-Hao Hung, Optimizing Parallel Applications, Ph.D. Dissertation, Computer Science and Engineering, University of Michigan, June 1998. (Abstract) (Full PDF File)
  • S.-H. Hung and E. S. Davidson, Characterizing and Reducing Overhead in Parallel Applications, the Automative Research Center 1997 Conference on Critical Technologies for Modeling and Simulation of Ground Vehicles, Ann Arbor, Michigan, June 1997. (PDF File)
  • S.-H. Hung and E. S. Davidson, A Parallel Application Development Environment, 9th Annual Industrial Partners of Computer Science and Engineering, Ann Arbor, Michigan, March 1998. E. Boyd, W. Azeem, H.-H. Lee, T.-P. Shih, S.-H. Hung, and E. Davidson. A hierarchical approach to modeling and improving the performance of scientific applications on the KSR1. In Proc. of the 1994 Intl Conf. on Parallel Processing, Vol. III, pp.188-192, 1994. (PDF File)

適用於嵌入式多核心系統之效能剖析追蹤與分析工具

Performance Profiling, Tracing, Analysis tools

我們所研發的工具可在多種嵌入式多核心系統剖析追蹤與分析Linux系統執行之效能與瓶頸,包括ARM, IBM Cell, TI Da Vinci , ITRI PAC Duo等嵌入式平台以及Intel PC,我們一方面盡可能降低在使用工具時對系統執行造成的影響,一方面擴展工具的使用範圍,使其能夠用以分析作業系統核心與輸出入裝置驅動程式,同時產生精確有效的分析報告與圖形介面,經過四年的努力,我們的工具已經可以在最短時間移植到最新的平台,甚至與我們研發的虛擬平台相結合,進一步提高以上工具的精確度及使用範圍。這項創舉,預計在今年(2010)完成之後,將提供系統開發者前所未見的效能剖析追蹤與分析工具。

虛擬平台與嵌入式多核心系統之效能工程

Performance Engineering for Embedded Multicore Systems via Virtual Platforms

我們改良最新QEMU虛擬機器(virtual machine),加入模擬異質多核心的功能,並且提出虛擬效能監控裝置(virtual performance monitoring unit)的機制(專利申請中),使虛擬機器在快速執行程式的同時,還能夠解析機器的行為,記錄特殊事件與其發生時間,並且能夠搭配上述的效能剖析追蹤與分析工具,評估在虛擬機器各個程式執行的效能。目前這個虛擬平台已經能夠模擬我們經濟部學界科專所使用的工研院PAC Duo平台之運作,提供研發團隊成員作為開發作業系統與省電機制的重要工具。除此之外,我們與中研院資訊所游本中所長的研究團隊於國科會自由軟體(open-source)計畫中合作,將進一步整合創建多核心對多核心(multicore-on-multicore)的高速虛擬平台後,以自由軟體的形式貢獻社群。同時在業界方面,高通(Qualcomm)與佳士達(Qista)對我們的工具有高度的興趣,正在洽談合作事宜,將此工具實際應用於協助Android智慧型手機產品之開發。相信在進一步的整合工作完成後,這項工具提供現今開發工具所無法達到的功能,無論是多核心的系統開發偵錯,或是效能調校,均可望提昇國內嵌入式系統的技術。

Linux系統與效能工程

Performance Engineering and Linux-based Systems

Linux開放式作業系統已成為現今各類型計算機系統常見的標準,從Android手機、MID (Mobile Internet Device)、小筆電、桌機、乃至於雲端運算(cloud computing)伺服器、超級電腦等,許多應用皆採用Linux。然而,良好的系統開發(development)、調校(tuning)、最佳化(optimization),必須對於作業系統(operating system)與計算機系統架構(system architecture)有完整的認識與瞭解,包括Linux上的使用者應用開發環境(user-level development environment),作業系統核心(kernel),與系統硬體互動的驅動程式層(device drivers),運用多核心(multicore)處理機的多執行緒(multithreaded)程式開發方法,增進雲端運算效率的虛擬技術(virtualization)、分散式儲存系統(distributed filesystems)、平行計算(parallel computing)方法,都是進階的系統工程(advanced system engineering)需要注意到的項目。除了深入研究了解這些技術之外,我們開發及使用效能工具來分析與解決龐大而複雜的電腦系統中可能產生的效能問題,尋求高效率的硬軟體系統架構以及節能省電的設計。

為了培養這方面的人才,我這學期特別開設Linux系統核心與應用(Linux Systems, Kernel Development, and Application)這門課,超過百位大四及研究生來修課及旁聽,對於一個需要做四個實驗、撰寫兩次期中報告、製作期末專題的課來說,是相當難得的。另外,我們實驗室在多方面與一流的廠商在此議題上進行產學合作,以下是我們合作的計畫項目:
  • IBM (2010~):在雲端運算環境中的虛擬網路安全設備(virtualized network security appliance)設計
  • 國科會佳士達(2009~2010)Android智慧型手機系統與雲端計算應用
  • 經濟部科專計畫工研院晶心科技凌陽科技(2008~2011):研發異質多核心嵌入式平台之系統軟體與效能分析機制
  • 廣達研究院(2006~2008): 改進其發展中之商用中階儲存伺服器(enterprise-class storage server system)之效能電腦安全
  • Sun Microsystems (2005~2007): 以平行計算技術為基礎的新微處理機系統晶片 (CMT processor SoC)作為下一代通訊市場使用之ATCA平台之效能評估技術