下周(3/22)梁文耀博士要來台大講Linux Kernel,我來暖一下場子,提一下Linux Performance Tools,順便說說故事,免得學生覺得這個老師都找業師來上課,自己倒底懂不懂? 而且故事或許可以告訴大家,從以前到現在有甚麼變遷,不要食古不化、學錯重點了。同時大家也可想想,為什麼要學習Linux Kernel? 學了之後有甚麼用? 如何學習? Linux Kernel這麼龐大,要花多少時間來學? 如果學不得法,事倍功半。
早期,很多台灣的學生和工程師學Linux Kernel只是為了寫裝置驅動程式(device drivers)。因為系統代工廠開始採用Linux作業系統,要讓系統能夠在新的硬體上工作,必須找一群人來寫drivers。下游的系統晶片、周邊晶片、周邊設備廠,也得提供幫自家產品寫drivers給客戶用。
這些年有不少資工系的學生畢業後去業界負責寫drivers。例如聯發科技在業界的風評不錯,使用聯發科技的晶片的客戶,只要夠大咖,在driver方面會得到迅速確實的服務,其幕後當然就是那些刻苦耐勞系統的軟體工程師了,一旦有bug,就會在最短時間解決掉。
十多年前,嵌入式系統頗紅,教授只要宣稱有做嵌入式系統,學生就趨之若鶩,就是衝著台灣系統晶片和消費性電子產品的熱潮。那時政府投入到系統晶片的資源多,做嵌入式系統教學研究的人也分到一杯羹,學生畢業後進了像聯發科技這類的公司,也賺了不少錢,好像大家都很開心。
那時很多人學做嵌入式系統,只是看了幾本書,追蹤過Linux Kernel,寫寫驅動程式,讓系統會動、功能正確就好。在學術界做嵌入式系統研究,為了要發表論文,很多人跑去做系統裡面工作的即時排程、節能省電的研究,搞一堆數學模型和heursitics。這些研究成果雖然也很厲害,但是跟當時的業界的技術層級距離頗遙遠。
距離遙遠? 是的,大多數代工廠只需要按照客戶的規格要求把系統做出來,至於系統上面跑甚麼應用就不是他們要擔心的事了。以HTC為例,早期他代工做Windows Mobile手機,最在乎的就是如何選料做出價廉物美的硬體,而整支手機軟體中唯一能改的,就是drivers了 -- 這是2006年我們到HTC訪問時,軟體部門主管回應我的問題所說的話,因為「微軟只讓他們碰這個」。
因為學界被要求要證明自己是世界一流,業界有很多限制,所以學用落差很大,而兩邊又都很忙,很少溝通,但大家似乎不以為意。或許是因為當時的電子業錢太好賺,業界只要學校開一些簡單的實作課程幫學生打基礎就好,反正業界做的也不是甚麼偉大的研發工作,有了基礎到業界就能在短時間上手,那些眉眉角角的know-how,入行久了自然會知道。因此政府出錢,用補助設備和課程開發經費的方式鼓勵學界開一系列強調實作的嵌入式系統課程。
我在2005年回到台大教書,看到這種情況,很不以為然。同樣是做嵌入式系統的教學研究,我特別強調複雜系統的設計、效能分析與優化,我陸續開了一系列課程,包括「輸出裝置與驅動程式設計」「嵌入式處理器設計」「嵌入式多核心系統與軟體」「計算機效能最佳化」「平行計算機系統與應用」「Linux系統核心與應用」,嘗試訓練一些高階系統實務人才,但絕大多數賺錢的業界公司並沒有珍惜這些技能,也沒有想提升他們自己的境界,原因很簡單,因為搶錢都來不及了。
舉例來說,我在2005年去演講的時候,一位技術學院的教授當場嗆我,你講這些對我們沒甚麼用,我們只要能訓練出能寫USB裝置驅動程式的學生,他們就有做不完的工作了。我認為他看到的職場現狀接近現實,當時需要大量的工程師來幫忙做這些做不完的系統軟體開發工作 (註1),但邏輯上的問題是,這兩年有做不完的工作,未必代表未來二十年都有工作,我們不應該只教那些,業界也不應該只做那些。
大家現在都知道了,膚淺技術的代工業已經大不如前。即便代工,也得有高階技術才能生存發展。(補充說明: 不要誤會了,我很尊重那些注重技術研發、能持續精進的代工廠,包括台積電、聯發科、鴻海這些,他們現在也知道要投資做研發,才有出路。)。那些不上不下的公司,要如何生存發展呢? 這是個大問題。
過了十年,現在還是有很多系統廠還無法轉型和升級,仍然以代工製造硬體搭配膚淺的軟體為主。上個月有一家公司找我去諮商,公司大部分的軟體技術都仰賴微軟的供應鏈,自身的軟體研發能力薄弱。說到為何不用Linux呢? 他們一下子說不敢用,一下子說看不懂市場,一下子又說找不到人才。我說,一直這樣的話,你們也只能讓微軟予取予求,果然講到他們的痛點。以前讓微軟予取予求,就當作是繳稅,現在利潤如此微薄,這個微軟稅繳起來就很痛... 我看那個態勢,似乎是要我介紹人給他們,但我猜想,這公司恐怕僱不起Linux人才,也不見得有給人才發揮的空間,所以就謝謝再聯絡了。
昨天有位考上碩士班的學生來找我,他雖然是名校畢業,但非資工系,全是靠自學。他原本在某家高雄軟體園區的公司上班,做月薪22K的軟體開發工作。一開始聊,他完全聽不懂我在講甚麼,他自承是靠補習考上研究所,但對系統有興趣。其實不只一位學生,這幾天來了好幾位考上碩士班的學生,對系統的認識薄弱到令我訝異。所以我花了不少時間告訴他們如何迎頭趕上,包括看看我們在【開源系統軟體】臉書社團(註9)上分享的資訊和課程內容。
言歸正傳,話說Linux Kernel這麼龐大,要花多少時間來學? 這幾位靠補習考上研究所的碩士生,連Linux都沒用過,要怎麼在短時間內學會做系統研究?
第一,如果想做系統,只要能抽出時間,用力學就對了,不要管要花多少時間,Just Do It! 或許,有了一百小時的研習,可以讓你入門;幾百小時,可成為某個部份的高手,接下來就繼續補充不足、與其他高手過招、漸入佳境。如果想快速成為真正的專家,每天10小時,3年一萬小時,應該有機會。不過各位看看Jserv這麼厲害,我猜他一天超過十小時花在作業系統相關的議題上,搞了30年,大概是10萬小時。
第二,利用社群資源。一般學生在考試陰影下,潛意識中某種程度敵視老師和同儕,因為一個逼你念書,一個跟你搶名次。殊不知,到了研究所,老師和同儕都是寶貴的資源,甚至為了有更多資源,還要設法到網路社群上找。國內外有很多開源碼的討論社群,都可以加入。尤其是最新的資訊,不可能等到人家寫書或是開課來教你,一定要懂得上社群網路去搜刮最新資訊和參與討論。
第三,挑戰高階(複雜)的實作問題。我認識很多聰明人,給他抽象、簡化過的難題,他們可以解得不亦樂乎,但是真實世界是複雜多元的,如果不會解析複雜問題、化繁為簡的話,根本無從解起。這是現代高階人才該具備的重點能力之首: Complex Problem Solving (註2)。有些資訊系畢業的學生,連上千行的程式都沒看過幾個,要如何探討軟體架構 ( software architecture)? 如果在學校能看懂Linux Kernel架構,能了解其運作,嘗試解決其中的問題,也算是個開始。
比如找一個大數據分析應用,設法解決其效能問題。由於很多大數據應用是架設在Linux系統上,這時候解析Linux Kernel的能力,對於改進系統在做資料儲存、資料交換上的效能非常重要。當然,處理大數據所用的中介軟體也很重要,所以我們之後也會來看Hadoop、Spark之類的中介軟體,但我希望大家可以舉一反三,否則只是學到皮毛而已。
效能工具(Performance Tools)的使用,是在實務上分析效能的關鍵。要解決問題,先要有資料;要有資料,最好是能自己動手蒐集,不必等人。要知道電腦系統裡面有很多效能監控機制,使用者可以透過效能工具取出這些資料加以分析。但是系統中有那些效能工具? 有哪些效能工具? 如何使用效能工具? 如何分析蒐集到的資料? 常常需要專業的知識,我們在學期稍後會講,但同學們可以先看。例如網誌的圖,上面列出玲瑯滿目的工具,來自於介紹Linux Performance Tools的網頁(註3),作者就是開顧問公司的。我們當年,在SUN的系統上開發了很多效能工具以及分析的方法,後來幾位SUN的工程師出去開了這家顧問公司。
我回到台大之後,也訓練學生做類似的工作,幫業界解決效能問題(註4)。但是因為過去代工業太賺錢了,願意花時間和傷腦筋創新的大公司不多,所以看到一大堆機會沒有被業界把握住,實在可惜。這幾年新創蔚為風氣,但許多贊助新創的機構的思維還是沒變,為了快速回收,只敢投在淺薄的技術研發上。
不過最近一些資金開始關注到某些「務實做有深度研發的項目」,燃起希望的火苗。例如有找我們解決效能問題的公司變多了,題目的素質也提升了;我學生畢業後到VMFive(註5)和Appier(註6)去幫忙解決效能問題;台灣開始有以解決效能問題的新創公司,例如Skymizer (註7); 翟神開的和沛(註8)最近重金禮聘幾位我認識的Linux專家,希望有好的發展。
台灣的競爭力應該是在人才的素質上,而不是人力的數量上。我想,眼前的業界,是朝向「質」的方向發展,這是可喜可賀的事。至於量的方面,關鍵是業界和政府能否把握機會行動,以及學生能否看清現實,而我只能盡人事聽天命,無法預測未來。所以請各位同學、業界朋友、長官不要問我,現在投入系統研發的行列,未來會不會大發。我只能說,學生要做的話就好好做到出師,業界要做的話就卯足全力衝刺,政府學界要做的話就給足資源,不上不下的半吊子,恐怕是難以呈現出價值的。
(註1)嵌入式系統商機大,卻鬧人才荒 (2005/01) http://www.ithome.com.tw/node/27357
(註2)現在和未來新創所需的技能 (2016/03) https://www.facebook.com/notes/洪�⋯⋯
(註3)Linux Performance http://www.brendangregg.com/linuxpe⋯⋯
(註4) https://www.facebook.com/notes/洪�⋯⋯
(註5)http://www.vmfive.com/
(註6)http://www.appier.com/zh/
(註7)http://skymizer.com/
(註8)https://www.hopebaytech.com/
(註9)https://www.facebook.com/groups/159⋯⋯
從2010.03寫到現在,我只是想寫 -- 把我對社會、人文、科技、產業、教育的觀察和感想寫出來。每次寫出當下所思所想,似乎腦袋可以清淨一點、心靈可以輕爽些。文章大多先在臉書上與臉友分享,隨後再轉到這裡。臉書網址為:https://www.facebook.com/shihhaohung
2016年3月19日 星期六
2016年2月17日 星期三
非絕招的絕招 - 淺談RDMA的小知識與大效用
有些高階網路介面卡支援RDMA (Remote Direct Memory Access),但仍然很多人不知道RDMA是什麼,以及它能用來做哪些好事情呢?
RDMA主要是可以讓某台機器可以透過網路介面卡所提供的API,直接存取在另一台機器上的記憶體,免去透過傳統作業系統與網路協定所增加的負擔。(註1)
這項功能純粹是為了效能而存在的,對於現代已支援各種網路協定的系統而言,RDMA並沒有增加系統的功能性。換言之,RDMA是一項可有可無的、需要硬體特殊支援的系統功能,有了它,可以節省電腦系統在做資料交換時,作業系統所耗損的運算資源和降低延遲(latency)。
因此,RDMA不是人人都需要懂得,也不是到處可見的,近年來RDMA被率先用於高效能計算(HPC)上10Gbps乃至於100Gbps的高速網路,目前它逐漸被利用資料中心和大數據運算時,作為提高資料傳輸效率、降低系統能耗的手段,例如用RDMA加速Hadoop、Spark,以後可能會被用在某些強調效率的物聯網的裝置上。
實際在網卡上使用RDMA的範例,可參考(註2)。如果看懂這份200多頁的文件,應該就很清楚知道RDMA能做哪些事情。
但光是學會RDMA是不夠的,要發揮出RDMA的作用,必須要懂得將RDMA實際用於應用面上,必須要懂得軟體和效能分析的技術,分析效能的瓶頸和資料交換的模式(pattern),才能善用RDMA,否則可能不光是達不到預期的效果,還會減損系統效能,甚至危及系統的安全和穩定度。
首先在效能上,必須考量資料的傳輸模式,包括每次資料傳送的大小、資料的連續性、傳送的時間間隔、傳送的對象等等,來決定如何使用RDMA。我們可以讓傳送端主動把資料放進接收端,或是接收端主動到傳送端提取資料,究竟該用哪種模式?何時該進行傳輸?是否要用高階的gather/scatter功能? 這些都是要根據實際狀況才能回答的問題。
為什麼說RDMA使用不當,可能會危及系統的安全和穩定度? 因為「讓某台機器直接存取在另一台機器上的記憶體」這樣的功能,好比「讓某人直接進入你家存取東西」,如果某台機器被入侵,有可能危及其他機器的安全;也好比「共享記憶體」會造成搶資料的問題,如果兩台機器沒有同步好,可能會造成race condition,系統就會不穩定。
因此RDMA也不是隨隨便便能夠使出來的絕招,必須先精通軟硬體的實務才行。所以,絕招其實並非絕招,招數本身說穿了並不難,只是說使用者沒有足夠的軟硬體功力,練了絕招也沒有用。如果笑傲江湖裡的令狐沖沒有好好練個十多年的武功,突然接收了獨孤九劍的心法也沒有什麼用的。當然,並不是每個花很多時間練功的人,都能領悟獨孤九劍的要旨,學了也不見得會用。
話說RDMA也不是那麼罕見的概念,基本上RDMA是由DMA (Direct Memory Access)轉化而來的技術。說到DMA這個幾十年前就廣泛被使用在各種電腦系統的東西,很多做硬體設計和I/O驅動程式的人都很熟悉, 可以在單一機器中讓CPU節省傳送資料的時間,例如把大量資料送到磁碟機、網卡、顯示卡,甚至軟體想做大規模記憶體複製(memory copy)的時候也可以使用,普遍得不得了。
我原本以為,既然DMA是如此普遍的概念,那麼多加利用DMA和RDMA來改善系統效能的這件工作應該不難,但其實並非如此。看懂別人怎麼利用這些招數,和真正學會如何利用這些招數,並不是同一件事。很多做底層作業系統和驅動程式的人都看過DMA,有些會拿現有的範例照抄,但有多少人會調整DMA的使用方式或是用於解決新問題?
舉例來說,我們十年前玩過當年最紅的多核心處理機之一,IBM Cell (註3),用在超級電腦和Sony PlayStation 3上,所以我們實驗室買了十幾台PS3,用來做教學研究。這個系統晶片有個特點,晶片上多個處理機核心之間資料的傳送,是靠DMA來進行的。雖然DMA很有效率,但是很多程式師不大會用DMA。當年開發Cell的chef architect,Peter Hofstee,後來跟我們一起合作,聊起這件事,他覺得這些程式師暴殄天物。
我讓學生學習如何在Cell上運用DMA,發展效能分析工具,甚至有位學生設計出一個輕薄(lightweight)的message-passing library,使用DMA來加速CPU之間資料的傳送。不只支援Cell,也支援工研院所研發的異質多核心處理機PAC Duo,拿到ACM RACS會議的最佳論文獎 (註4)。事實上,實驗室還有其他幾個作品,也用了DMA來提升效能。
從眾人熟知的DMA延伸到RDMA,只是把單一機器改為多台機器,概念極為類似,所以要理解並不難,但如果要會運用,還是要實際運用才行。因此,我們建置了一套以100Gbps網路連接的小型叢集(cluster),打算來訓練學生使用RDMA,研究如何解決big data系統中資料傳輸的問題。很多開源碼系統軟體還沒有被好好優化,而且優化的方式就像以上所講的,必須根據實際應用的狀況而定,因此這裡有很大的發展空間。
RDMA 只是眾多非絕招的絕招之一例,還有很多這類的招數。我自己對於效能分析與優化特別感興趣,所以一路走來,到處學習、運用、發掘這類招數。但就像以上所描述的,這類招數說穿了一點都不稀奇,所以旁觀者看了覺得好像沒什麼了不起。國外的公司懂這類技術的人多,比較能夠賞識這樣的技能和成果;但某些台灣公司主事者的心態很奇怪,你化繁為簡,講到他能聽懂,他就以為你沒什麼了不起,以為他自己可以找到價美物廉的人在做同樣的工作。關於這點,可參考我兩周前寫的故事(註5)。
的確,這沒什麼偉大,但一般人懂了不見得會用,會用不見得會解決問題,所以「專業」不是一天造成的。以為自己官大學問大,不尊重專業,夜郎自大,自我設限是常見的通病。這篇文章的目的,在分享如何在系統開發上「同中求異」的心得,如果不想老是做跟人家一樣的東西,要如何創新? 基本功夠扎實,加上一些特異功能,例如本文的RDMA或是異質計算,那麼很有機會做出比別人好的系統,這其實不難,也不容易,需要務實培養專業能力。往好處看,台灣現在越來越需要,也比較能賞識這類人才。
(註1) https://en.wikipedia.org/wiki/Remot⋯⋯
(註2) Mellanox, RDMA Aware Networks Programming User Manual, http://www.mellanox.com/related-doc⋯⋯
(註3) https://zh.wikipedia.org/wiki/Cell_⋯⋯
(註4) Building a scalable and portable message-passing library for embedded multicore systems, http://dl.acm.org/citation.cfm?id=2⋯⋯
(註5) https://www.facebook.com/notes/洪�⋯⋯
RDMA主要是可以讓某台機器可以透過網路介面卡所提供的API,直接存取在另一台機器上的記憶體,免去透過傳統作業系統與網路協定所增加的負擔。(註1)
這項功能純粹是為了效能而存在的,對於現代已支援各種網路協定的系統而言,RDMA並沒有增加系統的功能性。換言之,RDMA是一項可有可無的、需要硬體特殊支援的系統功能,有了它,可以節省電腦系統在做資料交換時,作業系統所耗損的運算資源和降低延遲(latency)。
因此,RDMA不是人人都需要懂得,也不是到處可見的,近年來RDMA被率先用於高效能計算(HPC)上10Gbps乃至於100Gbps的高速網路,目前它逐漸被利用資料中心和大數據運算時,作為提高資料傳輸效率、降低系統能耗的手段,例如用RDMA加速Hadoop、Spark,以後可能會被用在某些強調效率的物聯網的裝置上。
實際在網卡上使用RDMA的範例,可參考(註2)。如果看懂這份200多頁的文件,應該就很清楚知道RDMA能做哪些事情。
但光是學會RDMA是不夠的,要發揮出RDMA的作用,必須要懂得將RDMA實際用於應用面上,必須要懂得軟體和效能分析的技術,分析效能的瓶頸和資料交換的模式(pattern),才能善用RDMA,否則可能不光是達不到預期的效果,還會減損系統效能,甚至危及系統的安全和穩定度。
首先在效能上,必須考量資料的傳輸模式,包括每次資料傳送的大小、資料的連續性、傳送的時間間隔、傳送的對象等等,來決定如何使用RDMA。我們可以讓傳送端主動把資料放進接收端,或是接收端主動到傳送端提取資料,究竟該用哪種模式?何時該進行傳輸?是否要用高階的gather/scatter功能? 這些都是要根據實際狀況才能回答的問題。
為什麼說RDMA使用不當,可能會危及系統的安全和穩定度? 因為「讓某台機器直接存取在另一台機器上的記憶體」這樣的功能,好比「讓某人直接進入你家存取東西」,如果某台機器被入侵,有可能危及其他機器的安全;也好比「共享記憶體」會造成搶資料的問題,如果兩台機器沒有同步好,可能會造成race condition,系統就會不穩定。
因此RDMA也不是隨隨便便能夠使出來的絕招,必須先精通軟硬體的實務才行。所以,絕招其實並非絕招,招數本身說穿了並不難,只是說使用者沒有足夠的軟硬體功力,練了絕招也沒有用。如果笑傲江湖裡的令狐沖沒有好好練個十多年的武功,突然接收了獨孤九劍的心法也沒有什麼用的。當然,並不是每個花很多時間練功的人,都能領悟獨孤九劍的要旨,學了也不見得會用。
話說RDMA也不是那麼罕見的概念,基本上RDMA是由DMA (Direct Memory Access)轉化而來的技術。說到DMA這個幾十年前就廣泛被使用在各種電腦系統的東西,很多做硬體設計和I/O驅動程式的人都很熟悉, 可以在單一機器中讓CPU節省傳送資料的時間,例如把大量資料送到磁碟機、網卡、顯示卡,甚至軟體想做大規模記憶體複製(memory copy)的時候也可以使用,普遍得不得了。
我原本以為,既然DMA是如此普遍的概念,那麼多加利用DMA和RDMA來改善系統效能的這件工作應該不難,但其實並非如此。看懂別人怎麼利用這些招數,和真正學會如何利用這些招數,並不是同一件事。很多做底層作業系統和驅動程式的人都看過DMA,有些會拿現有的範例照抄,但有多少人會調整DMA的使用方式或是用於解決新問題?
舉例來說,我們十年前玩過當年最紅的多核心處理機之一,IBM Cell (註3),用在超級電腦和Sony PlayStation 3上,所以我們實驗室買了十幾台PS3,用來做教學研究。這個系統晶片有個特點,晶片上多個處理機核心之間資料的傳送,是靠DMA來進行的。雖然DMA很有效率,但是很多程式師不大會用DMA。當年開發Cell的chef architect,Peter Hofstee,後來跟我們一起合作,聊起這件事,他覺得這些程式師暴殄天物。
我讓學生學習如何在Cell上運用DMA,發展效能分析工具,甚至有位學生設計出一個輕薄(lightweight)的message-passing library,使用DMA來加速CPU之間資料的傳送。不只支援Cell,也支援工研院所研發的異質多核心處理機PAC Duo,拿到ACM RACS會議的最佳論文獎 (註4)。事實上,實驗室還有其他幾個作品,也用了DMA來提升效能。
從眾人熟知的DMA延伸到RDMA,只是把單一機器改為多台機器,概念極為類似,所以要理解並不難,但如果要會運用,還是要實際運用才行。因此,我們建置了一套以100Gbps網路連接的小型叢集(cluster),打算來訓練學生使用RDMA,研究如何解決big data系統中資料傳輸的問題。很多開源碼系統軟體還沒有被好好優化,而且優化的方式就像以上所講的,必須根據實際應用的狀況而定,因此這裡有很大的發展空間。
RDMA 只是眾多非絕招的絕招之一例,還有很多這類的招數。我自己對於效能分析與優化特別感興趣,所以一路走來,到處學習、運用、發掘這類招數。但就像以上所描述的,這類招數說穿了一點都不稀奇,所以旁觀者看了覺得好像沒什麼了不起。國外的公司懂這類技術的人多,比較能夠賞識這樣的技能和成果;但某些台灣公司主事者的心態很奇怪,你化繁為簡,講到他能聽懂,他就以為你沒什麼了不起,以為他自己可以找到價美物廉的人在做同樣的工作。關於這點,可參考我兩周前寫的故事(註5)。
的確,這沒什麼偉大,但一般人懂了不見得會用,會用不見得會解決問題,所以「專業」不是一天造成的。以為自己官大學問大,不尊重專業,夜郎自大,自我設限是常見的通病。這篇文章的目的,在分享如何在系統開發上「同中求異」的心得,如果不想老是做跟人家一樣的東西,要如何創新? 基本功夠扎實,加上一些特異功能,例如本文的RDMA或是異質計算,那麼很有機會做出比別人好的系統,這其實不難,也不容易,需要務實培養專業能力。往好處看,台灣現在越來越需要,也比較能賞識這類人才。
(註1) https://en.wikipedia.org/wiki/Remot⋯⋯
(註2) Mellanox, RDMA Aware Networks Programming User Manual, http://www.mellanox.com/related-doc⋯⋯
(註3) https://zh.wikipedia.org/wiki/Cell_⋯⋯
(註4) Building a scalable and portable message-passing library for embedded multicore systems, http://dl.acm.org/citation.cfm?id=2⋯⋯
(註5) https://www.facebook.com/notes/洪�⋯⋯
2015年8月10日 星期一
在颱風天測試Windows 10
身為計中作業組的組長,當然要在學校大多數師生還沒安裝Windows 10之前,親自來大致搞清楚安裝或升級之後會發生哪些事情。電腦上有太多東西是必須自己做過一兩次之後才會進入狀況。
剛好颱風天哪裡也不想去,就在三台機器上安裝。一些朋友說絕對不要當白老鼠,我開玩笑說我就來客串神農氏,嘗嘗Windows 10來試毒。還好我機器多,資料有多個備份,搞砸了不會有嚴重後果,但建議各位看官安裝任何東西之前都要先有充分準備。
我這三台的安裝過程分別如下:
1. Microsoft Surface Pro 3
原本就有隨機安裝的Windows 8.1,這次安裝的是從微軟公開的網站下載下來的64-bit Windows 10中文專業版。由於想要【乾淨安裝】,所以在裝的過程中出了一些問題。乾淨安裝需要開機碟,我首先將ISO檔燒進USB隨身碟,但嘗試了手邊三個USB隨身碟都無法順利開機,所以改燒到DVD上開機,但是不知道是不是我這台光碟機很久沒用,安裝到一半讀不到驅動程式,所以最後改用升級的方式安裝USB隨身碟上的安奘檔,過程非常順利,結果正常。由於微軟這次給舊版使用者免費升級,所以不必新的序號。
2. Macbook Pro 15-inch 虛擬機
這台四核心、有16GB記憶體的機器,很適合用虛擬機跑各種作業系統。我先把Parallels Desktop 10 (PD10)更新到最新版本,再使用微軟提供給學校的ISO檔安裝教育版的Windows 10。第一次安裝時,我把PD10提供的選項設定為【使用新安裝的作業系統玩遊戲】,結果安裝過程異常緩換,我猜是與繪圖顯示卡有些相容性的問題,所以我砍掉重練,將選項設為【使用新安裝的作業系統作為生產力工具(Words, Excel, PowerPoint)】,結果就順利安裝成功。
然而,由於這個是全新安裝,必須提供金鑰序號,但Windows 10的啟動程序有問題,輸入序號的輸入視窗由於卡在【使用者帳戶控制】的訊息,一直跳不到前景(我猜是PD10的bug),我只好用把DOS Command Prompt叫出來,手動以slmgr /ipk的方式輸入序號,才得以順利啟動。
3. Macbook Pro 13-inch BootCamp
這台有1TB SSD儲存空間的機器,很適合切一塊儲存空間用BootCamp來跑Windows。我切出240GB的空間,用BootCamp安裝微軟提供給學校的Windows 10教育版ISO檔。安裝沒有遇到甚麼之前沒碰過的問題。這也是全新安裝,必須提供金鑰序號,但Windows 10的啟動程序沒問題。
然而,還是有些應用程式有顯示上的問題,造成一些使用上的困擾。例如 Thunderbird的一些按鈕變得很奇怪,但是在我上述的Surface Pro 3上並沒有這個問題,所以我猜是Mac上特有的問題。對Apple來說,對於Windows的支援,似乎總是和為Microsoft對於Mac OS的支援一樣,不是非常關心。
迄今的感想如下:
- Windows 10比Windows 8.1 好用、好看太多了。我一定會把我手邊的Windows 8機器全部升級到Windows 10。至於已經在用的Windows 7的機器,沒有問題就繼續用下去,沒必要升級。我目前大致確定一些常用的生產力工具、多媒體播放工具能夠安裝和開始使用,至於軟體相容性的問題當然有,所以如果是遊戲玩家或是有特殊設備,可能必須先確認清楚。我安裝成功的軟體目前有:
Microsoft Office 2013, Thunderbird, Chrome Browser, Dropbox, Skype, iTunes, Evernote, Pot Player...(持續增加中)
- 這次微軟的代理商一直到八月才把教育版光碟給我們,而且迄今還沒有提供大量授權的認證的機制,所以各位安裝教育版的師生員工,暫時還是處於試用狀態,要等到大量授權認證機制出來後,才能正式啟動。超過試用期限後不啟動會如何? 我猜應該是跟之前的Windows差不多吧? 會一直出現提醒和警告的訊息...
- 在很晚才拿到的情況下,有些計中和學校其他單位的服務還不知道能不能和Windows 10相容,需要時間來測試。一般來說,網頁版的服務主要與瀏覽器的版本有關,Windows 10內含的IE11和 Edge兩種瀏覽器,新出現的Edge比較會遇到相容性的問題,所以IE還是備而無患。問題目前對我來說比較重要的待確認應用清單如下:
a.台大的公文系統+自然人憑證
b.台大的SSL VPN
c.台大的NTU Space
如果有些服務對你很重要,先確認之,不要貿然升級。
- 用BootCamp跑的好處是順。用虛擬機跑時,即使CPU再快,也不見得順,因為使用者經驗上的順,往往被一些互動式操作的順暢度所影響。而這些操作,與I/O、作業系統和虛擬化環境的關係比與CPU的關係來得大。話說Mac上的Office在處理中文時常常當機,是我不得不用Windows的主要原因,平常用虛擬機跑就行了,如果我要連續幾天用Microsoft Office來編輯長篇中文計畫書 的話,我可能會選擇開BootCamp來跑。
- 有些應用程式必須以系統管理員身分安裝,否則會失敗。這個跟使用者帳戶控制 (UAC)有關。雖然微軟說UAC是為了保護使用者而存在,但很多人不大喜歡UAC,也可以關掉它。
- Microsoft Edge這個新瀏覽器,用起來頗洗鍊,有當初開始用Chrome Browser的感覺,但是相容性是個問題。例如我用Edge無法上傳圖片到部落格上,瀏覽器就一直卡住,只好改用Chrome。
- 我猜很多人跟我類似,挑選作業系統的主要考量是跑【生產力工具】。在跨平台工具日益普遍的年代,很多生產力工具都有多種平台的支援,甚至網路版的也行,所以Windows逐漸鎖定不了使用者。微軟這次免費提供升級,應該也是很清楚這點 -- 與其說升級,不如說是把使用者非常嫌惡的Windows 8裡面做爛掉的東西收起來 -- 只要不要逼迫使用者改用Mac OS,又給予免費的升級,那使用者就比較願意留住。
- 目前Windows 10唯一確定比Mac OS好的地方,是對於觸控螢幕的支援。但是,有觸控螢幕要做甚麼呢? 應該要讓Android和iOS的應用能夠在上面跑才對。我想,當手機都已經如此成熟,廠商應該是來看看Mobile Cloud的時候了。
剛好颱風天哪裡也不想去,就在三台機器上安裝。一些朋友說絕對不要當白老鼠,我開玩笑說我就來客串神農氏,嘗嘗Windows 10來試毒。還好我機器多,資料有多個備份,搞砸了不會有嚴重後果,但建議各位看官安裝任何東西之前都要先有充分準備。
我這三台的安裝過程分別如下:
1. Microsoft Surface Pro 3
原本就有隨機安裝的Windows 8.1,這次安裝的是從微軟公開的網站下載下來的64-bit Windows 10中文專業版。由於想要【乾淨安裝】,所以在裝的過程中出了一些問題。乾淨安裝需要開機碟,我首先將ISO檔燒進USB隨身碟,但嘗試了手邊三個USB隨身碟都無法順利開機,所以改燒到DVD上開機,但是不知道是不是我這台光碟機很久沒用,安裝到一半讀不到驅動程式,所以最後改用升級的方式安裝USB隨身碟上的安奘檔,過程非常順利,結果正常。由於微軟這次給舊版使用者免費升級,所以不必新的序號。
2. Macbook Pro 15-inch 虛擬機
這台四核心、有16GB記憶體的機器,很適合用虛擬機跑各種作業系統。我先把Parallels Desktop 10 (PD10)更新到最新版本,再使用微軟提供給學校的ISO檔安裝教育版的Windows 10。第一次安裝時,我把PD10提供的選項設定為【使用新安裝的作業系統玩遊戲】,結果安裝過程異常緩換,我猜是與繪圖顯示卡有些相容性的問題,所以我砍掉重練,將選項設為【使用新安裝的作業系統作為生產力工具(Words, Excel, PowerPoint)】,結果就順利安裝成功。
然而,由於這個是全新安裝,必須提供金鑰序號,但Windows 10的啟動程序有問題,輸入序號的輸入視窗由於卡在【使用者帳戶控制】的訊息,一直跳不到前景(我猜是PD10的bug),我只好用把DOS Command Prompt叫出來,手動以slmgr /ipk的方式輸入序號,才得以順利啟動。
3. Macbook Pro 13-inch BootCamp
這台有1TB SSD儲存空間的機器,很適合切一塊儲存空間用BootCamp來跑Windows。我切出240GB的空間,用BootCamp安裝微軟提供給學校的Windows 10教育版ISO檔。安裝沒有遇到甚麼之前沒碰過的問題。這也是全新安裝,必須提供金鑰序號,但Windows 10的啟動程序沒問題。
然而,還是有些應用程式有顯示上的問題,造成一些使用上的困擾。例如 Thunderbird的一些按鈕變得很奇怪,但是在我上述的Surface Pro 3上並沒有這個問題,所以我猜是Mac上特有的問題。對Apple來說,對於Windows的支援,似乎總是和為Microsoft對於Mac OS的支援一樣,不是非常關心。
迄今的感想如下:
- Windows 10比Windows 8.1 好用、好看太多了。我一定會把我手邊的Windows 8機器全部升級到Windows 10。至於已經在用的Windows 7的機器,沒有問題就繼續用下去,沒必要升級。我目前大致確定一些常用的生產力工具、多媒體播放工具能夠安裝和開始使用,至於軟體相容性的問題當然有,所以如果是遊戲玩家或是有特殊設備,可能必須先確認清楚。我安裝成功的軟體目前有:
Microsoft Office 2013, Thunderbird, Chrome Browser, Dropbox, Skype, iTunes, Evernote, Pot Player...(持續增加中)
- 這次微軟的代理商一直到八月才把教育版光碟給我們,而且迄今還沒有提供大量授權的認證的機制,所以各位安裝教育版的師生員工,暫時還是處於試用狀態,要等到大量授權認證機制出來後,才能正式啟動。超過試用期限後不啟動會如何? 我猜應該是跟之前的Windows差不多吧? 會一直出現提醒和警告的訊息...
- 在很晚才拿到的情況下,有些計中和學校其他單位的服務還不知道能不能和Windows 10相容,需要時間來測試。一般來說,網頁版的服務主要與瀏覽器的版本有關,Windows 10內含的IE11和 Edge兩種瀏覽器,新出現的Edge比較會遇到相容性的問題,所以IE還是備而無患。問題目前對我來說比較重要的待確認應用清單如下:
a.台大的公文系統+自然人憑證
b.台大的SSL VPN
c.台大的NTU Space
如果有些服務對你很重要,先確認之,不要貿然升級。
- 用BootCamp跑的好處是順。用虛擬機跑時,即使CPU再快,也不見得順,因為使用者經驗上的順,往往被一些互動式操作的順暢度所影響。而這些操作,與I/O、作業系統和虛擬化環境的關係比與CPU的關係來得大。話說Mac上的Office在處理中文時常常當機,是我不得不用Windows的主要原因,平常用虛擬機跑就行了,如果我要連續幾天用Microsoft Office來編輯長篇中文計畫書 的話,我可能會選擇開BootCamp來跑。
- 有些應用程式必須以系統管理員身分安裝,否則會失敗。這個跟使用者帳戶控制 (UAC)有關。雖然微軟說UAC是為了保護使用者而存在,但很多人不大喜歡UAC,也可以關掉它。
- Microsoft Edge這個新瀏覽器,用起來頗洗鍊,有當初開始用Chrome Browser的感覺,但是相容性是個問題。例如我用Edge無法上傳圖片到部落格上,瀏覽器就一直卡住,只好改用Chrome。
- 我猜很多人跟我類似,挑選作業系統的主要考量是跑【生產力工具】。在跨平台工具日益普遍的年代,很多生產力工具都有多種平台的支援,甚至網路版的也行,所以Windows逐漸鎖定不了使用者。微軟這次免費提供升級,應該也是很清楚這點 -- 與其說升級,不如說是把使用者非常嫌惡的Windows 8裡面做爛掉的東西收起來 -- 只要不要逼迫使用者改用Mac OS,又給予免費的升級,那使用者就比較願意留住。
- 目前Windows 10唯一確定比Mac OS好的地方,是對於觸控螢幕的支援。但是,有觸控螢幕要做甚麼呢? 應該要讓Android和iOS的應用能夠在上面跑才對。我想,當手機都已經如此成熟,廠商應該是來看看Mobile Cloud的時候了。
2015年1月24日 星期六
巨量資料處理的新的組合:Google Cloud Dataflow + Apache Spark
這篇說到巨量資料處理的新的組合:Google Cloud Dataflow + Apache Spark
【大資料雙強聯手,世界排序冠軍Spark擁抱Google新PB級資料分析技術Dataflow】
http://www.ithome.com.tw/news/93669

