CPU 記憶體 IO 網路調優

2022-09-16 23:06:21 字數 3823 閱讀 2097

批處理,順序處理請求。(切換次數少,吞吐量大)

分時處理。(如同"獨佔",吞吐量小)(時間片,把請求分為乙個乙個的時間片,一片一片的分給cpu處理)我們現在使用x86就是這種架構

實時處理

例如:

#檢視核心一秒鐘中斷cpu次數

[root@xuegod70 ~]# grep hz /boot/config-3.10.0-693.el7.x86_64

config_no_hz_common=y

# config_hz_periodic is not set

# config_no_hz_idle is not set

config_no_hz_full=y

# config_no_hz_full_all is not set

config_no_hz=y

# config_rcu_fast_no_hz is not set

# config_hz_100 is not set

# config_hz_250 is not set

# config_hz_300 is not set

config_hz_1000=y

config_hz=1000 #1秒鐘有1000次中斷

config_machz_wdt=m

注: 此檔案/boot/config-3.10.0-693.el7.x86_64 是編譯核心的引數檔案

調整程序nice值,讓程序使用更多的cpu

優先順序控制:

nice值 #範圍, -20 ~ 19 越小優先順序越高 普通使用者0-19

nice

作用:以什麼優先順序執行程序 。預設優先順序是0

語法: nice -n 優先順序數字 命令

例:

[root@xuegod63 ~]# nice -n -5 vim a.txt   # vim程序以-5級別執行

檢視:[root@xuegod63 ~]# ps -axu | grep a.txt

[root@xuegod63 ~]# ps -axu | grep a.txt

warning: bad syntax, perhaps a bogus '-'? see /usr/share/doc/procps-3.2.8/faq

root 24318 0.0 0.2 143624 3280 pts/4 s+ 17:00 0:00 vim b.txt

[root@xuegod63 ~]# top -p 24318

pid user pr ni virt res shr s %cpu %mem time+ command

24219 root 15 -5 140m 3336 2200 s 0.0 0.3 0:00.08 vim

檢測一下範圍: -20 - 19

renice #修改正在執行的程序的優先順序

#renice -n 5 pid #修改程序優先順序

[root@xuegod63 ~]# renice -n -21 24219

24219: old priority -20, new priority -20

taskset 作用:在多核的情況下,可以認為指定乙個程序在哪顆cpu上執行程式,減少程序在不同cpu之前切換的開銷。

安裝:

[root@xuegod63 ~]# rpm -qf `which taskset `

util-linux-2.23.2-43.el7.x86_64

語法: taskset -c n 命令

例1:本機是4核cpu ,指定vim命令在第乙個cpu上執行

[root@xuegod63 ~]# taskset -c 0 vim a.txt    #1號cpu id是0

[root@xuegod63 ~]# ps -axu | grep vim

warning: bad syntax, perhaps a bogus '-'? see /usr/share/doc/procps-3.2.8/faq

root 2614 1.3 0.2 143696 3332 pts/0 s+ 18:39 0:00 vim a.txt

[root@xuegod63 ~]# taskset -p 2614 # -p 要檢視的程序id

pid 2614's current affinity mask: 1 #cpu親和力掩碼,1代表第乙個cpu核心

例2:查sshd程序執行在哪幾個cpu上  

[root@xuegod63 ~]# ps -axu | grep sshd

warning: bad syntax, perhaps a bogus '-'? see /usr/share/doc/procps-3.2.8/faq

root 2030 0.0 0.0 64068 1140 ? ss 18:26 0:00 /usr/sbin/sshd

[root@xuegod63 ~]# taskset -p 2030

pid 2030's current affinity mask: f #說明sshd在4顆cpu上隨機進行切換。

說明:

cpu id 號碼,對應的16進製制數為:

cpu id: 7 6 5 4 3 2 1 0

對應的10數為: 128 64 32 16 8 4 2 1

當前, 我的系統中cpu id 的為(0,1,2,3)

pid 2030's current affinity mask: f 的值為cpu id 16進製制的值的和(1+2+4+8=f),轉換成二進位制為:1111

這個說明了(pid=2030)的這個sshd程序工作在cpu id 分別為0,1,2,3這個四個cpu上面的切換。

注: 我們的cpu是4核心,所以taskset -c後可以跟: 0,1,2,3

例:指定vim c.txt 程式執行在第2和第4個cpu上

[root@xuegod63 ~]# taskset -c 1,3 vim b.txt

[root@xuegod63 ~]# ps -axu | grep vim

warning: bad syntax, perhaps a bogus '-'? see /usr/share/doc/procps-3.2.8/faq

root 6314 1.5 0.2 143612 3280 pts/1 s+ 14:41 0:00 vim b.txt

root 6317 0.0 0.0 103300 848 pts/2 s+ 14:41 0:00 grep vim

[root@xuegod63 ~]# taskset -p 6314

pid 6314's current affinity mask: a

# a為十進位制的10=2+8

注:在哪個cpu上執行,那一位就賦為1 。

理解執行佇列,利用率,上下文切換對怎樣cpu 效能最優化之間的關係,早期提及到效能是相對於基準線資料的,在一些系統中,通常預期所達到的效能包括:

run queues ­ 每個處理器應該執行佇列不超過1­3 個執行緒.

例如: 乙個雙核處理器應該執行佇列不要超過6 個

注:有兩個特殊的程序永遠在執行佇列中待著:當前程序和空程序idle。

CPU 記憶體 IO 網路調優

內容 12.1 有關cpu的調優 12.2 有關記憶體的調優 12.3 有關i o的調優 12.4 有關網路的調優 12.5 有關核心引數的調優 12.1.1 cpu處理方式 批處理,順序處理請求。切換次數少,吞吐量大 分時處理。如同 獨佔 吞吐量小 時間片,把請求分為乙個乙個的時間片,一片一片的分...

效能調優 CPU方面,記憶體方面

innodb儲存引擎一般都應用於oltp的資料庫應用,這種應用的特點如下所示 使用者操作的併發量大。事務處理的時間一般比較短。查詢的語句較為簡單,一般都走索引。複雜的查詢較少。可以看出,oltp的資料庫應用本身對cpu的要求並不高,因為複雜的查詢可能需要執行比較 排序 連線等非常耗cpu的操作,這些...

CPU調優總結

原因 應用啟動後,在未做呼叫時cpu占用20 30 開始排查。下面將詳細寫出排查和分析過程。1,確認問題 登入 三颱伺服器,top 或者vmstat 1 一下,檢視cpu占用情況 三颱機器都很高,而且還未有呼叫量,有問題。登入imsi銷售介面伺服器對比檢視 可以確定應用不正常了。開始解決。2,解決過...