Hackpads are smart collaborative documents. .

吳禎庭

501 days ago
Unfiled. Edited by 吳禎庭 , Jim Huang 501 days ago
心得
 
吳禎庭
  • [ THE CODE ]
(4:50)這不像是Don Quixote為了更好的地方而與世界對抗。
吳禎庭
  • Don Quixote<唐吉哥德>,由西班牙作家塞凡提斯(Miguel de Cervantes Saavedra, 1547-1616)所創,他象徵了一種崇尚自由,堅持信念的人物。
 
(5:10)Linus Trovalds認為email需要思考過後才寄出,所以比起面對面討論更讓他喜愛。
  • 這裡可以看出Trovald其實是個喜歡個人獨立思考的類型。
 
(6:22)什麼是liunx?即使各種電腦,硬碟,video controller都不一樣,linux卻可以讓所有電腦都做出相當簡單的任務。
  • 所以說如果有新的硬體或是當時沒有的東西出現,就會有相容性的問題?所以需要一直改版嗎?
 
(8:07)1969年12/28Linus Trovalds出生,而之後有位男士提到,在當時的電腦(計算機)對於一個10-12歲的小男孩還算是一個簡單的機器,可以了解到內部的原理,而現今的電腦已經分的許多抽象層,以至於對小孩來講難以學習內部的原理。
  • 這也就是說人類的智力發展跟電腦的發展比起來,電腦已經大大的勝過了人類的知識水平,也因此有人認為人工智慧發展有一定的風險,因為機器可能有天也會比人類聰明。
  • (似乎跟Jamie前輩個故事有異曲同工之妙)
  • 而我也想知道如果Trovalds是誕生現在這個年代的話,他會不會仍然開發出像是linux這樣影響甚鉅的OS,或是說,我們現在這個時代還會需要如同linux的做一頁系統嗎?
 
(10:40)Torvalds從一開始就先蒐集網路上大家的意見與feedback
  • 所以做任何產品之前都應該要先做好市場調查?
 
(12:40)UNIX在1969年被創造出來,從AT&T lab中,同時也是Torvalds出生的那一年,
 
(12:55)UNIX的創始理念: (1)每個東西都是文件檔 (2)每個你所創建的新東西所必須達成的目標,都需要做到最好
  • 這個反應了linux一開始就是從小地方做起,把東西做好,而不是處處都要連結到。
 
(16:02)因為網路的關係,所以linux發展才會如此的迅速。
 
(16:20)FREAX: free, freak, and need for UNIX
 
(17:50)1991年,linux公布了0.09版本,但是由於網路速度的關係,所以有人另外建立了自己的工作站,作為mirror使用,也因此成為了第一個Linux FTP的網站。
 
(20:15)DOS、UNIX作業系統在當時都要付費的,而且價格相當高昂,然而學生需要的是一個學習的環境,但是當時沒有像在這種給教育或非營利使用的規劃,也因次間接的促成了Linux的崛起。
 
(21:28)Trovalds是個相當謙虛的人,不會搶著要分功勞。
  • 這一點跟許多的創業家類似。
 
(21:45)對於Trovalds來說,最困難的地方不是技術,而是如何統整大家的意見協助分工合作,又不會彼此爭執不休。
 
(23:10)Dave Miller是位專門檢視開發者對於kernel修改的頭頭,像是Trovals跟眾多貢獻者的溝通橋樑。他說他認為show me the code才是最實際可以解決問題的方法。
 
(27:14)這就像是一個竹子,你不知道從哪裡開始抑或是從哪裡結束。
 
(29:36)哪門子的洗腦音樂XD
 
(30:45)Stallman這邊引用了詩歌可以被傳承,經過修飾與精煉,然後免費軟體才得以因此更加精進。
  • 這裡可以知道Stallman對於生活的哲學以及文化的薰陶(這個Trovalds的個性地相逕庭)
 
(32:09)Linus Torvalds撰寫了GNU系統中的重要元件—kernel,而這兩者統整之後就可以完整了一個系統,但是user卻錯認了Linux以為是全部的GNU系統,但是對於GNU團隊來說,這樣的問題卻是道德與政治問題。
  • 所以說GNU團隊當初有預期這樣的結果嗎?這樣的結果會不會影響其他開發團隊的發展呢?
 
