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

性能優化技巧之算法

運維 系統運維 算法
算法的種類和實現浩如煙海,但是在這篇文章里面,不討論單核,單線程的算法,而是討論多核,多線程的算法;不討論所有的算法類型(這個不是本文作者能力范圍之內的事),而是討論在多核網絡設備里面常見的算法,以及可能的優化途徑,這些途徑有些經過了驗證,有些還是處于想法階段,暫時沒有實現數據的支持。

 算法的種類和實現浩如煙海,但是在這篇文章里面,不討論單核,單線程的算法,而是討論多核,多線程的算法;不討論所有的算法類型(這個不是本文作者能力范圍之內的事),而是討論在多核網絡設備里面常見的算法,以及可能的優化途徑,這些途徑有些經過了驗證,有些還是處于想法階段,暫時沒有實現數據的支持。

多核算法優化的目標無非兩種:lock-free和lock-less。

lock-free是完全無鎖的設計,有兩種實現方式:

  • Per-cpu data,顧名思義,每個核或者線程都有自己私有的數據結構(這里的私有和thread local data是有區別的,這里的私有是邏輯上私有,并不意味著別的線程無法訪問這些數據;而thread local data是線程私有的數據結構,別的線程是無法訪問的。當然,不管是邏輯上私有,還是物理上私有,把共享數據轉化成線程私有數據,就可以避免鎖,避免競爭)。全局變量是共享的,而局部變量是私有的,所以多使用局部變量,同樣可以達到無鎖的目的。
  • CAS based,CAS是compare and swap,這是一個原子操作(spinlock的實現同樣需要compare and swap,但區別是spinlock只有兩個狀態LOCKED和UNLOCKED,而CAS的變量可以有多個狀態);其次,CAS的實現必須由硬件來保障(原子操作),CAS一次可以操作32 bits,也有MCAS,一次可以 比較修改一塊內存。基于CAS實現的數據結構沒有一個統一,一致的實現方法,所以有時不如lock based的算法那么簡單,直接,針對不同的數據結構,有不同的CAS實現方法,讀者可以自己搜索。

lock-less的目的是減少鎖的爭用(contention),而不是減少鎖。這個和鎖的粒度(granularity)相關,鎖的粒度越小,等待的時間就越短,并發的時間就越長。

鎖的爭用,需要考慮不同線程在獲取鎖后,會執行哪些不同的動作。以session pool的分配釋放為例:假設多個線程都會訪問同一個session pool,分配或者釋放session。session pool是個tailq,分配在head上進行;而釋放在tail上進行。

如果多個線程同時訪問session pool,需要一個spinlock來保護這個session pool。那么分配和釋放兩個不同的動作,相互之間就會有爭用,而且多個線程上的分配,或者釋放本身也會有爭用。

現在我們可以考慮分配用一個鎖,釋放用一個鎖,生成一個雙端隊列,這樣可以減少分配和釋放之間的爭用。

http://www.parallellabs.com/2010/10/25/practical-concurrent-queue-algorithm/ (參考這篇文章)。

也可以考慮用兩個pool,分配一個pool,釋放一個pool,在分配pool用完之后,交換兩個pool的指針(這時要考慮兩個pool都是空的情況,這里只是減少了分配和釋放的爭用,但不能完全消除這種爭用)。

不管是lock-based還是CAS-based (lock-free)的數據結構,都需要一個狀態機。不同狀態下,做不同的事,而增加鎖的粒度,也就是增加了狀態機的數量(不是狀態的數量),減小狀態保護的范圍。這個需要在實踐中體會。

原文:性能優化的方法和技巧:算法

【編輯推薦】

  1. 性能優化技巧之必備知識
  2. 性能損耗?文件服務器容量工具告訴你為什么
  3. 性能優化技巧之代碼層次優化
責任編輯:黃丹 來源: 彎曲評論
相關推薦

2011-06-14 14:32:46

性能優化

2011-06-14 13:48:07

性能優化工具

2011-06-14 14:17:23

性能優化系統層次

2011-06-14 11:14:10

性能優化代碼

2017-12-23 14:38:41

Android編程開發優化

2011-03-11 15:53:02

LAMP優化

2011-09-29 09:50:44

JavaScript

2009-06-16 16:39:49

Hibernate性能

2011-03-11 15:52:57

LAMP優化

2018-11-20 10:50:00

Java性能優化編程技巧

2012-07-23 10:22:15

Python性能優化優化技巧

2019-02-25 07:07:38

技巧React 優化

2009-12-09 17:33:22

PHP性能優化

2019-08-21 10:53:29

.NET性能優化

2013-06-08 14:19:05

性能優化KVM

2011-03-11 15:53:00

LAMP優化

2011-03-11 15:52:59

LAMP優化

2024-10-09 23:32:50

2011-07-01 16:05:22

SEO

2021-07-29 14:20:34

網絡優化移動互聯網數據存儲
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩aⅴ视频 | 一区二区三区在线播放 | 国产一级免费视频 | 91精品国产综合久久久久 | 欧美在线视频二区 | 91精品在线播放 | 久久毛片 | 麻豆av在线免费观看 | 中文字幕视频免费 | 国色天香综合网 | 日本久久精 | 青青操91 | 婷婷色国产偷v国产偷v小说 | av小说在线 | 久久久久久国产 | 亚洲欧美综合 | 日本天天操 | 亚洲国产精品99久久久久久久久 | 一级毛片视频在线观看 | 91精品国产一区二区 | 国产一区二区三区四区区 | 夜夜操天天操 | 2021狠狠干| 久久精品国产一区二区三区 | 精品国产一区二区三区四区在线 | 超碰成人免费 | 天天操天天拍 | 国产精品久久久久久亚洲调教 | 久久综合一区 | 美女天天操 | 国产高清视频在线观看 | 黄色免费网 | 欧美日韩不卡合集视频 | 精品美女 | 亚洲www| 天天操一操 | 一级黄色片免费 | 精品网| 伊人精品在线视频 | 亚洲精品视频在线播放 | 97av在线 |