發表文章

目前顯示的是 11月, 2012的文章

上班以來做過的事

畢業開始工作,一轉眼就三年半了,上班以後、生了小孩之後,很多事情都改變了,我也很少在這邊寫文章,寫上一篇已經是一年半前的事了 最近我覺得我應該再回來寫些網誌 就先來回顧一下我畢業之後在Facebook做的事情,我的職稱是Software Engineer,就是一個普通的軟體打雜工人,這種工作在矽谷非常平凡,路上隨便一堆都是靠這種技能討生活的人 因為我不是Computer Science背景,之前沒有太多軟體的經驗,剛加入Facebook的初期對我而言是個辛苦的過程,不過很有趣,我一下學會了很多事情,在Facebook的新訓中心出來之後,我加入了Data Infrastructure組 這一組負責的是後端資料的儲存和計算,儲存和計算的數量相當龐大,儲存上可以到100PB (1PB = 1000TB)以上,計算上,一個計算可以到幾百個TB的輸入輸出資料,因為這樣龐大的數量,所以這不是件簡單的事情,要從幾百個硬碟裡讀資料出來,在幾百台電腦上計算後,再寫到幾百個硬碟裡,不但要夠快,還要安排不同計算工作同時進行 在這個組我除了打了很多小雜工之外,做了三件比較大一點的事 第一件事,收集每台電腦上的資源使用狀態,然後用這個資訊來改進排程器的效率,(排程器就是一台負責安排其他上千台電腦要做什麼事的老大電腦),排程器知道那些電腦有比較多資源,就可以把計算排給他們,知道那些電腦已經忙到爆炸,就不要送計算給他們,而且收集了每個計算的實際實用資源,這樣可以對資源做有效的管理,防止人為浪費,實際工作包含寫一個在每台電腦上監控資源的程式,還有改變排程器的演算法去使用這些資訊,這件事是我剛到這個組的第一件工作,我覺得很不錯,因為做這件事讓我對Linux和系統資源,(CPU, memory, IO)等等有了一些了解 第二件事,利用錯誤更正碼來改進儲存的效率,之前有說到這些資料可以到上百個PB (1PB = 1000TB = 1000,000GB),保存這些資料一年花的錢是非常驚人的,如果能減少儲存,就能省下可觀的錢,一般儲存的方式是把一個資料塊(256MB)複製三個複本,再把三個複本放在三台不同機器上 為什麼要這樣做呢?,假設你的硬碟平均用三年壞掉一個,你如果有一萬個硬碟,一天大概就會有十個壞掉,所以一定要有複本,而且要能在電腦壞掉時馬上復原複本的數量,不然一定會