(39:04)軟體產品最重要的價值在於它可以在賣主和顧客之間持續的有支持與維護,這也讓軟體產業與其他的製造業有本質上的不同。
  • 這個也顯示了為什麼今天許多的軟體會需要定期的做更新,或是推出免費的試用版,這都是為了增加顧客對於產品的忠誠度。
 
(42:35)Torvalds我的個人理念就是:一個系統比一個人的榮耀更加的重要,我不在乎別人怎麼做的,我只想做我覺得是好的事情。
  • 這裡顯示出其實Torvalds的理念非常簡單,而這或多或少跟當時的成長背景有關係,所以一個人的成功或許比起技術的多寡來說,個性與理念佔了更大決定的因素。
 
(44:50)人們總會期待別人能夠對她們好,事事都照顧到,但我不認為這是真的,也不認為這應該是真的。LINUX的魅力在於,即使沒有人幫助你,你仍然擁有linux,擁有自己的力量去做你想做的事情。
 
(45:40)他認為印度的問題是基礎建設,所以難你參與到這樣的合作關係。
這也跟現在FB創辦人所提及的想像是一樣的,願景是希望每個地方都可以有穩路使用。
 
(50:41)科學本身並沒辦法賺錢,但是應用可以賺錢。對於開發linux的程序員來說,這只是一個興趣。
 
  • [ From L3 to seL4 what have we learnt in 20 years of L4 microkernels? ]
Microkernel
(2:35)L4是已被認為是高效能的PC為著名,而這個趨勢在這20年中沒有改變。
圖中的IPC performance在cycle的部分,先是增加後才又減少。
 
L4介紹
強調輕薄短小的L4
Minimality & high performance IPC
 
Minimality: 任何目前不應該在microkernel裡面的事務都需要被移出來。
 
SiMKo 3 Merkelphone(Secure Mobile communications):
是一個德國資訊安全聯準會所認定的對於手機的安全通訊解決方案,又被認為是加密的手機。
 
L4 的設計以及實作規定
 
(12:00)Long IPC(instruction per cycle):
過長的IPC時間導致了大量的page fault,同時也增加了驗證的難度,並違反了Minimality,所以在L4的規則中被屏除。
 
(13:50)timeout的機制是為了防止dos攻擊,但實際上是為了保護一些IPC操作。但問題是沒有明確的timeout機制可以為偵測到。
 
(24:25)規則:
  1. 最小化是驅動設計的最好選擇
  1. IPC的速度還是關鍵
  1. 能力的好壞是未來的目標(EROS: Extremely Reliable Operating System)
  1. 一個簡單易懂的時間抽象層仍然是難以理解的
 
(26:51)總結:
  1. 細節改變了,但是規則是一樣的。
  1. Microkernel仍然相當的熱門。
 
...
500 days ago
Unfiled. Edited by Jim Huang , 吳禎庭 500 days ago
(Licensing, Forks, Business Model) [回課程進度表]
 
Jim H On Mar 7 2016, Microsoft is Announcing SQL Server on Linux
 
  • 授權條款與模式
James L
  • 權利
  • 使用權
  • 修改權
  • 散佈權
  • Note. 商用軟體只有『使用權』。
  • 自由或開放原始碼軟體的特性
  • 非專屬授權(專屬授權類似『賣斷』)
CHiU, P
  • 不可撤回
  • 免授權金(但可收費)
  • 授權金 (對象、時間、範圍)
James L
  • 使用GPL Licence時,程式碼可以以工本費之價碼收取費用(例如光碟、文本印製等等)
CHiU, P
  • 不附隨擔保
  • 不限制目的、時間、地域
Jim H
  • 現在這個世界是開源跟私有(proprietary)的結合
