成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

當優化擴展到多核時……

移動開發
首先,我們需要確定,我們的單個任務是否可以分解;比如解析很多個文件,這樣的任務劃分成多個很簡單;但如果是一個耗時的串行邏輯計算,后期的計算依賴前期的結果,這樣就不好拆分;這種形式可能需要在更高層次上來拆分;

當優化擴展到多核時

"軟件開發沒有銀彈,我們能做的就是選擇和平衡;"

上一篇文章我們聊了在單線程下程序優化的5個方向(ref:《程序優化的5個方向》);當單核優化到極值后,就到了多任務的情況;

 

想起來很清晰,單個任務分解成多個任務,讓多個cpu同時來工作,并行執行,效率自然就上去了;

 

但,未必就這么簡單;

 

任務分解的粒度

 

首先,我們需要確定,我們的單個任務是否可以分解;比如解析很多個文件,這樣的任務劃分成多個很簡單;但如果是一個耗時的串行邏輯計算,后期的計算依賴前期的結果,這樣就不好拆分;這種形式可能需要在更高層次上來拆分;

 

數據競爭

 

編程就是計算和數據;計算并行了,但數據還是訪問同一份,訪問共同的資源會產生資源競爭;

 

如果不進行控制,可能導致同一份數據重復計算(多個讀的場景)或是臟數據的產生(有回寫的場景);

 

引入鎖

 

為了讓數據訪問有序進行,需要引入鎖來防止臟數據;

 

控制鎖的粒度,是個需要精心考慮的話題;

 

比如對于大量讀少量寫的場景,相比一視同仁的加鎖,使用讀寫鎖能顯著提升效率;

 

我們日常能接觸到的產品中,數據庫是個用鎖高手,在更新數據的時候,是鎖住行,還是列、或是表,不同的粒度性能相差明顯;

 

驚群現象

 

考慮這樣的場景:多個線程都在等在一個鎖,如果可以拿到鎖,線程就開始工作(線程池)

 

當鎖被釋放時,如果喚醒多個線程可能會產生 驚群現象;

 

解決方案:

 

使用單線程方案/處理accpet連接 處理等待鎖的操作,讓任何時刻只有一個線程在等待鎖;

 

更多細節參考:

 

《客戶-服務器程序設計方法》中 預先創建線程池,每個線程各自accept 一節

 

數據復制

 

讓每個線程使用自己的數據,讓數據不共有,這樣能去掉資源競爭,去掉鎖;

 

將數據復制為多份,減少競爭,各自訪問各自的數據;

 

但這又引入了一個新的問題:如果各個線程回寫了數據,如何保證這么數據的一致性?

 

畢竟它們代表的其實是一份數據;

 

涉及到數據的一致性,多份數據之間的同步又是個難題;

 

數據分片

 

那好,換個思路,不使用數據復制;我們使用數據分片;分片這個思想更容易想到,既然“計算”被劃分為多個小任務了,那么數據也可以同樣處理;

 

將數據分片,每份數據存的內容不相同,它們之間沒有共同點;

 

這樣,數據訪問沒有數據競爭,同時由于數據不同,也不涉及到數據一致性同步的問題;

 

但,分片遠遠沒有想的那么美好;

 

分片導致了每個線程看到數據不再是全集,而是片段;這就注定了這個線程只能處理這部分的特定數據;這樣,線程之間的計算失去了可替換性;某種工作只能在特定的線程上處理;

 

而如果有個任務需要訪問所有的數據,這樣就變得更加復雜;

 

原來,分片之后,我們將難題向上推了,推到線程層面,需要考慮到業務邏輯層面的處理;

 

這樣,可能更加復雜;

 

ok,想要速度更快,使用多核來處理,需要面對更多的問題;

 

將單機擴展多機集群,涉及到架構層面來看,其實我們的面對的問題是類似的;

 

參考:《大型網站技術架構》讀書筆記[2] - 架構的模式

 

軟件開發沒有銀彈,我們能做的就是選擇和平衡;

責任編輯:chenqingxiang 來源: 大CC
相關推薦

2020-06-05 14:30:03

CephCPU 線程

2013-02-21 09:41:49

CitusData數據庫Postgres

2020-06-16 11:12:26

醫療物聯網IOT

2023-07-07 09:55:23

互聯網論文

2021-10-25 15:50:42

區塊鏈金融科技

2009-11-12 15:19:54

2009-11-12 15:30:44

2009-02-26 10:50:04

NetApp虛擬化VMware ESX

2023-03-08 14:14:51

微軟ChatGPT

2024-05-20 08:35:00

模型定理

2012-10-31 09:32:41

思科思杰ADC

2017-05-26 23:09:47

2022-03-23 16:28:18

微軟NVIDIAGPU

2009-02-25 16:50:00

2021-01-01 09:46:43

微軟Windows 10Windows

2022-11-10 08:02:41

GitOpsDevOpsKubernetes

2010-10-22 14:35:44

VMwareCitrix云計算

2023-03-03 14:08:51

網絡安全首席信息安全官

2019-04-16 09:40:12

服務器系統數據庫

2019-04-04 09:59:06

服務器系統Web
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久国产精品久久久久久久久久 | 日本成人免费网站 | 韩日有码 | 欧美日韩亚洲成人 | 极品久久 | 欧美一区二区小视频 | 中文字幕乱码一区二区三区 | 欧美一级二级在线观看 | 一级黄色片毛片 | 亚洲国产成人精品久久 | 成人免费一级 | 国产99久久久国产精品 | 97国产精品视频人人做人人爱 | 神马久久久久久久久久 | 中文字幕二区三区 | 二区三区视频 | 黄色片网站国产 | 欧美日韩在线免费观看 | 久草.com | 欧美性猛交一区二区三区精品 | 一级片成人| 日韩在线播放第一页 | 日韩一区二区三区在线 | 国产在线视频一区 | 成人黄色电影在线播放 | 中日字幕大片在线播放 | 中国一级特黄真人毛片免费观看 | 毛片网在线观看 | 毛片网站在线观看视频 | 国产精品久久久亚洲 | 精品欧美激情精品一区 | 国产1区2区在线观看 | 日韩欧美一区二区三区在线播放 | 成人中文字幕在线 | 激情一区二区三区 | 拍真实国产伦偷精品 | 艹逼网 | 亚洲福利精品 | 欧美一区二区三区 | 亚洲精品一区二区三区中文字幕 | 色婷婷精品国产一区二区三区 |