Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

系統資源使用思維

1 197 vues

Publié le

Resource & Performance

Publié dans : Ingénierie
  • Soyez le premier à commenter

系統資源使用思維

  1. 1. 系統資源使用思維 如何使用有限資源處理大數據 Simon Liang (YC)
  2. 2. 大綱 • 成本與效益 • 資源與效能迷思 • 資源與效能思維 • 案例思考-如何處理重複數據 • 案例思考-資料龐大且資源有限 • 設計思考 • 想法與啟發 • Q&A
  3. 3. 成本與效益 • 系統資源 – CPU – 記憶體 – 磁碟讀寫負載與空間 – 網路傳輸 • 人力資源 – 開發人力&時間
  4. 4. 資源與效能迷思 • 更先進的套件與伺服器 • 丟給資料庫處理 • 程式碼越精簡越好 • 跑最快的最適合 • 法則與公式
  5. 5. 資源與效能思維 • 肯德基, 麥當勞, MOS漢堡 • 資源取用&流程控管 • 值觀科學 • 不求極致,但求合理; 保持開發速度,但不 隨便
  6. 6. 案例思考-如何處理重複數據? • 有一文字檔案為產品編號與銷貨數量記錄, 每行資料列格式為 productNo=>count • 可能有重複的produtNo資料列 • 寫一程式將銷貨數量作統整,如重複者 count相加,輸出一份處理完整的紀錄檔案 • 結果類似select productNo,sum(count) from 銷貨紀錄 group by productNo
  7. 7. 正規式做法 • 將檔案讀出並explode為陣列$data_rows • 建立暫存陣列$tmp_array供比對用 • 走訪$data_rows陣列, 累加 $tmp_array[$productNo]再將資料存回該元 素 • 走訪$tmp_array, 組成儲存之文字格式於變 數$new_data • 將$new_data資料寫入目標檔案即完成
  8. 8. 資料龐大且資源有限時 • 共有8000萬筆記錄,檔案大小約為8G • 記憶體使用上限為256MB • 運算時間上限為30分鐘 • 如何以256MB記憶體在30分鐘內處理8G數 據? Compare & Sum Data Origin Data Result DataMain Process 原始架構還有辦法應付嗎?
  9. 9. 問題與挑戰 • 只有256MB記憶體 • 檔案很大,且時間有限 • 內容分布無固定規則 • 必須確保資料沒有重複 • 資料與運算皆會使用記憶體 • 合理運用CPU, 記憶體, 磁碟資源
  10. 10. 設計思考 (1/2) • 設計暫存檔 – 縮小檔案大小 – 縮小比對範圍 • 分段處理 – 減少記憶體耗用 – 逐步縮小範圍 • 減少存取次數 • 多工處理
  11. 11. 設計思考 (2/2) Regroup DataOrigin Data Temp 1 Temp 2 Temp 3 Temp n Result Data Main Process Sub Process Compare & Sum Data Compare & Sum Data
  12. 12. 設計思考-暫存檔 • 縮小檔案大小; 且縮小比對範圍 – 拆解方法 – 拆解數目 – 資料整理 – 資料儲存
  13. 13. 設計思考-分段處理(1/2) • File Pointer方式逐行讀取 • 區段切分與記憶體分配 • 比對重複 • 平均打散 • 批次寫入
  14. 14. 設計思考-分段處理(2/2) • 逐行讀取暫存檔 • 記憶體分配 • 縮短比對時間 • 批次寫入結果檔
  15. 15. 設計思考-多工處理 (1/2) • 時間有限需多工併進 • 可多工之項目 • 以達最佳效益之作法 • Map Reduce
  16. 16. 設計思考-多工處理 (2/2) Regroup Data Origin Data Temp 1 Temp 2 Temp 3 Temp n Result Data Main Process Sub Process 1 Compare & Sum Data Sub Process 2 Sub Process 3 Sub Process n Compare & Sum Data 1 Compare & Sum Data 2 Compare & Sum Data 3 Compare & Sum Data 4 多線併進
  17. 17. 想法與啟發 • 規模與目標 • 資源成本 – 固定式 – 線性成長 – 指數型成長 • 開發成本 – 初期成本 – 維護成本
  18. 18. 你可以做得更好 • Search how to measure cpu loading, memory usage and execution time both in PHP and Linux. • Think about your own efficient develop and test method. • You should try it !! /var/www/html/simon_liang/beta_data.txt
  19. 19. Q&A

×