Hsiao S
  • 開放 binary 和 source code,但是優化文件或操作指南只給會員或不開放(不違反GPL原則
 
 
Jim H
  • Business Model
投影片:
 
 
回覆同學的提問
 
466 days ago
Unfiled. Edited by 吳禎庭 466 days ago
吳禎庭
  • Linux kernel profiling with perf
 
  • Introduction
Perf作為Linux2.6版本以上的系統效能分析工具,藉由抽象層的方式,讓他可以在不同的CPU硬體端上做效能的分析,並且提供簡易的介面。Perf採用perf_event作為介面,而且也已經內嵌在Linux kernel中。
 
  • Analysis method
Event 種類
在perf中支援許多的event測試,例如有software event, hardware event, hardware cache event, tracepoint event。
  1. Software event:指的是純軟體的事件。例如: counters, context-switches, minor-faults (PMU)...。
  1. Hardware event:專指processor跟它本身的Performance Monitoring Unit(PMU),在微晶片上去測量如number of cycles, instruction retired(表示實際上被CPU用在program flow上面的指令數量,因為實際上CPU會預測比instruction retired還要更多的instructions去how many instructions were completely executed between two clocktick event sample), L1 cache misses…,而這些數值會跟硬體本身有關。
  1. Hardware cache event: 每個處理器上面會有對應的event,只有符合其中的event,該事件還會被執行。
  1. Tracepoint: 由ftrace實作,可以散落在程式碼的偵測點,當該城市被執行的時候就會被觸發,藉此了解程式碼運行的內部細節。
PMU可以針對某種硬體事件設置counter,當該事件發生的次數超過內設的值後,便會產生中斷。得以獲得這些硬體的使用效率。
 
 
 Perf stat
Perf stat:計算各類事件發生的次數。每次執行可以測量多個process。
以下是常見的效能分析項目:
  • Task-clock-msecs:CPU 利用率
  • Context-switches:內容切換次數
  • Cache-misses: 整體的cache使用情況
  • CPU-migrations: 程式碼被CPU搬動的次數
  • IPC:是 Instructions/Cycles 的比值
也可以決定是否從user/kernel level 做測量。u:user k:kernel level
指令用法:
Perf stat {–e [event title] } {-p [process id]} {執行時間:sleep [time]/dd PATH/TO/FILE}
 
當事件比counters還要多的時候,系統會利用多工處理的方式做計算,也就是說每個事件並不會被一直監測,而最後結果則會被scale到偵測的時間。
(不是實際的次數,而是估測,會在數據的後面顯示scale from x%)
多種測量的scale:Per-thread/per-process/per-cpu/system-wide basis
  • Per-thread: 表示只監控特定的thread
  •  per-process: 在該process中的所有threads都會被監控(自動繼承功能)
  • per-cpu: 特定的process中的所有threads都會被監控,一個事件只能被一個CPU給監控。要監控多個processes就需要創建多個事件。
  • Processor-wide mode: 要監控所有的CPU情況,-a option可以讓目前所有的threads都被監控,結果顯示為總和的值。
指令選項:
  • -c option:可以針對想要監控的CPU做指派。
  • -p : 指定所欲監控的process id
  • -i : 關閉繼承功能(即該process底下的child process的threads不會被監控)
  • -t : 監控特定的thread number(可由ps,top得知)
控制output格式:
  • -B : 表示US-style的逗號格式
  • -x : CSV-style output
註:兩者不可混用
 
Sample – perf record
輸出perf.data檔案,該檔案可以再被perf report, perf annotate所使用
Default: cycles event as sample event
Sampling period有兩種表達方式: 
  • 事件的發生次數(週期)(數值為固定的)
  • 每秒鐘平均sample的數值(頻率) ex: 1000Hz, 1000samples/sec(數值會改變)
指令選項:
  • -f : 覆寫已經存在的perf.data檔案
  • -o : 取新的檔名
  • -F : 給定特定的sample rate
  • -c : 給定特定的sample週期
在processor-wide模式下,samples會在所有使用的CPU上被監控。
  • -C: 只監控特定的CPU編號
 
Perf report
用來觀看perf.data中的輸出結果
  • Overhead:表示在所有的sample點中,其事件所佔的sample points比例。
在per-thread, per-process 模式中,command會顯示該監控對象的名稱。
  • ELF image(Executable Linkable Format):被作為高度彈性的檔案,現在已經被認定為Linux標準library檔案格式。
  • Shared object: 表示sample是從哪裡來的,若是動態連結,則名稱可能會顯示shared library
  • Symbol中的[.]: 指優先權的高低。
  • [.] : user level
  • [k]: kernel level
  • [g]: guest kernel level (virtualization)
  • [u]: guest os user space
  • [H]: hypervisor
  • --sort=dso:根據shared objects去做排序
Processor-wide mode:
  • -a: 監控所有的CPUs
  • --sort=cpu
Overhead calculation:
  • Self:表示程式碼中的進入點的週期
  • Children:表示程式碼中所有的子funciton的週期(被其他的parent function給呼叫)
  • *children的overhead可能會超100%,因為每一個都是他們self的總和的加總,也就是說,如果child function裡面還有child function,則它們的overhead都會被加總起來。
Perf annotate
可以產生原始碼階層的分析資訊(compiled with -ggdb)。
Perf top
可以即時監控processor-wide的CPUs(跟linux top效果一樣)
Perf bench
用來測量自己的工作系統效能跟大家的benchmark的差異為何。
  • Sched: Scheduler and IPC mechanisms.
  • mem: Memory access benchmarks
  • numa[註]: NUMA scheduling and MM(matrix multiplication) benchmarks
  • futex: Futex stressing benchmarks
[註]NUMA(Non-Uniform Memory Access),是屬於一種多核心的CPU架構,NUMA把系統切割成數個node,處理器及記憶體就位在某一個節點上,當處理器存取同一個節點的記憶體時,可以有較高的存取速度;而存取其他節點的記憶體時,就需要透過節點間的資料傳遞,會耗費較多時間。
以下圖示顯示為perf_events的常見工作流程:
  • Reflection
這次的作業督促我去學習到了一個新的效能分析工具,以前都只知道寫code,卻不知道如果要觀察系統本身的效能,或是想要知道自己的程式碼的bottleneck在哪裡,都只能自己重新去trace看看問題在哪裡,有個perf的工具以後就可以比較有系統式的去找出問題的癥結點在哪,也就可以因此對症下藥,不會再不停地try and error中去找到方向。
 
...
495 days ago
(設計作業的考量:從案例去分析行之有年的 code forking,思考開發者和生態系統的變遷)
 
 
劉明宏
  • 劉明宏
 
 
495 days ago
Unfiled. Edited by 吳禎庭 495 days ago
論文研讀(B)
 
吳禎庭 OSS hw2
____________________________________________________________________________
 
Code Forking:
原指複製一份程式碼並修改後發布,但是會友著作權的問題。
但是在open sounrce software的情況,任何人都有權力去修改source code,但是這方面的知識尚未有完整以及共同的討論。
所以這篇paper主要在討論fork在open source software的角色與可能性
大家都有權力去fork open source意味著任何人都可以開發自己的版本
 
  • 過去Code forking的三大主要研究方向:
  • 1)      同業互評的研究
  • 甲、重在解釋學術研究
  • 2)      書籍、職業導向與在個人網頁的公開論文
  • 甲、解釋forking的現象與證照
  • 3)      相關故事
  • 甲、討論關於實際的案例
 
  • 每個人對於forking的定義並非完全相同:
  • Robles and Gonzalez-Barahona認為,forking需要符合以下條件:
  • (1)   新的project name
  • (2)   軟體的branch
  • (3)   平行基礎設備(ex: 網頁,版本控制系統,mailing list等)
  • (4)   新的開發社群
