成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

系統性能調優之綁定CPU

系統 Linux
如果 CPU 所要操作的數據在緩存中,則直接讀取,這稱為緩存命中。命中緩存會帶來很大的性能提升,因此,我們的代碼優化目標是提升 CPU 緩存的命中率。

[[411388]]

支持超線程的numa架構

物理硬件視角,

將多個CPU封裝在一起,這個封裝被稱為插槽Socket;

Core是socket上獨立的硬件單元;

通過intel的超線程HT技術進一步提升CPU的處理能力,OS看到的邏輯上的核Processor的數量。

每個硬件線程都可以按邏輯cpu尋址,因此這個處理器看上去有八塊cpu。

對于操作系統的視角:

  • CPU(s):8
  • NUMA node0 CPU(s):0,4
  • NUMA node1 CPU(s):1,5
  • NUMA node2 CPU(s):2,6
  • NUMA node3 CPU(s):3,7

操作系統視角.png

L1緩分成兩種,一種是指令緩存,一種是數據緩存。L2緩存和L3緩存不分指令和數據。L1和L2緩存在第一個CPU核中,L3則是所有CPU核心共享的內存。L1、L2、L3的越離CPU近就越小,速度也越快,越離CPU遠,速度也越慢。再往后面就是內存,內存的后面就是硬盤。我們來看一些他們的速度:

  • L1 的存取速度:4 個CPU時鐘周期
  • L2 的存取速度:11 個CPU時鐘周期
  • L3 的存取速度:39 個CPU時鐘周期
  • RAM內存的存取速度 :107 個CPU時鐘周期

如果 CPU 所要操作的數據在緩存中,則直接讀取,這稱為緩存命中。命中緩存會帶來很大的性能提升,因此,我們的代碼優化目標是提升 CPU 緩存的命中率。

圖片

在主流的服務器上,一個 CPU 處理器會有 10 到 20 多個物理核。同時,為了提升服務器的處理能力,服務器上通常還會有多個 CPU 處理器(也稱為多 CPU Socket),每個處理器有自己的物理核(包括 L1、L2 緩存),L3 緩存,以及連接的內存,同時,不同處理器間通過總線連接。通過lscpu來看:

  1. root@ubuntu:~# lscpu 
  2. Architecture:          x86_64 
  3. CPU(s):                32 
  4. Thread(s) per core:    1 
  5. Core(s) per socket:    8 
  6. Socket(s):             4 
  7. L1d cache:             32K 
  8. L1i cache:             32K 
  9. L2 cache:              256K 
  10. L3 cache:              20480K 
  11. NUMA node0 CPU(s):     0-7 
  12. NUMA node1 CPU(s):     8-15 
  13. NUMA node2 CPU(s):     16-23 
  14. NUMA node3 CPU(s):     24-31 

你可能注意到,三級緩存要比一、二級緩存大許多倍,這是因為當下的 CPU 都是多核心的,每個核心都有自己的一、二級緩存,但三級緩存卻是一顆 CPU 上所有核心共享的。

但是,有個地方需要你注意一下:如果應用程序先在一個 Socket 上運行,并且把數據保存到了內存,然后被調度到另一個 Socket 上運行,此時,應用程序再進行內存訪問時,就需要訪問之前 Socket 上連接的內存,這種訪問屬于遠端內存訪問。和訪問 Socket 直接連接的內存相比,遠端內存訪問會增加應用程序的延遲。

常用性能監測工具

Linux系統下,CPU與內存子系統性能調優的常用性能監測工具有top、perf、numactl這3個工具。1) top工具 top工具是最常用的Linux性能監測工具之一。通過top工具可以監視進程和系統整體性能。

  • top 查看系統整體的資源使用情況
  • top后輸入1 查看看每一個邏輯核cpu的資源使用情況
  • top -p $PID -H 查看某個進程內所有檢查的CPU資源使用情況
  • top后輸入F,并選擇P選項 查看線程執行過程中是否調度到其他cpu上執行,上下文切換過多時,需要注意。

2) perf工具 perf工具是非常強大的Linux性能分析工具,可以通過該工具獲得進程內的調用情況、資源消耗情況并查找分析熱點函數。以CentOS為例,使用如下命令安裝perf工具:

  • perf top 查看占用 CPU 時鐘最多的函數或者指令,因此可以用來查找熱點函數。
  • perf -g record -- sleep 1 -p $PID 記錄進程在1s內的系統調用。
  • perf -g latency --sort max 查看上一步記錄的結果,以調度延遲排序。
  • perf report 查看記錄

