日本三级欧美三级人妇视频黑白配 ,日韩无码电影,性做久久久久久,无码人妻久久一区二区三区不卡

位置:
首頁

>

>

Linux性能挖掘的隱藏技巧:內(nèi)核CPU親和力參數(shù)調(diào)整
時間:

作者:李斌,趙學峰,金融技術工程師,建筑師,社區(qū)嘉賓作者!應用程序服務性能調(diào)整是每個系統(tǒng)投入生產(chǎn)之前需要注意的問題。

在系統(tǒng)和軟件級別上有很多關于調(diào)優(yōu)方法的文章,但是在使用了所有技巧之后,有沒有挖掘潛力?如果您了解Linux內(nèi)核的運行特性并且經(jīng)過簡單配置,仍然有許多可行的解決方案。

本文將介紹一種基于Linux內(nèi)核CPU親和力參數(shù)調(diào)整的解決方案,以壓縮最后一條性能優(yōu)勢。

& nbsp; 1.背景知識CPU是常規(guī)應用程序計算的核心。

從性能的角度來看,您至少需要了解物理CPU,邏輯CPU和超線程技術的實現(xiàn)。

1.物理CPU:計算機上實際安裝的CPU數(shù)量。

2.邏輯CPU:一個物理CPU具有多個邏輯計算核心。

基于英特爾的超線程技術,可以在此基礎上形成更多的核心計算能力。

3.超線程技術(Hyper-Threading):它使用特殊的硬件指令將一個CPU內(nèi)核模擬為多個邏輯CPU,從而形成一個多核和多線程CPU。

總之,這三個之間的邏輯關系如下:邏輯CPU的數(shù)量=物理CPU的數(shù)量* CPU核心的數(shù)量* 2(如果支持并啟用了超線程)。

2. CPU親和力參數(shù)原理CPU的親和力是一個調(diào)度屬性,可以將一個進程綁定到一個或一組CPU。

CPU親和力分為兩種類型:軟親和力和硬親和力。

1)軟CPU親和性意味著該進程應在??指定的CPU上盡可能長地運行,而不必遷移到其他處理器上運行。

Linux內(nèi)核的特性意味著進程通常不會在處理器之間頻繁遷移,以避免這種遷移消耗計算能力并實現(xiàn)最佳平衡。

2)Linux內(nèi)核還包括硬CPU親和力機制,該機制使開發(fā)人員可以實現(xiàn)硬CPU親和力。

這意味著您可以顯式指定該進程在哪個處理器上運行。

在Linux內(nèi)核中,進程數(shù)據(jù)結(jié)構(gòu)是task_struct,與親和性相關的結(jié)構(gòu)是cpus_allowed位掩碼。

該位掩碼由n位組成,并且與系統(tǒng)中的n個邏輯CPU一對一對應。

如果為給定進程設置了給定位,則該進程可以在相關的CPU上運行。

以32個邏輯CPU服務器為例:0x00000001處理器0邏輯CPU可以運行0x00000003處理器0-1邏輯CPU可以遷移并運行0xFFFFFFFF處理器0-31邏輯CPU可以遷移并運行(Linux內(nèi)核默認狀態(tài))。

通常,Linux內(nèi)核可以很好地調(diào)度進程并在應運行的位置(即在可用處理器上運行)運行它們,并獲得良好的整體性能。

Linux內(nèi)核包含一些用于檢測CPU之間的任務負載遷移的算法,并且可以啟用進程遷移以減輕繁忙處理器的壓力。

& nbsp;第三,CPU相似性設置Linux提供了一些方法,這些方法允許用戶修改位掩碼以指定該進程只能在特定(或特定)CPU上運行。

通常,您只需要在應用程序中使用默認的調(diào)度程序行為。

但是,有時我們可能希望修改這些默認行為以實現(xiàn)性能優(yōu)化。

一般來說,出于以下三個原因,我們想使用硬CPU親和力:有很多計算要做;應用程序很復雜;并且時間敏感且決定性的過程正在運行。

總結(jié)了各種方法之后,以下兩個清晰的示例說明了CPU親和力的配置。

1)在應用程序源代碼中設置CPU親和力。

可以通過編程來實現(xiàn)硬CPU親和力設置。

Linux內(nèi)核提供了一些系統(tǒng)API,例如:sched_set_affinity(),sched_get_affinity(),CPU_ZERO(),CPU_SET()等。

設置硬CPU親和性的簡單示例如下:#include #include #include #include #include& nbsp; int main(void){int i,nrcpus; cpu_set_t掩碼;無符號長位掩碼= 0; CPU_ZERO(& amp; mask); //清空一組CPU_SET(0,& amp; mask); //將給定的CPU0添加到集合CPU_SET(2,& amp; mask); //如果(sched_setaffinity(0,sizeof(cpu_set_t),& amp; mask)== -1 ){perror(“ sched_setaffinity”); exit(-1);}返回0;}& nbsp; 2)通過命令設置CPU親和力。

硬CPU親和性設置也可以由taskset命令設置。

任務集的命令格式為:任務集[選項]掩碼命令[arg]…任務集[選項]& nbsp; –p [掩碼] pid& nbsp; mask是CPU關聯(lián)性命令,是可執(zhí)行程序arg,是命令pid的參數(shù),是進程ID。

第一個命令是我們

產(chǎn)品資料
行業(yè)信息