NGINX原理 之 CPU繫結 CPU親和性

2021-08-31 23:40:01 字數 1819 閱讀 5015

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

部落格:日期:2014.06.12 18:44

非統一記憶體訪問(numa)是一種用於多處理器的電腦記憶體設計,記憶體訪問時間取決於處理器的記憶體位置。 在numa下,處理器訪問它自己的本地儲存器的速度比非本地儲存器(儲存器的地方到另乙個處理器之間共享的處理器或儲存器)快一些。

針對numa架構系統的特點,可以通過將程序/執行緒繫結指定cpu(乙個或多個)的方式,提高cpu cache的命中率,減少程序/執行緒遷移cpu造成的記憶體訪問的時間消耗,從而提高程式的執行效率。[注:關於cpu親和性的概念,可參考《管理處理器的親和性》]

nginx程序繫結cpu的**非常簡單,其中的核心介面為sche_setaffinity(),如下所示:

**1 繫結cpu

經分析可知:

1) 1程序可繫結到1個或多個cpu核

-> 如果cpu_affinity的值對應的二進位制值為以下值時,那麼程序將繫結到第7和第63個cpu。(從0開始,下同)

10000000 00000000

00000000 00000000

00000000 00000000

00000000 10000000

-> 如果cpu_affinity的值對應的二進位制值為以下值時,那麼程序將繫結到第2、第3和第7個cpu。

00000000 00000000

00000000 00000000

00000000 00000000

00000000 10001100

其他情況可以依此類推。

2) 該函式可設定cpu核範圍:第0~63個.因為引數cpu_affinity的型別為uint64_t,其占用64位.

根據nginx原始碼的實現,可以編寫如下測試**:

圖1 測試**

1) 測試之前:cpu0和cpu1的消耗都很低

圖2 測試之前

2) 繫結cpu0:cpu0的使用接近100%,而cpu1基本不變

圖3 繫結cpu0

2) 繫結cpu1:cpu1的使用接近100%,而cpu0基本不變

圖4 繫結cpu1

除了sched_setaffinity()

圖5 執行緒繫結cpu

以上**對應的makefile如下:

圖6 makefile

給我老師的人工智慧教程打call!

nginx 網路模型,cpu親和等優點

nginx優點 1.io多路復用epoll io多路復用 多個描述符的i o操作都能在乙個執行緒內併發交替地順序完成,這裡的 復用 指的是復用同乙個執行緒 epoll io多路復用的實現方式 select,poll,epoll select缺點 1 能夠監視檔案描述符的數量存在最大限制 1024 2...

CPU的親和度

cpu的親和性,程序要在某個給定的 cpu 上盡量長時間地執行而不被遷移到其他處理器的傾向性,程序遷移的頻率小就意味著產生的負載小。在多核執行的機器上,每個cpu本身自己會有快取,在快取中存著程序使用的資料,而沒有繫結cpu的話,程序可能會被作業系統排程到其他cpu上,如此cpu cache 高速緩...

SylixOS設定CPU親和性

cpu親和性 affinity 就是程序要在某個給定的cpu上盡量長時間地執行而不被遷移到其他處理器的傾向性。sylixos支援對稱多處理器 symmetric multi processor 其執行緒是排程的最小單位,sylixos可以對應用層執行緒,核心執行緒以及中斷設定cpu親和性,即將不同執...