親和性介紹
cpu親和性通常被解釋為程序要在指定的 cpu 上盡量長時間地執行而不被遷移到其他處理器,由此也有一些方法把某個程序繫結在某個cpu上,然而這是比較狹義的親和性。
親和性(affinity)指的是兩個事物選擇性地粘著的現象,比如細胞的親和性是指細胞間選擇性地粘著的現象。
如果說到cpu親和性,程序是要跑在cpu上 ,如果程序始終跑在同乙個cpu上,那麼程序上下文切換的代價是最小的,執行效率最高,如果程序換到另乙個cpu上執行,則存在上下文切換的代價,執行效率下降。為什麼會有這種現象?
所謂的「程序上下文」,就是乙個程序在執行的時候,cpu的所有暫存器中的值、程序的狀態以及堆疊上的內容。當核心需要切換到另乙個程序時,需要把這些上下文從當前cpu切出去,儲存在其他地方(快取),以便這個程序在這個cpu上再次執行該程序時,能夠恢復切換時的狀態,繼續執行。
之所以程序希望跑在同乙個cpu上,其實就是要這個cpu對應的、已經快取了的上下文資料。如果這個程序即使第二次執行跑在了同乙個cpu,而這個cpu沒有它上次切出時的上下文,這種親和性也就喪失了意義。
所以cpu親和性應該是程序-cpu-快取的親和性。首先,程序是要跑在cpu上,所以有程序和cpu之間的親和性;第二,程序切回來需要cpu讀資料的時候,是從一級一級的快取(cache)裡面讀取的(記憶體也可以理解為是快取的一種),因此也就有cpu和快取的親和性。
1、程序和cpu之間的親和性
如果程序大部分情況下是在同乙個cpu上執行的,那麼它的親和性就比較好。
然而計算機系統發展到今天,一台計算機已經不僅僅是乙個cpu這麼簡單了。以power為例,我們來看看現在的「程序-cpu」親和性有多少層。
(1)程序執行在同乙個邏輯cpu(即cpu 執行緒,x86的超執行緒或power的smt)
(2)程序執行在同乙個cpu core(乙個core可以有多個執行緒)
(3)程序執行在同乙個cpu chip(乙個chip可以有多個core)
(4)程序執行在同乙個mcm(multi chip module 或者叫slot)(乙個mcm可以有多個chip)
(5)程序執行在同乙個抽屜( drawer)(乙個抽屜可以有多個mcm)
(6)程序執行在不同抽屜
2、cpu和快取之間的親和性
上面提到,當核心需要切換到另乙個程序時,需要把這些上下文從當前cpu切出去,儲存在其他地方(cpu快取或記憶體,記憶體也可以理解為是快取的一種)。因此cpu與快取之間也有親和性的概念。
cpu本身有快取,cpu快取(cache memory)是位於cpu與記憶體之間的臨時儲存器,它的容量比記憶體小的多但是交換速度卻比記憶體要快得多。並且cpu往往有多級快取(l1、l2、l3),當上下文在cpu內部的多級快取都找不到的時候,那就去最大的快取-記憶體裡面查詢。如果cpu和快取/記憶體離得非常遠,那麼此時親和性就非常差。
還是以power7為例:
(1)程序執行在同乙個cpu core,可以共享l1、l2、l3這3級快取
(2) 程序執行在同乙個cpu chip,只能共享l2、l3這2級快取
(3)程序執行在同乙個抽屜,只能共享記憶體,或l3-l3之間的傳遞。
(4) 程序執行在不同抽屜,只能是記憶體到記憶體之間的傳遞。
cpu和快取的親和性最差的情況是,cpu在乙個抽屜,而對應的內存在另乙個抽屜,這種情況下,系統的執行將非常慢,必須調整cpu親和性(後面介紹)。
虛擬化環境下的親和性
在虛擬化環境下,作業系統看到的cpu是虛擬cpu(簡稱vp),作業系統的程序排程機制只能負責把程序排程到vp上,而至於程序跑到了哪個物理cpu上,作業系統的程序排程是不知道的。
在虛擬化環境下,hypervisor層把物理cpu轉換為vp提供給作業系統,虛擬cpu對於hypervisor來說也是乙個軟體的執行緒。hypervisor同時也負責保持虛擬cpu和物理cpu之間的親和性。
虛擬化環境下的程序與cpu的親和性因此分解為「程序和vp的親和性」以及「vp和物理cpu的親和性」(後面會介紹如何檢視親和度)。當乙個lpar的vp過多、ec過少時(例如ec=2,vp=20),有太多的虛擬cpu(其上承載著程序)需要排程到少數的物理cpu,因此造成上下文切換無比巨大,而喪失了hypervisor層面的親和性。
如果採用一些方法把某個程序繫結在某個cpu上,在虛擬化環境下未必能達到期望的效果。
NGINX原理 之 CPU繫結 CPU親和性
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!部落格 日期 2014.06.12 18 44 非統一記憶體訪問 numa 是一種用於多處理器的電腦記憶體設計,記憶體訪問時間取決於處理器的記憶體位置。在numa下,處理器訪問它自己的本地儲存器的速度比非本地儲存器 儲存器的地方到另乙個處理器之間共...
效能指標之資源指標 磁碟 關注指標
對於業務伺服器的使用者來說,看到的是檔案系統或裸裝置,從檔案系統到物理磁碟大概是下圖的樣子。業務伺服器的作業系統作為儲存的使用者只能看到disk 儲存層面的lun 而儲存管理員才知道儲存內部的具體raid方式 條帶化方式等等,在關注系統效能的活動 效能測試 效能調優 中,一般很少直接關注磁碟io的指...
CPU效能指標有哪些
cpu效能指標有 1 頻率 2 cpu的快取容量與效能 3 cpu工作電壓 4 cpu的匯流排方式 5 cpu的製造 6 超標量。cpu效能指標有 一 頻率 cpu的頻率是指其工作頻率,分為主頻 外頻和倍頻。1 主頻其實就是cpu核心工作時的時鐘頻率。cpu的主頻所表示的是cpu內數字脈衝訊號振盪的...