分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!
部落格:日期: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親和性,即將不同執...