然而相容性變成了一個極大的問題,因為各個developers都有權力對open source做修改,而相容性就會意一大考驗,因此,最後大家都傾向不去做forking,而是pseudo-forking(不成文規定)(Meeker ,2008)。
而Weber(2004)更提到了關於名譽的議題,若fork的專案導致一些問題,會對開發者不利,此外,吸引到足夠的原始開發者去加入forking的專案也是一大考驗,再者,如果forking的專案夠好,原始的版本可以把它納入作為改進,而這對於營利方面是一大推力。
 
但fork的好處是,他可以將開發者集結在一起,因為大家唯恐避之fork所帶來的後果,所以開發者更傾向去一同合作專案。因此,在每個人都有權力去fork的情況下,開發者不敢亂搞,例如某公司意圖利用財產權占用source code,開發者可以利用fork另尋出路。
因此,對於open source software而言,fork的權力這件事本身就是最重要的關鍵
 
由於fork的特性導致只有最好的code可以存活下來,因此對於獨立開發專案會是一大考驗。因為fork可能會讓那些原本的獨立開發者倒戈。而Wheeler提出fork可能的4種結局:
(1)   Fork以失敗收場(最常見)
(2)   新的fork產生,而且兩者合併
(3)   原本的開發專案告吹
(4)   成功的branching(兩者成功,通常專案間可以相互補)
(5)   兩個專案都停滯(Robles and Gonzalea-Barahona)
 
