日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

优化-cpu

發(fā)布時間:2024/1/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 优化-cpu 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
優(yōu)化橫向:加新的設(shè)備,架構(gòu)擴(kuò)展縱向:替換新的更好的設(shè)備,使設(shè)備負(fù)載能力更高下面我們討論的是不加設(shè)備也不換設(shè)備的基礎(chǔ)上進(jìn)行系統(tǒng)微調(diào)前面討論的是系統(tǒng)安裝到業(yè)務(wù)上線之前的一些基本優(yōu)化,如果業(yè)務(wù)已經(jīng)在線上,你要優(yōu)化,第一步如何做?比如一個web服務(wù)器慢,可以會有哪些問題?cpu->mem->io->file system->network->os參數(shù)->服務(wù)本身配置-》開發(fā)代碼首先要進(jìn)行服務(wù)器數(shù)據(jù)采集,和性能監(jiān)測分析方法有一:使用cacti,nagios,zabbix等監(jiān)控工具二:使用linux自帶的一些監(jiān)控指令:如vmstat,iostat,mpstat,sar等等硬件問題CPU子系統(tǒng)內(nèi)存子系統(tǒng)IO子系統(tǒng)網(wǎng)絡(luò)子系統(tǒng)文件系統(tǒng)運(yùn)行的服務(wù)等一,cpu(Central Processing Unit)子系統(tǒng)CPU 的占用主要取決于什么樣的資源正在 CPU 上面運(yùn)行,比如拷貝一個文件通常占用較少CPU,只是在完成拷貝以后給一個中斷讓CPU知道拷貝已經(jīng)完成科學(xué)計算通常占用較多的CPU,大部分計算工作都需要在CPU上完成,內(nèi)存、硬盤等子系統(tǒng)只做暫時的數(shù)據(jù)存儲工作要想監(jiān)測和理解CPU的性能需要知道一些的操作系統(tǒng)的基本知識,比如:中斷,進(jìn)程調(diào)度,進(jìn)程上下文切換,可運(yùn)行隊列等cpu單核在同一個時間點只能干一件事,但單核CPU一樣可以跑多任務(wù)操作系統(tǒng),其實就是分CPU資源(時間片)CPU很無辜,是個任勞任怨的打工仔,每時每刻都有工作在做(進(jìn)程、線程)并且自己有一張工作清單(可運(yùn)行隊列),由老板(進(jìn)程調(diào)度)來決定他該干什么,他需要和老板溝通以便得到老板的想法并及時調(diào)整自己的工作  (上下文切換),部分工作做完以后還需要及時向老板匯報(中斷),所以打工仔(CPU)除了做自己該做的工作以外,還有大量時間和精力花在溝通和匯報上。中斷 設(shè)備通知內(nèi)核,完成了一次數(shù)據(jù)處理過程。也可以理解為:cpu停止下來去執(zhí)行別的指令。例如:完成一次IO。或者完成一次網(wǎng)絡(luò)數(shù)據(jù)包的發(fā)送。內(nèi)核處理過程 --- 控制優(yōu)先級,進(jìn)行任務(wù)調(diào)度。用戶進(jìn)程上下文切換 --- 把正在占用cpu的進(jìn)程放回隊列中(每次內(nèi)核的上下文切換,資源被用于關(guān)閉在CPU寄存器中的線程和放置在隊列中)運(yùn)行隊列那么監(jiān)測CPU性能的底線是什么呢?通常我們期望我們的系統(tǒng)能到達(dá)以下目標(biāo):  CPU利用率,如果CPU有100%利用率,那么應(yīng)該到達(dá)這樣一個平衡:65%-70% User Time,30%-35% System Time,0%-5% Idle Time;  上下文切換,上下文切換應(yīng)該和 CPU 利用率聯(lián)系起來看,如果能保持上面的 CPU 利用率平衡,大量的上下文切換是可以接受的;云(虛擬化)  提高資源利用率查看cpu信息# cat /proc/cpuinfo --能看到指令集,CPU核數(shù),頻率,緩存等相關(guān)信息要采集CPU當(dāng)前正在運(yùn)行的信息數(shù)據(jù),要用到下面的命令或者監(jiān)控軟件(nagios,zabbix等)topuptimevmstatmpstat --需要yum install sysstatsar --需要yum install sysstat# vmstat 2 每2秒鐘采集一下數(shù)據(jù)# vmstat 2 3 每2秒鐘采集一次,一共采集3次# vmstat 2procs -----------memory---------- -swap- ----io-- --system-- -----cpu------r b swpd free buff cache si so bi bo in cs us sy id wa st1 0 0 78112 63432 1519100 0 0 233 18 1906 1190 26 13 59 1 01 0 0 78112 63432 1519100 0 0 0 0 4180 1378 33 17 50 0 0r 可運(yùn)行隊列。單核cpu,不應(yīng)該超過3(經(jīng)驗得到的數(shù)據(jù),只是表明大于這個值表明運(yùn)行隊列有點長)b 當(dāng)前被阻塞的進(jìn)程,一般這些進(jìn)程都是在等待某些外部資源而被阻塞。>3需要注意,而且一直出現(xiàn)或者經(jīng)常出現(xiàn),就更值得注意in 中斷數(shù)。一般代表大量設(shè)備操作成功通知內(nèi)核。cs 上下文切換。一般代表任務(wù)需要緊急被cpu處理。數(shù)字高,只能說明內(nèi)核在充分發(fā)揮它的任務(wù)調(diào)度作用。不能簡單通過該數(shù)字判斷cpu就出現(xiàn)瓶頸。us 用戶進(jìn)程所占用的cpu時間的百分比sy 內(nèi)核在進(jìn)行任務(wù)調(diào)度所占用的cpu時間的百分比id cpu空閑所占用的時間百分比.僅僅0不能簡單判斷cpu出現(xiàn)瓶頸,只能說它被充分被留用。wa 等待IO所消耗時間百分比st 被硬件虛擬化的虛擬機(jī)所消耗掉的時間百分比mpstat 和 vmstat 類似,不同的是 mpstat 可以輸出多個處理器的數(shù)據(jù)# mpstat -P ALL 1 ---P ALL表示查看所有CPU核, 1表示每一秒顯示一次10:46:35 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s10:46:36 AM all 26.13 0.00 6.53 0.00 3.52 9.05 0.00 54.77 19478.2210:46:36 AM 0 25.74 0.00 6.93 0.00 2.97 7.92 0.00 56.44 9740.5910:46:36 AM 1 26.73 0.00 6.93 0.00 3.96 10.89 0.00 51.49 9739.60# sar -u 查看cpu相關(guān)的歷史數(shù)據(jù) --這是歷史數(shù)據(jù),是每十分鐘會去采集一次系統(tǒng)相關(guān)的數(shù)據(jù)# sar -u 2 3 --兩秒一次,顯示三次(不是歷史數(shù)據(jù),是當(dāng)前動態(tài)數(shù)據(jù))sysstat --> 提供 sar 命令 (system activity reporter)sar的特點:可以對過去時間的系統(tǒng)狀態(tài)進(jìn)行分析,但不能對某個進(jìn)程進(jìn)行深入分析,只能對系統(tǒng)的整體情況進(jìn)行分析。yum install sysstat -y# service sysstat start# chkconfig sysstat on安裝systat包后,就會自動在 /var/log/sa/saxx 產(chǎn)生數(shù)據(jù) xx代表日期可以使用sar -f /var/log/sa/saxx 去訪問 加參數(shù)就可以訪問不同類型的性能數(shù)據(jù)指定查詢之前的日期與固定時間點的方法sar -u -f /var/log/sa/sa18 --查看這個月已經(jīng)過的18號的cpu歷史數(shù)據(jù)sar -u -f /var/log/sa/sa18 -s 09:00:00 -e 10:00:00 --指定只看18號9點到10點的cpu歷史數(shù)據(jù)保存性能數(shù)據(jù)sar支持保存成兩種格式的文件,一種是文本文件,一種是二進(jìn)制文件 (只有通過sar自己的命令 -f 參數(shù) 才能看)保存為文本文件,可以直接cat命令查看sar -p 1 5 > /tmp/test/sar1.txt保存為二進(jìn)制文件sar -p 1 5 -o /tmp/test/sar2.txt 1>/dev/null --會顯示到屏幕,可以用1>/dev/nullfile /tmp/test/sar2.txt --是data類型文件sar -f /tmp/test/sar2.txt --使用-f參數(shù)讀取可以通過做實驗,再來用vmstat,mpstat,sar來看cpu的變化如:執(zhí)行下面的sh /tmp/2.sh腳本,產(chǎn)生一百個運(yùn)算的進(jìn)程[root@li ~]# cat /tmp/1.sh#!/bin/basha=1sum=0while truedosum=$[$sum+$a]let a++done[root@li ~]# cat /tmp/2.sh#!/bin/bashfor i in `seq 100`dosh /tmp/1.sh &done===========================================================總結(jié):現(xiàn)在的架構(gòu)cpu極少會成為瓶頸.就算是真的cpu成為了瓶頸,對cpu能做的優(yōu)化太少了(要么就換硬件,要么通過擴(kuò)展架構(gòu)來分擔(dān)壓力,殺掉無用并且占用資源的進(jìn)程)系統(tǒng)管理員能改的也就只有進(jìn)程優(yōu)先級了nice 優(yōu)先級 能調(diào)的范圍是 -20到19 -20表示優(yōu)先級最高,19最低用戶運(yùn)行一個程序默認(rèn)給的優(yōu)先級為0renice 對一個已經(jīng)運(yùn)行的進(jìn)程進(jìn)行nice值的調(diào)整renice 19 pid[root@li ~]# vim /tmp/test.sha=1while [ $a -lt 1000000 ]dolet a++donenice 優(yōu)先級高的能夠優(yōu)先分配資源,跑得快,花費(fèi)的時間少,負(fù)載越高,效果越明顯實驗在一個負(fù)載高的情況下做效果更好,比如一個大文件的cp第一個終端:[root@li ~]# time sh /tmp/test.shreal 0m39.363suser 0m26.338ssys 0m0.900s第二個終端:[root@li ~]# time nice --19 sh /tmp/test.sh --19 第一個是參數(shù)的橫杠,第二個是負(fù)號real 0m26.881suser 0m26.008ssys 0m0.871s--對比上面的時間,可以看到 高優(yōu)先級的花費(fèi)的時間少可以把上面的實驗再做一次,馬上用top查出-19的pid值,并使用renice修改renice 19 9683[root@li ~]# time sh /tmp/test.shreal 0m34.665suser 0m26.277ssys 0m0.896s[root@li ~]# time nice --19 sh /tmp/test.shreal 0m37.231suser 0m26.094ssys 0m0.905s--從上面的時間可以看出,-19優(yōu)先級的半路被改為19后,所花費(fèi)的時間反而多了注意:只有管理員才能把優(yōu)先級往高調(diào),普通用戶只能調(diào)自己的,并且只能往低調(diào),調(diào)低后還不能再調(diào)高

轉(zhuǎn)載于:https://www.cnblogs.com/skyzy/p/9201438.html

總結(jié)

以上是生活随笔為你收集整理的优化-cpu的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。