3) numactl工具 numactl工具可用于查看當前服務器的NUMA節點配置、狀態,可通過該工具將進程綁定到指定CPU核上,由指定CPU核來運行對應進程。以CentOS為例,使用如下命令安裝numactl工具:

  • numactl -H 查看當前服務器的NUMA配置。
  • numastat 查看當前的NUMA運行狀態。

優化方法

(1) NUMA優化,減少跨NUMA訪問內存 不同NUMA內的CPU核訪問同一個位置的內存,性能不同。內存訪問延時從高到低為:跨CPU>跨NUMA,不跨CPU>NUMA內。因此在應用程序運行時要盡可能地避免跨NUMA訪問內存,這可以通過設置線程的CPU親和性來實現。常用的修改方式有如下:(1)將設備中斷綁定到特定CPU核上。可以通過如下命令綁定:

  1. echo $cpuNumber > /proc/irq/$irq/smp_affinity_list 
  2.  例子:echo 0-4 > /proc/irq/78/smp_affinity_list 
  3.       echo 3,8 > /proc/irq/78/smp_affinity_list 

(2)通過numactl啟動程序,如下面的啟動命令表示啟動程序./mongod,mongo就只能在CPU core 0到core7運行(-C控制)。

  1. numactl -C 0-7 ./mongod 

(3)可以使用 taskset 命令把一個程序綁定在一個核上運行。

  1. taskset -c 0 ./redis-server 

(4)在C/C++代碼中通過sched_setaffinity函數來設置線程親和性。(5)很多開源軟件已經支持在自帶的配置文件中修改線程的親和性,例如Nginx可以修改nginx.conf文件中worker_cpu_affinity參數來設置Nginx線程親和性。

綁核注意事項

在 CPU 的 NUMA 架構下,對 CPU 核的編號規則,并不是先把一個 CPU Socket 中的所有邏輯核編完,再對下一個 CPU Socket 中的邏輯核編碼,而是先給每個 CPU Socket 中每個物理核的第一個邏輯核依次編號,再給每個 CPU Socket 中的物理核的第二個邏輯核依次編號。

注意的是在多個進程要進行親和性綁核的,你一定要注意 NUMA 架構下 CPU 核的編號方法,這樣才不會綁錯核。

本文轉載自微信公眾號「運維開發故事」,可以通過以下二維碼關注。轉載本文請聯系運維開發故事公眾號。

 

責任編輯:姜華 來源: 運維開發故事
相關推薦

2011-03-18 11:13:07

LAMP度量性能

2013-03-20 17:18:07

Linux系統性能調優

2011-03-21 09:35:38

LAMP調優網絡文件

2011-03-21 09:17:35

LAMP調優磁盤

2011-03-10 14:40:54

LAMPMysql

2013-02-28 13:37:59

系統性能調優技術實戰

2011-03-18 11:21:48

2011-03-10 14:40:52

2013-03-12 17:33:17

Linux系統性能調優

2024-04-01 08:04:05

JProfilerJVM工具

2011-07-01 10:09:50

ASP.NET

2011-03-10 14:40:50

2011-03-18 11:00:48

LAMPLAMP 架構

2013-03-18 15:35:30

2017-07-04 13:02:02

Linux系統性能調優工具

2017-07-21 08:55:13

TomcatJVM容器

2011-05-27 10:35:05

PerfLinux系統性能

2013-03-18 15:07:10

Linux系統性能調優

2020-06-10 10:40:03

JavaJMH字符串

2012-06-20 11:05:47

性能調優攻略
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久草欧美视频 | 自拍视频网站 | 久久久毛片| aaa天堂| 精品九九九 | 日韩在线观看网站 | 特黄色一级毛片 | 中国一级特黄真人毛片免费观看 | 午夜国产羞羞视频免费网站 | 亚洲免费视频一区二区 | 久在线观看| 欧美成人免费在线视频 | 久久久精品网站 | 午夜成人免费视频 | 九九热最新视频 | 久久精品亚洲精品国产欧美kt∨ | 欧美在线观看免费观看视频 | 99精品视频免费在线观看 | 一区二区亚洲 | 九九亚洲 | 久久精品久久久久久 | 亚洲精品乱码久久久久久蜜桃91 | 中文字幕视频在线观看 | 香蕉大人久久国产成人av | 手机日韩 | 久久久久国产精品一区二区 | 久久久亚洲精品视频 | 欧洲亚洲精品久久久久 | 91视频www.| 福利网址| 亚洲欧美日韩精品久久亚洲区 | 蜜桃精品视频在线 | av一区二区三区 | 中文天堂网 | 欧美日韩一卡二卡 | 极品一区| 欧美在线网站 | 欧美一级在线免费观看 | 中文字幕一区在线观看视频 | 国产在线精品一区二区 | 亚洲视频免费观看 |