Code forking案例:
1.      GCC-EGCS fork:
最為有名,因為fork最後成功地取代的原始的版本。由於開發者彼此之間沒有互通未來專案的方向,導致fork(EGCS)的誕生,而宗旨就在於整併所有的fork,最後不到兩年時間就獲得成功。
2.      Mysql & Drizzle fork:
Drizzel是Mysql的fork,他以輕量級為名,但是直到2014就沒有開發的進度。
3.      BSD & BSD’s family
BSD有許多的fork,Net/2目的在於重寫以及移除所有BSD的財產權,386BSD是為了解決OS運行在不同電腦硬體而誕生,FreeBSD原本是386BSD的更新版本,後來則以fork的形式運作。
 
l   Open Source Software
  • Definition:
  • Source code: 是讓電腦可以知道你想要做什麼的程式語言,撰寫後可被編譯(compile)成機器碼(binary)讓電腦運算。
  • Software: 最早軟體是根硬體綁在一起的(因為過去的電腦過於巨大與昂貴),而直到SpaceWARwar!遊戲的出現,開發者相當樂於分享他,讓所有人都可以使用遊戲軟體修改與學習程式語言,(囿於網路的發展,當時要複製是相當浩大的工程),直到1969年,IBM開始把軟硬體分開兜售,因此衍生出軟體財產權的概念,以及後來的UNIX,因此Open source software的起初常被戲稱為”hacker”。
  • Hacker:
  • 一群喜歡分析,解決並改進新的運算,MIT中有許多這樣的人才。
  • Hacker ethic: 
  • 則表示他們崇尚資訊的自由理念,分享學習與社群。
  • Ex: Richard Stallman
  • Free software v.s. open source software
  • Free software:強調在授權底下user被保證的自由。
  • Open source: 開發過程中的自由。
  • Software copyright and open source license
  • The right to choose a license:
  • 程式碼的擁有者可以決定授權,而且他的copy仍然可以有不同的license。
  • The right to sell the program:
  • 可能是販售程式本身或是他的所有權。
  • Type of open source license
  • 1. Permissive license: 允許code跟任何的license做綁定,也可以讓fork本身具有財產權。
  • 2. Weak copyleft: 位於兩者之間,不允許財產權下的重複授權。任何改版都必須在相同的license下。
  • 3. Strong copyleft: 必須要有license才可使用。
 
Business model:
  1.   Support and service:
產品本身是免費,但所提供的服務,訓練與開發都是要付費的。
   2.  Open core:
產品核心的程式碼是免費的,其他的功能需額外付費。
   3.  Business source:
一段時間可以免費使用,之後需要額外付費。
   4.  Dual licensing:
一個是GPL授權,另外一個部份則是具有財產權。
 
  • 參與的架構:
  • Corporate community: 專案主要的推力,通常由公司所組成,提供金錢或是開發支援。
  • Company(sponsor): 作為贊助的角色。
  • Open source community: 開源社群,多為一般開發者。
  • Summary:
  • 1. Open source software是一種在開源授權底下的軟體。
  • 2. Open source licenses通常被切為三個部分: permissive, weak copyleft 跟strong copyleft三種license
  • 3. Open source 開始從社群為基礎的現象,同時也吸引到公司的的參與,而公司儼然變成開發過程中的一大部分。
 
l   Code forking
  • Fork system call:
  • 讓系統可以同時做兩件事,程式複製自己一份並切割(fork),然後讓兩個function可以同時執行他,並在合併(join)起來。
  • Unix是第一個讓fork的功能可以被極大化使用的程式。
  • 同時fork的意義對於open source也促成了第二種相對於原始開發程式的可能(ex: GCC-ECGS project)
  • Definition:
  • Fork被定義成一個相對於現有的專案,自己成立一新的open source project。
  • Fork的權力影響開源軟體乃自三個面向:
  • Software level:
  •       任何軟體為了滿足大家的需求都需要持續的調整。沒有迎合大家需求的軟體只會走向滅亡。
  • Community level:
  • 社群會避免開發者彼此切割成數個開發團隊,因為這樣可能會多做許多不必要的工作。
  • Business ecosystem level:
...

Contact Support



Please check out our How-to Guide and FAQ first to see if your question is already answered! :)

If you have a feature request, please add it to this pad. Thanks!


Log in