October 29th, 2008
今天聽了三個 session,這個算是比較好的,其他兩個等一下再來聊。Windows 7 的 instrumentation 和 Vista 其實是差不多的,可用的工具有 WPP、ETW 和 Event Log 三個,這個 session 主要是討論 ETW 和 Event Log 的改進 (WPP 多半是 kernel developer 在用,應該是 WinHEC 的參與者較感興趣)。Windows 7 花了很大的力氣去改進 instrumentation 的效能,簡單的說,更快,更小,可以觀察的東西更多。另外,Windows 7 內建 PowerShell 2,可以直接用 PowerShell script 來進行效能的監控,印象中好像看過類似的東西,但 Windows 7 的 PowerShell 內建的功能更完整好用些。
Troubleshooting 則是 Windows 7 想要改進 user experience 的一大步,這東西大家應該不陌生,XP 和 Vista 中的無線網路自動修復的功能就是 troubleshooting 的前身。只不過在 Windows 7 中,troubleshooting 更加全面,相關的檔案集中,修復的流程統一,出廠時系統會內建主要的自動修復功能 (如音效、網路)。新的 troubleshooting 是用 PowerShell script 做出來的,因此對於 SA 也可以自己跑 unattended 模式去自動修復所管理的電腦 (理論上,網路掛了還是直接拉倒的)。我和 presenter 小聊了一下,微軟目前不開放第三方合作,也就是說,你可以寫自己的網路自動修復精靈,但若 tray icon 中顯示網路不通的話,叫出來的修復精靈還是微軟的版本。
Windows, 技術文章, 會議相關 |
October 29th, 2008
今天是著名的 PDC keynote marathon,整個早上都是 keynote! 第一段 key note 基本上是 windows 7 的發表會,微軟在會中宣示他們的目標是將 PC、web 以及手機互相整合以構成完整的使用經驗。會場上微軟花了很多時間展示 Windows 7 的功能,基本上新加的功能不多 (事實上有些東西在 Vista SP1 中已經有了),微軟也公開宣布 Windows 7 和 Windows Server 2008 與 Vista SP1 的 kernel 是相同的,主要的改進是讓 Windows 跑的更快,消耗的資源更少,看來微軟也深切認識到 Vista 的主要問題在哪裡
比較有意思的展示亮點是 multi-touch 以及家庭網路的部份,某些程式用 multi-touch 來做的確有趣很多,我在聽 key note 時並不覺得 multi-touch 有什麼神奇的,但後來到外面的展示區玩 surface 的時候,發現俄羅斯方塊用手玩的話,真的好玩耶 …
對了,Windows 7 有一個非常酷的功能,它可以直接掛載 VHD,也可以直接開機進 VHD。所以以後系統回復就有新玩法了哇哈哈 …
keynote 的第二部份是 Live service 和 Office team 的展示部份,因為太無聊很想睡,所以半路就翹頭了。keynote 第三段則是 Don Box 與 Chris Anderson 的脫口秀 … 呃,是 Azure 程式設計示範教學。Don Box 和 Chris Anderson 的脫口秀很好看,不過呢,這種很炫的東西看看是可以的,真的要導入的話,最好先試試水深會比較保險一點。目前看起來技術含量很高,要試水的同學請先學好游泳,謝謝。
Windows, 技術文章, 會議相關, 無責任評論 |
October 28th, 2008
現今的主流市場裡,CPU 單一核心的處理速度增加有限,而硬體大廠則致力於多核處理器的開發。多核處理器的強項在於平行處理,但它必須靠軟體的配合才能有效發揮效能。微軟在 Visual Studio 2010 中推出了不少東西來協助師程工們寫作多緒的程式,在 PDC 中自然要拿出來秀一下啦。
微軟建議的 best practice 非常值得借鏡。若要改進程式的執行效率,應該依循以下的步驟:
- 建立效能調校的目標,找出量測的方法。儘量使用真實的資料和直實的環境,平行處理並不是萬靈丹,真實世界中許多其他的因素才是效能的殺手 (如 I/O、memory latency)
- 量測現有的效能,找出執行熱點
- 想辦法調校現有的程式
- 若調校無效,找看看是否有平行處理的機會: CPU intensive,或是可以讓 UI 反應變快增加 perceptual performance
- 若可平行處理,則利用程式技巧去最佳化熱點
Visual Studio 的目標是想辦法讓寫作平行處理的程式變得容易一些,它提供許多基礎設施和函式庫 (如 Concurrent runtime, Parallel Pattern Library, PLINQ 等等),也提供許多 profiling 和 debugging 的工具 (我個人的偏見是這些工具和 VTune 好像!)。因此,師程工就可以集中精力在設計 synchronization 上,而不必到處尋尋覓覓好用的程式庫,或是花許多資源開發自己的程式庫。
微軟的 concurrent runtime 和 PPL 在某種程度上和 OpenMP 有重疊性,不過微軟上從 VP 下到師程工一律口風緊閉,不願意討論和 OpenMP 的未來有關的任何問題。此外,PPL 大量利用 C++0x 的 lambda expression,並刻意地將所有的東西做成 STL-like。不過呢,微軟自己也不知道這東西是否會被 C++0x committee 採納為標準,現場聽起來微軟也沒力 (或是沒動力) 去推這個東西就是了。
目前 PPL 最大的問題在於它目前是針對 stack object 來設計的,若用到 heap object,事情變得很複雜。雖然現場的 demo 中有用到 heap object,但程式庫並不能提供一般化的 heap object management,微軟也坦承他們正在研究中,但具體結果在 Visual Studio 2010 中應該是看不到了。我個人認為若用到 heap object 的話,大部份還是得靠師程工自己做 ref counting 和 object lifecycle management 比較實際,想要依賴程式庫來幫忙的話,那乾脆去寫 managed code 或 Java 算了,VM 直接幫你搞定所有 heap 的問題
C++/C#, 技術文章, 會議相關 |
October 28th, 2008
微軟打算在 .Net CLR 4.0 中改進它的型別系統 (type system)。這個改進的主要動機有兩個,一是現行的 .Net 程式若是用到了 interop assembly,在安裝的時候,這些 interop assembly 的體積通常要比你寫的程式大很多。比方說,在程式中用到了 Excel 2007 interop 的話,就必須加裝 6.7MB 的 Office 2007 PIA redist,除了安裝用的 package 變大之外,程式執行時浪費的 working set 也變多 (你總不會用到 interop assembly 中的每一樣功能吧?)。此外,對於 managed to managed assembly,目前的做法是進行非常嚴格的版本檢查,若版本不合就直接踢掉。這雖然解決了 DLL hell 的問題,但卻造成更多問題: multi-target complexity 以及 deployment complexity。
multi-target 這個問題被唾棄很久,連微軟自己的師程工也很不爽,因此 CLR 4.0 就推出兩個重大的改進: type embedding 與 type equivalance。Type embedding 主要是要處理 interop assembly 的問題。比如說,我們的程式中用到 Excel interop,新版的 C# compiler 在編譯時可以直接匯入該 interop assembly 的 meta data,而且會把沒有用到的 vtable slot 直接跳過,因此就不需要 interop assembly 也可以知道 native COM object 的 GUID 以及 vtable offset。在執行的時候,CLR 會偵測這個 assembly 是否 embed partial interop information,若是的話,它會改變具現化 COM object 的方式,用新的方法去找到對應的 factory 並具現化。
Type equivalence 則是改變 CLR 對待 interface casting 的方式,在 CLR 4.0 中,若兩個 interface 有相同的 guid,則 CLR 會將這兩個 interface 視為 castable。在執行時,若 vtable offset 和 function signature 也相同,就允許呼叫這個函數 (簡言之,CLR 不再計較 assembly version)。若是找不到該函數,或是 signature 不合,該物件仍會被具現化,但系統會扔出 System.MethodMissingException。
C++/C#, 技術文章, 會議相關 |
October 27th, 2008
今天是 PDC 第一天,洛杉磯風和日麗交通混亂一如往常。早上第一場就是 key note 重頭戲,Ray Ozzie 發表了微軟的雲端運算平台 Windows Azure。你可能會覺得奇怪,微軟不是已經有 Windows Live 之類的東西了嗎? 看了 Windows Azure 之後就不覺得奇怪了,這東西才是微軟進軍雲端運算市場的主打,它的 business model 是這樣的:微軟提供一個雲端平台,賣你 subscription,而你則可以將你的 service (當然是在這平台上開發的) 透過微軟的 Azure cloud 發布到網路上運作,service 賺到的錢則是歸你。換句話說,資料中心和基礎建設由微軟包辦,但程式的部份則由你自己處理。這有點像百貨公司的模式,它賣你攤位和基礎設施,而你則可利用它來開自己的店面賺錢。這種營運模式是最近軟體業界最夯的,基本上就是綑綁策略 (stickiness),把客人綁在自家的服務上,有錢客人賺,我分一杯羹是也 …
當然照慣例,微軟的東西必然有的幾個特色,一是和它自己目前的程式或架構 (如 Active Directory) 可以相通,另一個則是可以和它現有的開發系統 (Visual Studio) 相整合。Azure 目前提供的基礎服務包括了.Net、 identity (與 AD 的整合)、CRM、SQL 以及 SharePoint,很明顯地它的目標是替代目前在各企業服役中的商用系統,把這些企業自行建置的系統移植到微軟的雲端運算平台。Key note 中也提供了幾個系統的 demo,不過根據我以前學到的教訓來看,現在來評論這些東西何時會 take off 還言之過早
但可以肯定的是,這東西並不是很簡單地把 word excel 之類的東西弄到網路上就算了。微軟想做的事情是,在網路平台上複製 Windows 的成功經驗,只不過傳統的 PC 硬體換成了雲端網路和資料中心,傳統的 Windows 作業系統變成 Windows Azure 雲端作業系統,企圖心很好很強大
微軟的雲端平台主打的客戶就是不想自己弄資料中心,但又想要享受 web 好處 的公司,例如 start-up 或是本業不相關的公司 (標竿客戶:可口可樂)。如果你是剛創業的公司,沒有辦法花大錢弄個自己的資料中心來放東西,微軟的服務可以解決這樣的問題,而且 Ray Ozzie 已經宣示這個服務的價格會非常具有競爭力。印象中似乎有其他大廠也想弄這樣的 business model,但他們有沒有辦法和微軟一較高下這就很值得觀察了,微軟的工具生產力高,若是因應度小月要打價格戰的話,那這個市場就會變得十分地有趣。微軟把自己的前途押在這個雲端作業系統,它是否能夠複製以往 Windows 的成功經驗,這也是後比爾大叔時代的微軟所面臨最大的挑戰。
更新:朋友告訴我微軟 Azure 與 Amazon Web Services 的商業模式基本上是一樣的哇哈哈 …
Windows, 技術文章, 會議相關, 無責任評論 |
October 27th, 2008
今天是 preconference,早上一來當然是先報到啦,但是讓我非常驚訝的是,連微軟都開始度小月了。我參加這麼多年的 conference,第一次看到用購物袋當 conference bag 的

precon 最大的好處是可以先拿到 badge,這樣明天早上就不需要去經驗一次恐怖的 registration 長龍。今天主要是參加 advanced windows debugging 的 session,早上講基礎的部份比較無聊,但下午講 security debugging 和 heap corruption 的部份就很清楚易懂。現場是有攝影機,但沒看到 staff 在操作,據說 PDC 會將所有 session 的錄影內容放在網上供人下載,就不知道 precon 有沒有包含在內了。
Windows, 技術文章, 會議相關 |
October 21st, 2008
今年終於有大拜拜可以去逛了,10/26 起一共五天,地點照舊是在洛杉磯國際會議中心。
是的沒錯就是 PDC 啦 … 目前看起來好玩的 session 沒有很多,不過照慣例有意思的 session 都是前幾天才會公布的,如果 session 後還有力氣的話,盡量早點把老人碎碎念 po 上來好了
PS. 蛤? 10/26? 是的你沒看錯,今年有拗到經費去好野人專屬的 pre-conference … 有報 Windows Advanced Debugging 的朋友可以來交換一下名片哇哈哈 …
會議相關, 隨筆雜文 |