批處理,順序處理請求。(切換次數少,吞吐量大)
分時處理。(如同"獨佔",吞吐量小)(時間片,把請求分為乙個乙個的時間片,一片一片的分給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 sshdwarning: 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 每個處理器應該執行佇列不超過13 個執行緒.
例如: 乙個雙核處理器應該執行佇列不要超過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,解決過...