概念上還是不離data flow和memory cache的概念,只是說,granularity隨著資料量放大,系統有越多的機會去監看執行狀況和最佳化效能。
用Apache Spark來做sorting,算是牛刀小試。對效能有興趣者(國內這種人大概很少吧?)可以看看這篇報告(http://sortbenchmark.org/ApacheSpark2014.pdf),關鍵根本不在memory,而在於硬碟和網路。
【大資料雙強聯手,世界排序冠軍Spark擁抱Google新PB級資料分析技術Dataflow】
http://www.ithome.com.tw/news/93669
圖片來源: GitHub
概念上還是不離data flow和memory cache的概念,只是說,granularity隨著資料量放大,系統有越多的機會去監看執行狀況和最佳化效能。
用Apache Spark來做sorting,算是牛刀小試。對效能有興趣者(國內這種人大概很少吧?)可以看看這篇報告(http://sortbenchmark.org/ApacheSpark2014.pdf),關鍵根本不在memory,而在於硬碟和網路。
2015年1月18日 星期日
Docker風潮席捲IT世界
在資工系教書的好處,就是常常可以吸收新的東西,不光光看,而是動手玩。我們幾個月前開始看Docker的時候,雖然有點概念,還不夠扎實,想了幾個研究方向,幾個月動手做下來,應該比較有點譜了。
同學們這時候再回去看這篇介紹性文章「Docker風潮席捲IT世界」(http://www.ithome.com.tw/news/91839),如果會覺得「講得這麼淺顯,三個月前怎麼有看沒有懂呢?」,那就表示已經入門了 :)
當然,一直有新東西出來,也是問題。如果你覺得「怎麼又有新東西出來,很煩呢,可不可以不要學?」,那就表示你在這個行業的前途堪慮。
同學們這時候再回去看這篇介紹性文章「Docker風潮席捲IT世界」(http://www.ithome.com.tw/news/91839),如果會覺得「講得這麼淺顯,三個月前怎麼有看沒有懂呢?」,那就表示已經入門了 :)
當然,一直有新東西出來,也是問題。如果你覺得「怎麼又有新東西出來,很煩呢,可不可以不要學?」,那就表示你在這個行業的前途堪慮。
2013年5月30日 星期四
從來沒有比現在更適合作實務研究的時候
為什麼我喜歡做較實務的研究呢?其實,是因為我不敢做太理論的研究,因為我總是搞不清楚那些沒辦法和個人親身體驗連結在一起的知識和理論。所以,我很不會背書,因為,已經懂的東西,我不覺得需要背;沒有辦法和我的經驗連結的東西,就算背起來也馬上忘記。
最近買到Raspberry Pi,除了喚起三十多年前的回憶,實體東西自在手上把玩幾下,網路關於Raspberry Pi的資訊和討論,包括Wikipedia上的一大堆資料,瞬間變得有意義,這是動手做學東西,似乎可以用來作為hackschooling的材料。
現在要教Embedded Systems課程可用的教具和參考資料比幾年前多太多了。之前我教Linux Device Driver的時候,沒看到幾張好用的板子,現在有一堆open hardware,在這些open hardware上面可以跑一堆open software,就像這篇所介紹的:
幾年前WSN (Wireless Sensor Network) 似乎很熱門的時候,我一點興趣都沒有,因為那些小小的板子速度慢得很,卻貴得要命、貴得沒有道理,不同的硬體規格、作業系統、網路(Zigbee)相容性有問題,除了發論文唬人之外,我才疏學淺,根本想不出什麼有意義的研究。
或許下學期和 Daniel Shih 合開的系統專題研究課程,我們可以考慮讓同學動手玩一玩這些玩具?BeagleBone有新版的,速度可到1GHz,還有 HDMI介面。實驗室還有一些ZedBoard,上面有雙核心的ARM和FPGA,功能更強大,不過體積比較大。
玩這些東西,希望能有一些新創意。我們整天搞系統的人,往往沒時間去想應用,這點倒是該注意。這些open hardware/software,最大的作用,在於它們能夠讓有創意的人,不需要花太多時間在系統上,快點做出雛形(prototype)。當初Apple II也是如此,讓電腦進到一般人的世界。
注意周遭,是否有值得改進的東西?假如能放個小如卡片的電腦在這裡,能夠做什麼好事?這小如卡片的電腦本身能力可能不強,但是連上Internet之後潛力無窮。
不過,不要再提說要把這東西放在冰箱上的這種老掉牙的創意了。「智慧型冰箱」可以監控你每天進出冰箱的食物和熱量,很多人試過了,好像沒多大實用價值。從生活中得到一些啟發,解決一些自己切身相關的問題,全新的主意得來不易,但其實也沒那麼難。
最近買到Raspberry Pi,除了喚起三十多年前的回憶,實體東西自在手上把玩幾下,網路關於Raspberry Pi的資訊和討論,包括Wikipedia上的一大堆資料,瞬間變得有意義,這是動手做學東西,似乎可以用來作為hackschooling的材料。
現在要教Embedded Systems課程可用的教具和參考資料比幾年前多太多了。之前我教Linux Device Driver的時候,沒看到幾張好用的板子,現在有一堆open hardware,在這些open hardware上面可以跑一堆open software,就像這篇所介紹的:
幾年前WSN (Wireless Sensor Network) 似乎很熱門的時候,我一點興趣都沒有,因為那些小小的板子速度慢得很,卻貴得要命、貴得沒有道理,不同的硬體規格、作業系統、網路(Zigbee)相容性有問題,除了發論文唬人之外,我才疏學淺,根本想不出什麼有意義的研究。
或許下學期和 Daniel Shih 合開的系統專題研究課程,我們可以考慮讓同學動手玩一玩這些玩具?BeagleBone有新版的,速度可到1GHz,還有 HDMI介面。實驗室還有一些ZedBoard,上面有雙核心的ARM和FPGA,功能更強大,不過體積比較大。
玩這些東西,希望能有一些新創意。我們整天搞系統的人,往往沒時間去想應用,這點倒是該注意。這些open hardware/software,最大的作用,在於它們能夠讓有創意的人,不需要花太多時間在系統上,快點做出雛形(prototype)。當初Apple II也是如此,讓電腦進到一般人的世界。
注意周遭,是否有值得改進的東西?假如能放個小如卡片的電腦在這裡,能夠做什麼好事?這小如卡片的電腦本身能力可能不強,但是連上Internet之後潛力無窮。
不過,不要再提說要把這東西放在冰箱上的這種老掉牙的創意了。「智慧型冰箱」可以監控你每天進出冰箱的食物和熱量,很多人試過了,好像沒多大實用價值。從生活中得到一些啟發,解決一些自己切身相關的問題,全新的主意得來不易,但其實也沒那麼難。
2010年5月18日 星期二
CMU's Parallel Data Lab
CMU的Parallel Data Lab以Storage Systems聞名,在cloud computing的時代,對於cloud storage也有許多不錯的研究。尤其是performance tools,是非常值得我們參考的。
注意到許多papers全部出現在conferences或是技術報告(technical reports),或有重複的部份,因為利用conference的機會到處宣揚,不足為奇。CMU強調實作的精神,也是這個實驗室的一大特色。
注意到許多papers全部出現在conferences或是技術報告(technical reports),或有重複的部份,因為利用conference的機會到處宣揚,不足為奇。CMU強調實作的精神,也是這個實驗室的一大特色。
http://www.pdl.cmu.edu/index.shtml
Latest development:
Selected papers for performance tools:
Latest development:
- Open Cirrus: A Global Cloud Computing Testbed. Arutyun I. Avetisyan, Roy Campbell, Indranil Gupta, Michael T. Heath, Steven Y. Ko, Gregory R. Ganger, Michael A. Kozuch, David O’Hallaron, Marcel Kunze, Thomas T. Kwan, Kevin Lai, Martha Lyons, Dejan S. Milojicic, Hing Yan Lee, Ng Kwang Ming, Jing-Yuan Luke, Han Namgong, Yeng Chai Soh. IEEE Computer, April 2010.
Selected papers for performance tools:
- Visual, Log-based Causal Tracing for Performance Debugging of MapReduce Systems. Jiaqi Tan*, Soila Kavulya, Rajeev Gandhi and Priya Narasimhan. 30th IEEE International Conference on Distributed Computing Systems (ICDCS) 2010, Genoa, Italy, Jun 2010.
- An Analysis of Traces from a Production MapReduce Cluster. Soila Kavulya, Jiaqi Tan, Rajeev Gandhi and Priya Narasimhan. 10th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGrid 2010). May 17-20, 2010, Melbourne, Victoria, Australia. Supersedes Carnegie Mellon University Parallel Data Lab Technical Report CMU-PDL-09-107, December, 2009.
- Kahuna: Problem Diagnosis for MapReduce-Based Cloud Computing Environments. Jiaqi Tan, Xinghao Pan, Eugene Marinelli, Soila Kavulya, Rajeev Gandhi, Priya Narasimhan. Proceedings of the 12th IEEE/IFIP Network Operations and Management Symposium (NOMS) 2010, Osaka, Japan, Apr 2010.
- DiscFinder: A data-intensive scalable cluster finder for astrophysics. Bin Fu, Kai Ren, Julio López, Eugene Fink, and Garth Gibson. In Proceedings of the ACM International Symposium on High Performance Distributed Computing (HPDC), Chicago, IL. June, 2010. Supersedes Carnegie Mellon University Parallel Data Lab Technical Report CMU-PDL-10-104.
- File System Virtual Appliances: Portable File System Implementations. Michael Abd-El-Malek, Matthew Wachs, James Cipar, Karan Sanghi, Gregory R. Ganger, Garth A. Gibson, Michael K. Reiter. Carnegie Mellon University Parallel Data Lab Technical Report CMU-PDL-10-105, April 2010.
- PLFS: A Checkpoint Filesystem for Parallel Applications. John Bent, Garth Gibson, Gary Grider, Ben McClelland, Paul Nowoczynski, James Nunez, Milo Polte, Meghan Wingate. Supercomputing '09, November 15, 2009. Portland, Oregon.
- Understanding and Maturing the Data-Intensive Scalable Computing Storage Substrate. Garth Gibson, Bin Fan, Swapnil Patil, Milo Polte, Wittawat Tantisiriroj, Lin Xiao. Microsoft Research eScience Workshop 2009, Pittsburgh, PA, October 16-17, 2009.
2010年4月18日 星期日
Mobile Multitasking (iPhone vs Android)
Since Apple annouced iPhone 4.0 with support for multitasking, discussions about mobile multitasking are getting hot these days. Here I summarize the links to the discussions:
http://davidquintana.com/entry/mobile-multitasking
Comparing the models of "multithreading" between Android and iPhone 4.0
http://www.appleinsider.com/articles/10/04/17/inside_iphone_os_4_0_multitasking_vs_mac_os_x_android.html
An article from an iPhone and Apple supporter. There is also an interesting discussion about unified development tools: Clang, LLVM and Xcode, at the end of this article.
http://davidquintana.com/entry/mobile-multitasking
Comparing the models of "multithreading" between Android and iPhone 4.0
http://www.appleinsider.com/articles/10/04/17/inside_iphone_os_4_0_multitasking_vs_mac_os_x_android.html
An article from an iPhone and Apple supporter. There is also an interesting discussion about unified development tools: Clang, LLVM and Xcode, at the end of this article.
2010年4月15日 星期四
The State of the Internet Operating System
Tim O'Reilly 在2010-03-29寫了篇有趣的文章:
http://radar.oreilly.com/2010/03/state-of-internet-operating-system.html
由幾年前熱門的 Web2.0到現在,軟體與網路的人怎麼看世界,由這篇可以一瞥究竟。除了作者本人的觀點外,許多不錯的讀者回應,還有作者與讀者的討論,也很有教育性。
http://radar.oreilly.com/2010/03/state-of-internet-operating-system.html
由幾年前熱門的 Web2.0到現在,軟體與網路的人怎麼看世界,由這篇可以一瞥究竟。除了作者本人的觀點外,許多不錯的讀者回應,還有作者與讀者的討論,也很有教育性。
訂閱:
文章 (Atom)