有時我們會發現開發的利用在CPU核數1樣的虛擬服務器上性能表現出較大的差異,這是為何呢?上次有童鞋問到我這樣1個問題,所以我根據自己的理解給大家簡說下!
CPU生產商為了提高CPU的性能,通常做法是提高CPU的時鐘頻率和增加緩存容量。不過目前CPU的頻率愈來愈快,如果再通過提升CPU頻率和增加緩存的方法來提高性能,常常會遭到制造工藝上的限制和本錢太高的制約。因而出現了超線程技術。
超線程技術:將1顆具Hyper-Threading功能的“實體”處理器變成兩個“邏輯”處理器。
Linux命令:
cat /proc/cpuinfo
參數解釋:
processor 邏輯處理器的id
physical id 物理封裝的處理器的id
core id 每一個核心的id
cpu cores 位于相同物理封裝的處理器中的內核數量
siblings 位于相同物理封裝的處理器中的邏輯處理器的數量
cpu MHz 主頻
cache size 緩存大小(KB)
我們先看來虛擬服務器1的CPU配置信息:
說明:該服務器主機有2個物理封裝的處理器(physical id),每一個處理器有1個處理核心(cpu cores),每一個處理核心劃分成2個邏輯處理器(processor),可以看出此處使用了超線程技術,以下所示:
再看來虛擬服務器2的CPU配置信息:
說明:該服務器主機有1個物理封裝的處理器(physical id),每一個處理器有4個處理核心(cpu cores),每一個處理核心劃分成1個邏輯處理器(processor),可以看出此處未使用超線程技術,以下所示:
上述2臺虛擬機,從CPU的角度講哪臺性能會發揮地更好呢?
答:從邏輯處理器數量來看,2臺虛擬機都是4個,但從主頻和緩存大小可以看出,虛擬機2的性能應當比虛擬機1好。
如果2臺虛擬機的主頻和緩存大小1樣呢,從CPU的角度看哪臺性能更好呢?
答:從邏輯處理器數量來看,2臺虛擬機1樣,而虛擬機1使用了超線程技術,理論上講虛擬機1的性能比較靠近虛擬機2的性能,條件的是我們開發利用要支持超線程技術,否則也沒法發揮出良好的性能!這里面其實還有1個誤區:
比如說,我們的利用使用多線程技術開發的,那末在CPU層面開啟了超線程技術,1定會提高性能嗎?答案是不是定的!只有當利用程序使用的線程數大于CPU的核數,性能才能提高上去!
PS~~今天就總結到這里,歡迎大家來討論和交換!
版權聲明:本文為博主原創文章,未經博主允許不得轉載。