autosar中cpu的負(fù)載可以用CPU一段工作時(shí)間與該時(shí)間段內(nèi)被占用時(shí)間的比值來計(jì)算,可以得之CPU負(fù)載率=占用時(shí)間除以運(yùn)行總時(shí)間。
負(fù)載,在物理學(xué)中指連接在電路中的兩端具有一定電勢差的電子元件,用于把電能轉(zhuǎn)換成其他形式的能的裝置。
在電工學(xué)中指在電路中接收電能的設(shè)備,是各類用電器的總稱。
常用的負(fù)載有電阻、引擎、燈泡、空調(diào)、電動(dòng)機(jī)等可消耗功率的元件。
對負(fù)載最基本的要求是阻抗匹配和所能承受的功率。
小編還為您整理了以下內(nèi)容,可能對您也有幫助:
autosar中cpu的負(fù)載可以用CPU一段工作時(shí)間與該時(shí)間段內(nèi)被占用時(shí)間的比值來計(jì)算,可以得之CPU負(fù)載率=占用時(shí)間除以運(yùn)行總時(shí)間。
負(fù)載,在物理學(xué)中指連接在電路中的兩端具有一定電勢差的電子元件,用于把電能轉(zhuǎn)換成其他形式的能的裝置。
在電工學(xué)中指在電路中接收電能的設(shè)備,是各類用電器的總稱。
常用的負(fù)載有電阻、引擎、燈泡、空調(diào)、電動(dòng)機(jī)等可消耗功率的元件。
對負(fù)載最基本的要求是阻抗匹配和所能承受的功率。
cpu 使用率和負(fù)載的關(guān)系和區(qū)別
當(dāng)我們使用top命令查看系統(tǒng)的資源使用情況時(shí)會(huì)看到 load average,如下圖所示。它表示系統(tǒng)在1、5、15分鐘的平均工作負(fù)載。那么什么是負(fù)載(load)呢?它和CPU的利用率又有什么關(guān)系呢?
load average:系統(tǒng)平均負(fù)載是CPU的Load,它所包含的信息不是CPU的使用率狀況,而是在一段時(shí)間內(nèi)CPU正在處理以及等待CPU處理的進(jìn)程數(shù)之和的統(tǒng)計(jì)信息,也就是CPU使用隊(duì)列的長度的統(tǒng)計(jì)信息。這個(gè)數(shù)字越小越好。
CPU利用率:顯示的是程序在運(yùn)行期間實(shí)時(shí)占用的CPU百分比
CPU負(fù)載:顯示的是一段時(shí)間內(nèi)正在使用和等待使用CPU的平均任務(wù)數(shù)。CPU利用率高,并不意味著負(fù)載就一定大。舉例來說:如果我有一個(gè)程序它需要一直使用CPU的運(yùn)算功能,那么此時(shí)CPU的使用率可能達(dá)到100%,但是CPU的工作負(fù)載則是趨近于“1”,因?yàn)镃PU僅負(fù)責(zé)一個(gè)工作嘛!如果同時(shí)執(zhí)行這樣的程序兩個(gè)呢?CPU的使用率還是100%,但是工作負(fù)載則變成2了。所以也就是說,當(dāng)CPU的工作負(fù)載越大,代表CPU必須要在不同的工作之間進(jìn)行頻繁的工作切換。
舉例說明
網(wǎng)上有篇文章舉了一個(gè)有趣比喻,拿打電話來說明兩者的區(qū)別,我按自己的理解闡述一下。
某公用電話亭,有一個(gè)人在打電話,四個(gè)人在等待,每人限定使用電話一分鐘,若有人一分鐘之內(nèi)沒有打完電話,只能掛掉電話去排隊(duì),等待下一輪。電話在這里就相當(dāng)于CPU,而正在或等待打電話的人就相當(dāng)于任務(wù)數(shù)。
在電話亭使用過程中,肯定會(huì)有人打完電話走掉,有人沒有打完電話而選擇重新排隊(duì),更會(huì)有新增的人在這兒排隊(duì),這個(gè)人數(shù)的變化就相當(dāng)于任務(wù)數(shù)的增減。為了統(tǒng)計(jì)平均負(fù)載情況,我們5分鐘統(tǒng)計(jì)一次人數(shù),并在第1、5、15分鐘的時(shí)候?qū)y(tǒng)計(jì)情況取平均值,從而形成第1、5、15分鐘的平均負(fù)載。
有的人拿起電話就打,一直打完1分鐘,而有的人可能前三十秒在找電話號碼,或者在猶豫要不要打,后三十秒才真正在打電話。如果把電話看作CPU,人數(shù)看作任務(wù),我們就說前一個(gè)人(任務(wù))的CPU利用率高,后一個(gè)人(任務(wù))的CPU利用率低。
當(dāng)然, CPU并不會(huì)在前三十秒工作,后三十秒歇著,只是說,有的程序涉及到大量的計(jì)算,所以CPU利用率就高,而有的程序牽涉到計(jì)算的部分很少,CPU利用率自然就低。但無論CPU的利用率是高是低,跟后面有多少任務(wù)在排隊(duì)沒有必然關(guān)系。
這個(gè)有爭議,各有各的說法,個(gè)人比較贊同CPU負(fù)載小于等于0.5算是一種理想狀態(tài)。
不管某個(gè)CPU的性能有多好,1秒鐘能處理多少任務(wù),我們可以認(rèn)為它無關(guān)緊要,雖然事實(shí)并非如此。在評估CPU負(fù)載時(shí),我們只以5分鐘為單位為統(tǒng)計(jì)任務(wù)隊(duì)列長度。如果每隔5分鐘統(tǒng)計(jì)的時(shí)候,發(fā)現(xiàn)任務(wù)隊(duì)列長度都是1,那么CPU負(fù)載就為1。假如我們只有一個(gè)單核的CPU,負(fù)載一直為1,意味著沒有任務(wù)在排隊(duì),還不錯(cuò)。
但是我那臺(tái)服務(wù)器,是雙核CPU,等于是有4個(gè)內(nèi)核,每個(gè)內(nèi)核的負(fù)載為1的話,總負(fù)載為4。這就是說,如果我那臺(tái)服務(wù)器的CPU負(fù)載長期保持在4左右,還可以接受。
但是每個(gè)內(nèi)核的負(fù)載為1,并不能算是一種理想狀態(tài)!這意味著我們的CPU一直很忙,不得清閑。網(wǎng)上有說理想的狀態(tài)是每個(gè)內(nèi)核的負(fù)載為0.7左右,我比較贊同,0.7乘以內(nèi)核數(shù),得出服務(wù)器理想的CPU負(fù)載,比如我這臺(tái)服務(wù)器,負(fù)載在3.0以下就可以。
最簡單辦法的是更換性能更好的服務(wù)器,不要想著僅僅提高CPU的性能,那沒有用,CPU要發(fā)揮出它最好的性能還需要其它軟硬件的配合。
在服務(wù)器其它方面配置合理的情況下,CPU數(shù)量和CPU核心數(shù)(即內(nèi)核數(shù))都會(huì)影響到CPU負(fù)載,因?yàn)槿蝿?wù)最終是要分配到CPU核心去處理的。兩塊CPU要比一塊CPU好,雙核要比單核好。
因此,我們需要記住,除去CPU性能上的差異,CPU負(fù)載是基于內(nèi)核數(shù)來計(jì)算的!有一個(gè)說法,“有多少內(nèi)核,即有多少負(fù)載”。
4. CPU使用率到多少才算比較理想?
CPU利用率在過去常常被我們這些外行認(rèn)為是判斷機(jī)器是否已經(jīng)到了滿負(fù)荷的一個(gè)標(biāo)準(zhǔn),我看到長時(shí)間CPU使用率60-80%就認(rèn)為機(jī)器有瓶頸出現(xiàn)。
-----------------------------------
https://blog.51cto.com/wks97/2073217
cpu占用和性能有關(guān)系嗎?
CPU占用率和CPU性能有關(guān)系,一般說來,同樣的應(yīng)用,CPU占用率越低,說明這個(gè)CPU性能越高。有一定的關(guān)系,但不是說必然的正比例的關(guān)系。還和溫度啊,顯卡內(nèi)存等其他配套設(shè)備有關(guān)。一個(gè)性能高的CPU但內(nèi)存少可能也占用多。
而cpu使用率指cpu的負(fù)載情況。打開資源管理器(ctrl+alt+del),就可以看見cpu的使用率,是用百分比(%)表示的,一般都在5%~100%之間,數(shù)值大小根據(jù)cpu的負(fù)載情況而定。百分比數(shù)值越大就是表示cpu的負(fù)載越高,反之亦然。
于是cpu主頻和使用率的關(guān)系就出來了。同等檔次的cpu,在處理相同數(shù)據(jù)量的時(shí)候,主頻高的cpu,其使用率低;主頻低的cpu,使用率就高。
CPU使用率指的是程序在運(yùn)行期間實(shí)時(shí)占用的CPU百分比,這是對一個(gè)時(shí)間段內(nèi)CPU使用狀況的統(tǒng)計(jì)。通過這個(gè)指標(biāo)可以看出在某一個(gè)時(shí)間段內(nèi)CPU被占用的情況。
CPU(Central Processing Unit)是計(jì)算機(jī)系統(tǒng)的運(yùn)算和控制核心,是信息處理、程序運(yùn)行的最終執(zhí)行單元,相當(dāng)于系統(tǒng)的“大腦”。當(dāng) CPU 過于繁忙,就像“人腦”并發(fā)處理過多的事情,會(huì)降低做事的效率,嚴(yán)重時(shí)甚至?xí)?dǎo)致崩潰“宕機(jī)”。因此,理解 CPU 的工作原理,合理控制負(fù)載,是保障系統(tǒng)穩(wěn)定持續(xù)運(yùn)行的重要手段。
CPU性能首先是與架構(gòu)有很大關(guān)系,不管頻率多高,核心數(shù)多強(qiáng),如果架構(gòu)本身效率低,那么這顆CPU的效能也不會(huì)好
CPU資源占用率高會(huì)導(dǎo)致電腦運(yùn)行速度變慢,如果是偶爾出現(xiàn)這種情況并很快恢復(fù)則屬于正常。但如果長期居高不下就有問題了,很多人第一時(shí)間會(huì)想到中毒了。通過升級殺毒軟件并殺毒,排除了病毒的原因后,如果CPU資源占用率還是居高不下,
很多人就不知道怎么辦了第一時(shí)間想到病毒這很正常,畢竟這也是感染病毒后的典型癥狀,但并不代表一定有病毒。如果排除了病毒的原因,我建議還是先從進(jìn)程入手,在任務(wù)管理器中檢查一下是哪個(gè)進(jìn)程占用了大量的CPU資源,記住這個(gè)進(jìn)程名稱,到網(wǎng)上搜索一下別人對這個(gè)進(jìn)程的描述,這樣可借用他人成功的經(jīng)驗(yàn)來分析、處理自己遇到的故障。要注意的是部分系統(tǒng)進(jìn)程也可能被病毒利用
CPU負(fù)載太高什么意思啊
即目前工作量已經(jīng)接近于CPU的最大算力了,這會(huì)導(dǎo)致電腦反應(yīng)過慢。負(fù)載就是cpu在一段時(shí)間內(nèi)正在處理以及等待cpu處理的進(jìn)程數(shù)之和的統(tǒng)計(jì)信息,也就是cpu使用隊(duì)列的長度統(tǒng)計(jì)信息,這個(gè)數(shù)字越小越好。
負(fù)載分為兩大部分:CPU負(fù)載、IO負(fù)載。
例如,假設(shè)有一個(gè)進(jìn)行大規(guī)??茖W(xué)計(jì)算的程序,雖然該程序不會(huì)頻繁地從磁盤輸入輸出,但是處理完成需要相當(dāng)長的時(shí)間。因?yàn)樵摮绦蛑饕挥脕碜鲇?jì)算、邏輯判斷等處理,所以程序的處理速度主要依賴于cpu的計(jì)算速度。
擴(kuò)展資料
原因:
1、磁盤讀寫請求過多就會(huì)導(dǎo)致大量I/O等待
cpu的工作效率要高于磁盤,而進(jìn)程在cpu上面運(yùn)行需要訪問磁盤文件,這個(gè)時(shí)候cpu會(huì)向內(nèi)核發(fā)起調(diào)用文件的請求,讓內(nèi)核去磁盤取文件,這個(gè)時(shí)候會(huì)切換到其他進(jìn)程或者空閑,這個(gè)任務(wù)就會(huì)轉(zhuǎn)換為不可中斷睡眠狀態(tài)。當(dāng)這種讀寫請求過多就會(huì)導(dǎo)致不可中斷睡眠狀態(tài)的進(jìn)程過多,從而導(dǎo)致負(fù)載高,cpu低的情況。
2、MySQL中存在沒有索引的語句或存在死鎖等情況
MySQL的數(shù)據(jù)是存儲(chǔ)在硬盤中,如果需要進(jìn)行sql查詢,需要先把數(shù)據(jù)從磁盤加載到內(nèi)存中。當(dāng)在數(shù)據(jù)特別大的時(shí)候,如果執(zhí)行的sql語句沒有索引,就會(huì)造成掃描表的行數(shù)過大導(dǎo)致I/O阻塞,或者是語句中存在死鎖,也會(huì)造成I/O阻塞,從而導(dǎo)致不可中斷睡眠進(jìn)程過多,導(dǎo)致負(fù)載過大。
系統(tǒng)負(fù)載是什么
問題一:什么是計(jì)算機(jī)負(fù)載?操作系統(tǒng)負(fù)載是什么? 使用uptime或者top命令,都可以看到一個(gè)負(fù)載的輸出,形如load average: 0.00, 0.03, 0.00,這個(gè)負(fù)載到底是什么東西呢,man文檔里只是一筆帶過,沒有具體的給出負(fù)載的定義。 負(fù)載的統(tǒng)計(jì),必然是由內(nèi)核完成的,因此在內(nèi)核源碼中找答案是再好不過的事情了,找來2.6.21的內(nèi)核源碼,開始探索?! 」?jié)選部分源碼: kernel/timer.c
1254 active_tasks = count_active_tasks();
1256 CALC_LOAD(avenrun[0], EXP_1, active_tasks);
1257 CALC_LOAD(avenrun[1], EXP_5, active_tasks);
1258 CALC_LOAD(avenrun[2], EXP_15, active_tasks);
include/linux/sched.h
110 #define FSHIFT 11 /* nr of bits of precision */
111 #define FIXED_1 (1>= FSHIFT; load(t) = ( load(t-1)*exp(i) + n(t)*(2048-exp(i)) ) / 2048 load(t-1)為上次計(jì)算出的結(jié)果 n(t)為t時(shí)刻的活動(dòng)進(jìn)程數(shù) 計(jì)算方式是累加各個(gè)CPU的運(yùn)行隊(duì)列中running和uninterruptible的值 再乘以2048 計(jì)算方式如下: 1946 unsigned long nr_active(void)
1947 {
1948 unsigned long i, running = 0, uninterruptible = 0;
1949
1950 for_each_online_cpu(i) {
1951 running += cpu_rq(i)->nr_running;
1952 uninterruptible += cpu_rq(i)->nr_uninterruptible;
1953 }
1954
1955 if (unlikely((long)uninterruptible >
問題二:電力系統(tǒng)中負(fù)載什么意思?負(fù)荷什么意思 電力系統(tǒng)用語負(fù)載就是消耗電能的設(shè)備,除了工礦企業(yè)和家庭用電設(shè)備以外,系統(tǒng)中的變壓器,輸電線路等也消耗一定的電能,所以也可以認(rèn)為是發(fā)電機(jī)的負(fù)載。負(fù)載二字就是負(fù)擔(dān)載荷的意思。
負(fù)荷有時(shí)和負(fù)載可以通用。對發(fā)電機(jī)來說負(fù)荷表示發(fā)電機(jī)輸出的有功功率和無功功率,對用戶來說負(fù)荷表示用電量的大小。發(fā)電機(jī)變壓器滿負(fù)荷表示它已達(dá)到最大功率。大致含義如此。
問題三:linux系統(tǒng)平均負(fù)載,數(shù)值是什么意思? 系統(tǒng)平均負(fù)載被定義為在特定時(shí)間間隔內(nèi)運(yùn)行隊(duì)列中的平均進(jìn)程樹。如果一個(gè)進(jìn)程滿足以下條件則其就會(huì)位于運(yùn)行隊(duì)列中:- 它沒有在等待I/O 操作的結(jié)果- 它沒有主動(dòng)進(jìn)入等待狀態(tài)(也就是沒有調(diào)用'wait') - 沒有被停止(例如:等待終止) 例如:[[email protected] init.d]# uptime 7:51pm up 2 days, 5:43, 2 users,load average: 8.13 , 5.90 , 4.94 命令輸出的最后內(nèi)容表示在過去的1 、5 、15分鐘內(nèi)運(yùn)行隊(duì)列中的平均進(jìn)程數(shù)量。 一般來說只要每個(gè)CPU 的當(dāng)前活動(dòng)進(jìn)程數(shù)不大于3 那么系統(tǒng)的性能就是良好的,如果每個(gè)CPU 的任務(wù)數(shù)大于5 ,那么就表示這臺(tái)機(jī)器的性能有嚴(yán)重問題。對于上面的例子來說,假設(shè)系統(tǒng)有兩個(gè)CPU ,那么其每個(gè)CPU 的當(dāng)前任務(wù)數(shù)為:8.13/2=4.065.這表示該系統(tǒng)的性能是可以接受的。
問題四:什么叫做操作系統(tǒng)負(fù)載基線 負(fù)載壓力測試有助于確認(rèn)被測系統(tǒng)是否能夠支持性能需求,以及預(yù)期的負(fù)載增長等。負(fù)載壓力測試不只是關(guān)注不同負(fù)載場景下的響應(yīng)時(shí)間等指標(biāo),它也要通過測試來發(fā)現(xiàn)在不同負(fù)載場景下會(huì)出現(xiàn)的,例如速度變慢、內(nèi)存泄漏等問題的原因。負(fù)載壓力測試是性能測試的重要組成部分,負(fù)載壓力測試包括并發(fā)性能測試、疲勞強(qiáng)度測試、大數(shù)據(jù)量測試等內(nèi)容。
問題五:負(fù)載是什么意思 負(fù)川是指連接在電路中的電源兩端的電路元件。
電路中不應(yīng)沒有負(fù)載而直接把電源兩極相連,此連接稱為短路。常用的負(fù)載有電阻、引擎和燈泡等可消耗功率的元件。不消耗功率的元件,如電容,也可接上去,但此情況為斷路。在應(yīng)用電力系統(tǒng)中,發(fā)電廠的地位相當(dāng)于電源,而工廠,家庭等消耗電能,是負(fù)載。
問題六:電力系統(tǒng)中的負(fù)載是什么意思? 用電器,電阻之類
問題七:什么是系統(tǒng)負(fù)載?uptime? 系統(tǒng)平均負(fù)載被定義為在特定時(shí)間間隔內(nèi)運(yùn)行隊(duì)列中的平均進(jìn)程樹。如果一個(gè)進(jìn)程滿足一下條件則其就會(huì)位于運(yùn)行隊(duì)中中:
它沒有在等待I/O操作的結(jié)果它沒有主動(dòng)進(jìn)入等待狀態(tài)(也就是沒有調(diào)用wait)沒有被停止(例如:等待終止) 一般來說,每個(gè)CPU內(nèi)核當(dāng)前活動(dòng)進(jìn)程樹不大于3,則系統(tǒng)運(yùn)行表現(xiàn)良好!當(dāng)然這里說的是每個(gè)CPU
內(nèi)核,也就是如果你的主機(jī)是四核CPU的話,那么只要是uptime最后輸出的一串字符數(shù)值小于12即表示系統(tǒng)負(fù)載不是很嚴(yán)重。
當(dāng)然如果達(dá)到20,那就表示當(dāng)前系統(tǒng)負(fù)載非常嚴(yán)重,估計(jì)打開執(zhí)行web腳本非常緩慢。
以下顯示輸入uptime的信息:
問題八:什么是負(fù)載均衡 負(fù)載平衡也稱負(fù)載共享,是指對系統(tǒng)中的負(fù)載情況進(jìn)行動(dòng)態(tài)調(diào)整,以盡量消除或減少系統(tǒng)中各節(jié)點(diǎn)負(fù)載不均衡的現(xiàn)象。具體實(shí)現(xiàn)方法是將過載節(jié)點(diǎn)上的任務(wù)轉(zhuǎn)移到其他輕載節(jié)點(diǎn)上,盡可能實(shí)現(xiàn)系統(tǒng)各節(jié)點(diǎn)的負(fù)載平衡,從而提高系統(tǒng)的吞吐量。負(fù)載共享有利于統(tǒng)籌管理分布式系統(tǒng)中的各種資源,便于利用共享信息及其服務(wù)機(jī)制擴(kuò)大系統(tǒng)的處理能力。
動(dòng)態(tài)負(fù)載共享策略是指把系統(tǒng)中各節(jié)點(diǎn)上已有的負(fù)載作為參考信息,在運(yùn)行過程中,根據(jù)系統(tǒng)中各節(jié)點(diǎn)的負(fù)載狀況,隨時(shí)調(diào)整負(fù)載的分配,使各節(jié)點(diǎn)盡可能保持負(fù)載的平衡。
負(fù)載:負(fù)載共享算法中的關(guān)鍵問題是如何確定負(fù)載。根據(jù)任務(wù)負(fù)載可以判斷某一任務(wù)在特定節(jié)點(diǎn)的響應(yīng)時(shí)間,確定在該節(jié)點(diǎn)上的執(zhí)行性能。曾經(jīng)被研究及使用的負(fù)載包括CPU隊(duì)列長度、某時(shí)間內(nèi)的平均CPU隊(duì)列長度、CPU利用率等。Kunz發(fā)現(xiàn)負(fù)載的選取對系統(tǒng)性能有著重要的影響,而最有效的負(fù)載計(jì)算方式是CPU隊(duì)列長度。
動(dòng)機(jī):用戶將任務(wù)提交給系統(tǒng)處理,由于任務(wù)到達(dá)的隨機(jī)性導(dǎo)致了某些處理機(jī)處于過載而某些處理處于空閑或輕載狀態(tài)。負(fù)載共享能夠通過將過載處理機(jī)上的任務(wù)遷移到輕載處理機(jī)上執(zhí)行來提高性能。
性能:從靜態(tài)角度看,高性能是指各處理機(jī)上的負(fù)載基本平衡。從動(dòng)態(tài)角度看,性能的尺度是任務(wù)的平均響應(yīng)時(shí)間,而任務(wù)的響應(yīng)時(shí)間是指任務(wù)從提交到開始執(zhí)行的持續(xù)時(shí)間。
負(fù)載平衡策略:
動(dòng)態(tài)負(fù)載平衡策略包含四個(gè)部分:轉(zhuǎn)移策略、選擇策略、定位策略和信息策略。
問題九:cpu負(fù)載是什么意思 cpu負(fù)載的定義:在一般情況下可以將單核心cpu的負(fù)載看成是一條單行的橋,數(shù)字1代表cpu剛好能夠處理過來,即橋上能夠順利通過所有的車輛,橋外沒有等待的車輛,橋是暢通的。當(dāng)超過1時(shí)表示有等待上橋的車輛,小于1時(shí)表示車輛能夠快速的通過。單核心cpu就表示該cpu能夠處理的事務(wù)數(shù)是1,
在多核cpu中cpu能夠并行處理的事務(wù)的數(shù)量應(yīng)該是cpu個(gè)數(shù)*cpu核數(shù),而且負(fù)載數(shù)最好不要超過這個(gè)數(shù)值。例如一個(gè)4核cpu,則cpu_load最大值為4,不能長期超過4,否則會(huì)有任務(wù)沒有得到及時(shí)的處理,而使系統(tǒng)的負(fù)載累積增高,導(dǎo)致系統(tǒng)運(yùn)行緩慢。
問題十:請問高手們,軟件系統(tǒng)負(fù)載壓力測試的主要目的是什么? 首先,你的問題本身不夠準(zhǔn)確。負(fù)載測試和壓力測試是不同的兩種性能測試方式。
1、先說壓力測試,壓力測試是為了確定系統(tǒng)的瓶頸或者最大使用極限的。為了考察系統(tǒng)在極端條件下的表現(xiàn),極端條件可以是超負(fù)荷的交易量和并發(fā)用戶數(shù),方法是分別模擬一定數(shù)量的用戶并發(fā)訪問系統(tǒng),記錄并分析系統(tǒng)響應(yīng)時(shí)間;
2、再說負(fù)載測試,負(fù)載測試是為了測試軟件系統(tǒng)當(dāng)負(fù)載逐漸增加時(shí),系統(tǒng)各項(xiàng)性能指標(biāo)的變化情況。站在用戶的角度去觀察在一定條件下系統(tǒng)的性能表現(xiàn)。這些考察指標(biāo)一般為響應(yīng)時(shí)間、交易容量、并發(fā)容量、資源使用率等。
再說下兩者的區(qū)別:壓力測試一般設(shè)置的 *** 點(diǎn)策略是100%VU同時(shí)增加,指標(biāo)要求是系統(tǒng)正常運(yùn)行,負(fù)載測試一般不設(shè)置 *** 點(diǎn),每幾秒鐘增加一定的VU數(shù),記錄系統(tǒng)平均響應(yīng)時(shí)間。當(dāng)前業(yè)內(nèi)普遍的標(biāo)準(zhǔn)是2/5/10原則,2s以內(nèi)為優(yōu)秀,5s以內(nèi)可以接受,10秒是極限。
不知道回答的是否您需要的答案,能否為您解決問題。
CPU的耗電值和什么有關(guān),怎么計(jì)算的?
TDP 50W 是設(shè)計(jì)最大功耗,一般在上網(wǎng)之類的時(shí)候只有10幾w,游戲時(shí)看占用情況,一般占到一半時(shí)就達(dá)到30w了,滿載肯定不止50w,一般要高出20%。你可以下載一個(gè)AIDA 64 監(jiān)控一下。
核心電壓一般也隨著cpu負(fù)載而升高,電壓越高功耗也越大,但是設(shè)置了電壓后,就算不升壓電流也會(huì)增大,功耗也增大追問那TDP注明最大50W+20%也就是60W,那核心電壓怎么弄也不會(huì)變?
核心電壓是CPU統(tǒng)一的計(jì)量標(biāo)準(zhǔn)算耗電量,還是先看CPU的類型和型號,在看核心電壓算耗電量的?
追答你這個(gè)問題太難回答,cpu制作工藝不同從90納米-22納米,架構(gòu)也不一樣,核心多少不同,主頻也不一樣,沒有一個(gè)簡單的公式。一般說的綜合考慮同一款cpu功耗都不一樣的。比如i5 3570k。超頻到同等頻率下,電壓就很多不一樣,電壓高的功耗大
請問autosar和osek的關(guān)系是什么?
都是汽車電子軟件的標(biāo)準(zhǔn)。
AUTOSAR與OSEK二者都是汽車電子軟件的標(biāo)準(zhǔn)。
OSEK基于ECU開發(fā),AUTOSAR基于整體汽車電子開發(fā)。
1.AUTOSAR
AUTOSAR一般就是指AUTOSAR構(gòu)架/標(biāo)準(zhǔn),AUTOSAR的全稱是AUTomotive Open System ARchitecture),隨著多年的發(fā)展,越來越多的行業(yè)內(nèi)的公司加入到了AUTOSAR聯(lián)盟中,這其中有OEM(汽車整車廠),Tier1(汽車零部件供應(yīng)商),芯片制造商以及工具制造商,AUTOSAR構(gòu)架/標(biāo)準(zhǔn)也成為了汽車E/E設(shè)計(jì)的發(fā)展方向。
2.OSEK
在1995年召開的研討會(huì)上眾多的廠商對OSEK和VDX的認(rèn)識達(dá)成了共識,產(chǎn)生了OSEK/VDX規(guī)范(1997年發(fā)布),本文簡稱OSEK規(guī)范。
它主要由四部分組成:操作系統(tǒng)規(guī)范(OSEK Operating System,OSEK OS)、通信規(guī)范(OSEK Communication , OSEK COM )、網(wǎng)絡(luò)管理規(guī)范( OSEK Net Management, OSEK NM)和OSEK實(shí)現(xiàn)語言(OSEK Implementation Language,OIL)。
擴(kuò)展資料:
OSEK OS的特點(diǎn)
OSEK規(guī)范為實(shí)現(xiàn)其制定的初衷并滿足汽車控制領(lǐng)域?qū)ο到y(tǒng)安全性和節(jié)省有限資源的特殊要求,制定了系統(tǒng)而全面的操作系統(tǒng)規(guī)范。其特點(diǎn)主要有以下幾個(gè)方面。
1. 實(shí)時(shí)性
由于越來越多的微處理器被應(yīng)用到汽車控制領(lǐng)域,如汽車剎車的防抱死系統(tǒng)、動(dòng)力設(shè)備的安全控制等這些系統(tǒng)直接關(guān)系著人的生命安全,即使出現(xiàn)絲毫的差錯(cuò)也會(huì)導(dǎo)致危及生命安全的嚴(yán)重后果,因此要求操作系統(tǒng)具有嚴(yán)格的實(shí)時(shí)性。
2.可移植性
OSEK規(guī)范詳細(xì)規(guī)定了操作系統(tǒng)運(yùn)行的各種機(jī)制,并在這些機(jī)制基礎(chǔ)上制定了標(biāo)準(zhǔn)的應(yīng)用程序編程接口,使那些編寫的代碼能夠很容易地整合起來,增強(qiáng)了應(yīng)用程序的可移植性。
3.可擴(kuò)展性
為了適用于廣泛的目標(biāo)處理器,支持運(yùn)行在廣泛硬件基礎(chǔ)上的實(shí)時(shí)程序,OSEK操作系統(tǒng)具備高度模塊化和可靈活配置的特性。
AUTOSAR特點(diǎn)
1、模塊化和可配置性
定義了一套汽車ECU軟件構(gòu)架,將不依賴硬件的軟件模塊和依賴硬件的軟件模塊分別優(yōu)雅的封裝起來,從而可以讓ECU可以集成由不同供應(yīng)商提供的軟件模塊,增加了功能的重用性,提高了軟件質(zhì)量。軟件可以根據(jù)不同的ECU功能需求和資源情況進(jìn)行靈活配置。
2、有標(biāo)準(zhǔn)化接口
定義了一系列的標(biāo)準(zhǔn)API來實(shí)現(xiàn)軟件的分層化。
3、提出了RTE的概念
RTE全稱是Runtime Environment,采用RTE實(shí)現(xiàn)了ECU內(nèi)部和ECU之間的節(jié)點(diǎn)通訊,RTE處于功能軟件模塊和基礎(chǔ)軟件模塊之間,使得軟件集成更加容易。
4、具有標(biāo)準(zhǔn)的測試規(guī)范
針對功能和通訊總線制定了標(biāo)準(zhǔn)的測試規(guī)范,測是規(guī)范涵蓋的范圍包括對于AUTOSAR的應(yīng)用兼容性(例如RTE的需求,軟件服務(wù)行為需求和庫等)和總線兼容性(總線處理行為和總線協(xié)議等),它的目標(biāo)是建立標(biāo)準(zhǔn)的測試規(guī)范從而減少測試工作量和成本。
參考資料:百度百科-AUTOSAR
參考資料:百度百科-osek
Vector-AUTOSAR使用中的問題總結(jié)
配置工具:DaVinci(達(dá)芬奇)
DaVinci DaVinci1、導(dǎo)入DBC文件
導(dǎo)入DBC文件——1 導(dǎo)入DBC文件——1 導(dǎo)入DBC文件——2 導(dǎo)入DBC文件——22、導(dǎo)入CDD文件
導(dǎo)入CDD文件——1 導(dǎo)入CDD文件——1 導(dǎo)入CDD文件——2 導(dǎo)入CDD文件——23、只要更改了DBC或CDD文件,都需要 Update
更新方式 更新方式 正在更新 正在更新1、一般情況下直接調(diào)用 CanNm _DisableCommunication (CanNm 模塊 ) 接口就一定可以關(guān)掉 NM 報(bào)文發(fā)送。
問:調(diào)用 CanNm _DisableCommunication 接口的話,是不是模塊也接收不到總線上的網(wǎng)絡(luò)管理報(bào)文了,自己也不能發(fā)送 NMF 了?
答:vecotor解釋,“好像能接收,只是不發(fā)送”。(具體現(xiàn)象還需要debug調(diào)試)。
2、調(diào)用 CanNm _EnableCommunication (CanNm 模塊) 接口是打開 NM 報(bào)文發(fā)送。
注意: 如果 CANNM_COM_CONTROL_ENABLED 宏沒有打開,即 STD_OFF, 則直接在應(yīng)用程序中調(diào)用 CanNm_DisableCommunication 接口,程序會(huì)報(bào)錯(cuò):提示 function has no prototype ,即使包含 CanNm.h 頭文件也沒用。
打開 CANNM_COM_CONTROL_ENABLED 宏的配置方法:
配置1 配置1 配置2 配置2這樣就可以將 CANNM_COM_CONTROL_ENABLED 宏打開( STD_ON ),然后可以直接調(diào)用 CanNm _DisableCommunication / CanNm _EnableCommunication 接口了。
以上是手動(dòng)禁止 NMF 發(fā)送的方法,其實(shí)打開了 CANNM_COM_CONTROL_ENABLED 宏之后, 也可以用配置工具配置,更簡單實(shí)現(xiàn)禁止 NMF 發(fā)送,如下:
通過配置關(guān)閉 NMF 發(fā)送 通過配置關(guān)閉 NMF 發(fā)送注意: 特別是Nm Communication這個(gè),必須勾選上。
問題描述: 產(chǎn)品上電,通過工具模擬總線報(bào)文發(fā)送,發(fā)送一幀報(bào)文(例如 0x621 ), Appl_GenericPrecopy() 接口沒有接收到,發(fā)送第二幀的時(shí)候,ID報(bào)文跳才會(huì)轉(zhuǎn)到 Appl_GenericPrecopy() 接口。 Appl_GenericPrecopy() 接口不是接收所有的ID報(bào)文嗎?為什么剛開始上電連續(xù)發(fā)送2幀報(bào)文才會(huì)跳轉(zhuǎn)到 Appl_GenericPrecopy() 接口?
答:vector解釋,“ 第一幀作為喚醒幀的話,只是喚醒ECU,第二幀才能被接收到。 在實(shí)車環(huán)境下這種情況是比較常見的,如果ECU速度比較慢的話可能需要更多幀才能被接收到”。
問題描述: 模塊上電的時(shí)候, 發(fā)送一幀診斷報(bào)文(例如:10 03),模塊沒有任何響應(yīng)(肯定或否定) ,直到模塊的 應(yīng)用報(bào)文 和 網(wǎng)絡(luò)管理報(bào)文 發(fā)出來后,再發(fā)診斷報(bào)文,模塊是可以響應(yīng)的,這個(gè)是不是在配置工具中配置了?
答: Vector: 這個(gè)是可以配置或者可以在回調(diào)函數(shù)里面做的, 一般泛亞都是要求只有網(wǎng)絡(luò)管理報(bào)文才能喚醒ECU,診斷報(bào)文是喚不醒的 。所以會(huì)出現(xiàn)你說的這種情況。
問題描述: 模塊上電,模塊發(fā)出的第一幀(模塊的網(wǎng)絡(luò)管理報(bào)文周期640ms,應(yīng)用報(bào)文周期1s)與接收到的第一幀網(wǎng)絡(luò)管理報(bào)文時(shí)間相差的800多ms,第一幀發(fā)送出來比較慢,請問這個(gè)是什么引起的,AUTOSAR的模塊調(diào)用比較慢嗎?
答:Vector:模塊調(diào)用的話都是你們自己的系統(tǒng)調(diào)度的,首先看看是否調(diào)度有延遲之類的。其次可以看看從上電到調(diào)用 CanNm_TriggerTransmission 需要多長時(shí)間,這個(gè)函數(shù)是發(fā)送 NM 報(bào)文的。
接著可以做以下測試:1、從上電到調(diào)用 Can_Write 的時(shí)間。2、在 CanHL_StartTransition 中會(huì)調(diào)用 CanIf_ControllerModeIndication ,從上電到調(diào) CanIf_ControllerModeIndication 的時(shí)間。
根據(jù)泛亞要求首幀發(fā)出的時(shí)間100-200ms之間:
泛亞首幀發(fā)送時(shí)間要求 泛亞首幀發(fā)送時(shí)間要求解決方法: 我感覺和 AUTOSAR 任務(wù)調(diào)度的順序及次數(shù)等有關(guān)系,因?yàn)橹皼]有買 OS 模塊,軟件寫了一個(gè)簡單的操作系統(tǒng),并且按照 RTE.C 文件中定義的 AUTOSAR的任務(wù)時(shí)間進(jìn)行順序執(zhí)行。
將 CanSM_MainFunction() 和 CanNm_MainFunction() 放在 1ms 任務(wù)中,在該任務(wù)中便于調(diào)試控制時(shí)間調(diào)用CanNm_MainFunction()函數(shù),通過在該任務(wù)內(nèi)累加計(jì)時(shí)80ms后,調(diào)用CanNm_MainFunction()。 示例代碼 示例代碼 問題描述: 當(dāng)讀診斷長幀的時(shí)候,發(fā)送 30 之后,后面長幀的數(shù)據(jù)會(huì)顯示出來,但是數(shù)據(jù)后面會(huì)自動(dòng)填充一個(gè) 01,這個(gè)是什么情況?見下圖描述:
圖示問題描述 圖示問題描述配置如下,解決該問題:
配置1 配置1 配置2 配置2問題描述: 模塊上電發(fā)送2幀網(wǎng)絡(luò)管理報(bào)文以及總線上沒有報(bào)文后,模塊到預(yù)休眠4S,從預(yù)休眠到休眠4S,共8秒休眠,和這些參數(shù)有關(guān)嗎?
答:有些關(guān)系的,Repeat Message Time越長發(fā)的NM報(bào)文越多。 這些參數(shù)就配置了這個(gè)8秒的時(shí)間,就是兩個(gè)4秒的配置。
按照 vector 說法,沒有解決問題,故修改配置如下: Repeat Message Time: 1500-->2000;Timeout Time:4000-->8000;Wait Bus Sleep Time: 4000-->8000,以供參考。
修改配置 修改配置問題描述: 模塊對診斷報(bào)文不需要做DLC長度檢查,即要求:當(dāng)模塊收到診斷報(bào)文時(shí),即使診斷報(bào)文的實(shí)際數(shù)據(jù)長度<8,模塊也應(yīng)該接收此報(bào)文并按照診斷要求進(jìn)行響應(yīng)。
答:Vector: Rx P Dlc 改成 0 當(dāng)然不行了,還是要改回 8 ,其實(shí)只需要把 Rx P Dlc Check 的勾去掉就行了。 Dlc Check 一般都可以不用改。
注意: 還有一個(gè)配置比較重要,見 配置3 ,之前打電話咨詢過 vector ,應(yīng)該是配置3 這項(xiàng)配置,具體以調(diào)試結(jié)果為準(zhǔn)。
配置1 配置1 配置2 配置2 配置3 配置3問題描述: 在總線高負(fù)載下,調(diào)試后發(fā)現(xiàn)會(huì)進(jìn)入到如下接口,文件 Det.c ,其中 MoleId = 0x3C,ErrorId = 0x46; 這里會(huì)進(jìn)入 While 循環(huán),超時(shí)后 WatchDog 導(dǎo)致產(chǎn)品 Reset 。
問題截圖 問題截圖進(jìn)一步分析,文件 CAN.c ;發(fā)現(xiàn) CAN 控制器 Reset 后一直處于 kFlexCAN_DISABLE_MODE ,無法恢復(fù)正常通信;即使收到正確的網(wǎng)絡(luò)管理報(bào)文也無法恢復(fù)。
原因分析: While 循環(huán)是導(dǎo)致 ECU Reset 的直接原因,根本原因在于高負(fù)載應(yīng)用報(bào)文條件下,上電/ Reset 后 CAN 控制器初始化異常, FlexCAN 沒有進(jìn)入 Normal 模式,導(dǎo)致不斷的進(jìn)入 DET_reportError 中的死循環(huán)。
1、系統(tǒng)啟動(dòng),在進(jìn)行網(wǎng)絡(luò)管理報(bào)文發(fā)送,調(diào)用 CANIF_TRANSMIT 的接口時(shí)控制器處于 STOP 狀態(tài),從而導(dǎo)致系統(tǒng)進(jìn)入 DET 。
2、在新版本的代碼中由于 DEM 接口的調(diào)用在 DEM 模塊初始化之前,導(dǎo)致系統(tǒng)進(jìn)入 DET 。
解決方法:
最簡單的方法(但不是根本的方法) :把while死循環(huán)去掉,或者把Det檢測去掉,高負(fù)載的情況下確實(shí)應(yīng)該增加過濾,DET模塊僅在開發(fā)階段使用,在最終產(chǎn)品中,一般都會(huì)把DET模塊去掉。
vector提出的方法: 1、將CAN的過濾器和FULLCAN進(jìn)行配置和使用。2、在具體的 Mainfunction 調(diào)度中,將 CANSM_Mainfunction 調(diào)度放至 CANNM_Mainfunction 之前調(diào)用,并且在初次啟動(dòng)的時(shí)候?qū)?CANNM_Mainfunction 的調(diào)用做延遲處理,防止高負(fù)載的情況下 CAN 控制器處于 STOP 狀態(tài)使系統(tǒng)進(jìn)入 DET 。3、將對應(yīng)的模塊的初始化函數(shù)調(diào)用放至DEM接口使用之前,在初始化完成之后再進(jìn)行接口的調(diào)用。
配置工程,有幾個(gè)地方的配置可以優(yōu)化一下:
由于該問題跟 CAN 總線負(fù)載相關(guān),可以使用硬件過濾來降低 CPU 開銷,由于該配置中報(bào)文不多,推薦使用 FULLCAN 的過濾配置:
每個(gè)模塊的 DET 選項(xiàng)可以去掉,見下圖,如果還在查問題,可以暫時(shí)打開:
CAN 模塊的 Overrun Notification 可以設(shè)置為 None 或者 Application :
問題描述: 當(dāng)模塊出現(xiàn)了 busoff ,通過示波器測量 MCU 的 TX 腳,發(fā)現(xiàn)沒有進(jìn)行快恢復(fù)和慢恢復(fù)的動(dòng)作。
測試方法:
最簡單的測試方法: 通過將 CAN_H 和 CAN_L 短接在一起產(chǎn)生busoff, 通過示波器測量MCU的TX腳,查看是否有快恢復(fù)慢恢復(fù)的動(dòng)作。
有效測試方法: 使用 CANstress 工具,干擾模塊發(fā)送的報(bào)文,測量模塊快慢恢復(fù)時(shí)間。
打開已有的 cst 文件或打開工具新建 cst 文件:
配置1 配置1 配置2 配置2 配置3 配置3調(diào)試方法:
vector :發(fā)生 bus-off 上層要收到 bus-off 通知才會(huì)執(zhí)行相應(yīng)的操作。在 bus-off 上層回調(diào)打個(gè)斷點(diǎn)看代碼能否執(zhí)行到。上層代碼有相應(yīng)的回調(diào)函數(shù)的配置見截圖,回調(diào)函數(shù)的: Appl_CanSM_BusOffBegin , Appl_CanSM_BusOffEnd 。
BusOff回調(diào)函數(shù)配置 BusOff回調(diào)函數(shù)配置DEBUG調(diào)試: 產(chǎn)生 busoff 會(huì)進(jìn)入 Appl_CanSM_BusOffBegin , busoff 結(jié)束后會(huì)進(jìn)入 Appl_CanSM_BusOffEnd 接口中。
vector : CanSM_MainFunction 是處理 Bus-off 恢復(fù)的,那兩個(gè)接口函數(shù)只是通知 app 的。根據(jù)項(xiàng)目填充所需要的內(nèi)容。
目前解決方法: 我懷疑和沒有購買 OS 有關(guān)系,調(diào)換了AUTOSAR 10ms任務(wù)的執(zhí)行順序;
方法: 應(yīng)用層沒有請求 Run 模式,所以通信停止以后系統(tǒng)就休眠,只有在應(yīng)用層請求 Run 模式就可以。但在應(yīng)用層請求 Run 模式需要有 Rte 和 Davinci Developer 工具的配合,如果沒有的話只能通過修改代碼。把 Request_ESH_RunRequest_0_requestedMode 這個(gè)變量或者類似名字的變量在系統(tǒng)啟動(dòng)后置成 1 ,要休眠時(shí)置成 0 ,這樣通信停止后就不會(huì)進(jìn)休眠了。由于這個(gè)變量是個(gè)靜態(tài)變量,外部修改需要更改 BswM 模塊生成的代碼。
調(diào)試結(jié)果: 模塊初始化的時(shí)候?qū)?Request_ESH_RunRequest_0_requestedMode 設(shè)置為 1 ,然后停止發(fā)送報(bào)文,讓通信停止,模塊沒有進(jìn)入休眠,電流也正常,沒有進(jìn)入休眠。
數(shù)據(jù)ID(ID)需要在 cdd 文件中添加,配置完成 DID 后,需要導(dǎo)入配置工具(見 一、如何導(dǎo)入DBC和CDD文件 ),導(dǎo)入之后,打開配置工具,如下:
DTC 需要在 cdd 文件中添加,配置完成 DTC 后,需要導(dǎo)入配置工具(見 一、如何導(dǎo)入DBC和CDD文件 ),導(dǎo)入之后,打開配置工具,如下:
如何判斷系統(tǒng)負(fù)載,包括cpu,內(nèi)存,io設(shè)備等
可以用TOP工具查看實(shí)時(shí)狀態(tài)。
top進(jìn)入視圖:
第一行:10:01:23 當(dāng)前系統(tǒng)時(shí)間126 days, 14:29 系統(tǒng)已經(jīng)運(yùn)行了126天14小時(shí)29分鐘(在這期間沒有重啟過)2 users 當(dāng)前有2個(gè)用戶登錄系統(tǒng)load average: 1.15, 1.42, 1.44 load average后面的三個(gè)數(shù)分別是1分鐘、5分鐘、15分鐘的負(fù)載情況。
load average數(shù)據(jù)是每隔5秒鐘檢查一次活躍的進(jìn)程數(shù),然后按特定算法計(jì)算出的數(shù)值。如果這個(gè)數(shù)除以邏輯CPU的數(shù)量,結(jié)果高于5的時(shí)候就表明系統(tǒng)在超負(fù)荷運(yùn)轉(zhuǎn)了。 第二行:Tasks 任務(wù)(進(jìn)程),系統(tǒng)現(xiàn)在共有183個(gè)進(jìn)程,其中處于運(yùn)行中的有1個(gè),182個(gè)在休眠(sleep),stoped狀態(tài)的有0個(gè),zombie狀態(tài)(僵尸)的有0個(gè)。 第三行:cpu狀態(tài)6.7% us 用戶空間占用CPU的百分比。0.4% sy 內(nèi)核空間占用CPU的百分比。0.0% ni 改變過優(yōu)先級的進(jìn)程占用CPU的百分比92.9% id 空閑CPU百分比0.0% wa IO等待占用CPU的百分比0.0% hi 硬中斷(Hardware IRQ)占用CPU的百分比0.0% si 軟中斷(Software Interrupts)占用CPU的百分比
第四行:內(nèi)存狀態(tài)8306544k total 物理內(nèi)存總量(8GB)7775876k used 使用中的內(nèi)存總量(7.7GB)530668k free 空閑內(nèi)存總量(530M)79236k buffers 緩存的內(nèi)存量 (79M) 第五行:swap交換分區(qū)2031608k total 交換區(qū)總量(2GB)2556k used 使用的交換區(qū)總量(2.5M)2029052k free 空閑交換區(qū)總量(2GB)4231276k cached 緩沖的交換區(qū)總量(4GB)
cpu負(fù)載是指的是什么?
AIX 全名為(Advanced Interactive Executive),它是IBM 公司的Unix操作系統(tǒng),
整個(gè)系統(tǒng)的設(shè)計(jì)從網(wǎng)絡(luò)、主機(jī)硬件系統(tǒng),到操作系統(tǒng)完全遵守開放系統(tǒng)的原則。
下面對AIX 作以介紹。
RS/6000 采用IBM 的UNIX操作系統(tǒng)-AIX作為其操作系統(tǒng)。這是一
個(gè)目前操作系統(tǒng)界最成功,應(yīng)用領(lǐng)域最廣,最開放的第二代的UNIX系
統(tǒng)。它特別適合于做關(guān)鍵數(shù)據(jù)處理(CRITICAL)。
AIX 包含了許多IBM 大型機(jī)傳統(tǒng)受歡迎的特征,如系統(tǒng)完整性,系統(tǒng)可管理
性和系統(tǒng)可用性。
在 AIX 操作系統(tǒng)上,有許多的數(shù)據(jù)庫和開發(fā)工具,用戶除了選用已有的應(yīng)用
軟件外,還可以根據(jù)各自的需要進(jìn)行開發(fā)。
此外,在AIX 之上,有一組功能強(qiáng),使用方便的系統(tǒng)管理工具。對于異種平臺(tái)
互存,互操作有很成熟的解決方案。
由于該 UNIX 的先進(jìn)的內(nèi)核技術(shù)和最好的開放性,因此,雖然RS/6000
從宣布到今天只有短短的5 年多的時(shí)間,它已在各行各業(yè)有了廣泛的運(yùn)用,
并在1993和1994年連續(xù)二年在MIDRANGE商用 UNIX 領(lǐng)域處于第一位。
RISC SYSTEM/6000的操作系統(tǒng)是AIX ,它是性能卓越的、開放的
UNIX,匯集了多年來計(jì)算機(jī)界在UNIX上的研究成果,以IBM 在計(jì)算機(jī)
體系結(jié)構(gòu)、操作系統(tǒng)方面40多年極其豐富的經(jīng)驗(yàn)。最大限度的使用RISC
技術(shù),安裝了象AIX 這樣的具備工業(yè)界實(shí)力的UNIX操作系統(tǒng)。
它既可連接SAA 體系結(jié)構(gòu),又能與非IBM 系統(tǒng)的網(wǎng)絡(luò)相連,因此,可以
和多數(shù)專業(yè)銀行現(xiàn)有的系統(tǒng)實(shí)現(xiàn)互連,這對今后業(yè)務(wù)系統(tǒng)拓展將帶來極大的
靈活性,并降低投資。
AIX 遵循一系列的國際標(biāo)準(zhǔn):
* IEEE POSIX1004.1-1990
* X/OPEN 移植指南ISSUE3的基本級(XPG3)
* AES/OS REVISION A (OSF/1 LEVEL 2 資格)
* FIPS 151-1
* AIX的編譯器: XLC、C++(可選)、FORTRAN(可選)、PASCAL(可選)、COBOL(可選)
* ADA 的編譯器已達(dá)到XPG3“成員”級的認(rèn)可。
* AIX 支持多用戶、多任務(wù)。
AIX有一些其它特性包括:
AIX 提供了3 種SHELL :SYSTEM V的KORN、BOURNE SHELL和4.3BSDC
SHELL作為可選擇的UNIX系統(tǒng)界面;
安全設(shè)施滿足TCB (Trusted Computing Base)的C2級;
實(shí)時(shí)處理能力,這對于“面向交易”的應(yīng)用至關(guān)重要(如零售業(yè)
和銀行等),它使RS/6000 獲得極高的響應(yīng)和吞吐量;
虛擬存儲(chǔ)管理,當(dāng)需要時(shí),可將一些不常用的模塊轉(zhuǎn)送至外存,
提高內(nèi)存的可利用性。
先進(jìn)的文件系統(tǒng),使得系統(tǒng)管理更加有效,并提高了數(shù)據(jù)可靠性
以及完整性。
能兼容Dos 應(yīng)用程序和數(shù)據(jù)。
InfoExplorer,快速信息超文本索引系統(tǒng)- 不僅包括文字,而且
對包含聲音、圖像的索引系統(tǒng),這是個(gè)聯(lián)機(jī)的文件接口。包括全部的
超文本的索引和查找,以及面向任務(wù)和坐標(biāo)的多重導(dǎo)引和索引系統(tǒng)。
這個(gè)文字及圖形索引系統(tǒng)以一個(gè)靈活的、基于任務(wù)的方式去使用詳細(xì)
資料及培訓(xùn)資料。
高級系統(tǒng)管理工具(SMIT,System Management Interface Tool)。
提供一級菜單驅(qū)動(dòng)程序,諸如完成軟件的安裝與設(shè)置、設(shè)備的設(shè)置及
管理、問題的測定、存貯管理等??梢宰詣?dòng)地進(jìn)行I/O 設(shè)備設(shè)置,
ASCII 終端也可充當(dāng)系統(tǒng)控制臺(tái)。在LAN 上可以進(jìn)行遠(yuǎn)程系統(tǒng)的安裝。
系統(tǒng)工作負(fù)載
系統(tǒng)工作負(fù)載的完整準(zhǔn)確的定義對于預(yù)測或理解它的性能是很關(guān)鍵的。在衡量系統(tǒng)性能時(shí),工作負(fù)載的不同可能會(huì)比 CPU 時(shí)鐘速度或隨機(jī)訪問存儲(chǔ)器(RAM)大小不同帶來更多的變化。工作負(fù)載的定義不僅必須包含向系統(tǒng)發(fā)送的請求的類型和速率,還要包含將要執(zhí)行的確切軟件包和內(nèi)部應(yīng)用程序。
包括系統(tǒng)將在后臺(tái)處理的工作也很重要。例如,如果一個(gè)系統(tǒng)包含通過 NFS 加載且由其它系統(tǒng)頻繁訪問的文件系統(tǒng),那么處理那些訪問很可能是總體工作負(fù)載中非常重要的一部分,即使該系統(tǒng)不是正式的服務(wù)器也是如此。
已進(jìn)行標(biāo)準(zhǔn)化從而允許在不同系統(tǒng)之間進(jìn)行比較的工作負(fù)載稱為基準(zhǔn)程序。但是,很少有實(shí)際的工作負(fù)載能完全符合基準(zhǔn)程序的精確算法和環(huán)境。即使是那些最初從實(shí)際的應(yīng)用程序發(fā)展而來的行業(yè)標(biāo)準(zhǔn)基準(zhǔn)程序也已經(jīng)過簡化和均勻化,從而使它們可移植到大量的硬件平臺(tái)上。使用行業(yè)標(biāo)準(zhǔn)基準(zhǔn)程序唯一有效的方法是減小將接受嚴(yán)肅評估的候選系統(tǒng)的范圍。因此,在嘗試?yán)斫庀到y(tǒng)的工作負(fù)載和性能時(shí)不應(yīng)該只依賴基準(zhǔn)測試結(jié)果。
可以將工作負(fù)載分為以下類別:
多用戶
由多個(gè)用戶通過各自的終端提交的工作組成的工作負(fù)載。通常,這種工作負(fù)載的性能目標(biāo)有兩種可能,即在保留指定的最壞情況響應(yīng)時(shí)間條件下最大化系統(tǒng)吞吐量,或者對于固定不變的工作負(fù)載獲得盡可能快的響應(yīng)時(shí)間。
服務(wù)器
由來源于其它系統(tǒng)的請求組成的工作負(fù)載。例如,文件服務(wù)器的工作負(fù)載主要是磁盤讀寫請求。它是多用戶工作負(fù)載(加上 NFS 或其它 I/O 活動(dòng))的磁盤 I/O 部分,所以適用同樣的目標(biāo),即在給定的相應(yīng)時(shí)間下最大化吞吐量。其它的服務(wù)器工作負(fù)載由諸如數(shù)學(xué)計(jì)算密集的程序、數(shù)據(jù)庫事務(wù)、打印機(jī)作業(yè)之類的項(xiàng)組成。
工作站
由單獨(dú)的用戶通過鍵盤提交工作和在該系統(tǒng)的顯示器上接收結(jié)果組成的工作負(fù)載。通常這種工作負(fù)載的最高優(yōu)先級性能目標(biāo)是使用戶請求的響應(yīng)時(shí)間最短。
性能目標(biāo)
在定義了系統(tǒng)必須處理的工作負(fù)載后,可以選擇性能標(biāo)準(zhǔn)并根據(jù)這些標(biāo)準(zhǔn)設(shè)定性能目標(biāo)。計(jì)算機(jī)系統(tǒng)的總體性能標(biāo)準(zhǔn)是響應(yīng)時(shí)間和吞吐量。
響應(yīng)時(shí)間是提交請求和返回該請求的響應(yīng)之間使用的時(shí)間。示例包括:
數(shù)據(jù)庫查詢花費(fèi)的時(shí)間
將字符回顯到終端上花費(fèi)的時(shí)間
訪問 Web 頁面花費(fèi)的時(shí)間
吞吐量是對單位時(shí)間內(nèi)完成的工作量的量度。示例包括:
每分鐘的數(shù)據(jù)庫事務(wù)
每秒傳送的文件千字節(jié)數(shù)
每秒讀或?qū)懙奈募ё止?jié)數(shù)
每分鐘的 Web 服務(wù)器命中數(shù)
這些度量之間的關(guān)系很復(fù)雜。有時(shí)可能以響應(yīng)時(shí)間為代價(jià)而得到較高的吞吐量,而有時(shí)候又要以吞吐量為代價(jià)得到較好的響應(yīng)時(shí)間。在其它情況下,一個(gè)單獨(dú)的更改可能對兩者都有提高??山邮艿男阅芑诤侠淼耐掏铝颗c合理的響應(yīng)時(shí)間相結(jié)合。
在規(guī)劃或調(diào)諧任何系統(tǒng)中,當(dāng)處理特定的工作負(fù)載時(shí)一定要保證對響應(yīng)時(shí)間和吞吐量都有明確的目標(biāo)。否則,有可能存在一種風(fēng)險(xiǎn),那就是您花費(fèi)了分析時(shí)間和物力改善的僅僅是系統(tǒng)性能中一個(gè)次要的方面。
程序執(zhí)行模型
為了清楚地檢查工作負(fù)載的性能特征,需要有一個(gè)動(dòng)態(tài)而非靜態(tài)的程序執(zhí)行模型,如下圖所示。
圖 1. 程序執(zhí)行層次結(jié)構(gòu). 該圖形以一個(gè)三角形為基礎(chǔ)。左邊代表和右邊適當(dāng)?shù)牟僮飨到y(tǒng)實(shí)體匹配的硬件實(shí)體。程序必須從存儲(chǔ)在磁盤上的最低級別開始,到最高級別的處理器運(yùn)行程序指令。例如,從底部到頂部,磁盤硬件實(shí)體容納可執(zhí)行程序;實(shí)內(nèi)存容納等待的操作系統(tǒng)線程和中斷處理程序;轉(zhuǎn)換后備緩沖區(qū)容納可分派的結(jié)程;高速緩存中包含當(dāng)前分派的線程和處理器流水線;而寄存器中包含當(dāng)前的指令。
程序?yàn)榱诉\(yùn)行必須沿著硬件和操作系統(tǒng)層次結(jié)構(gòu)并行向上前進(jìn)。硬件層次結(jié)構(gòu)中的每個(gè)元素都比它下面的元素稀少和昂貴。不僅程序不得不為了每個(gè)資源和其它程序競爭,而且從一個(gè)級別過渡到下一級別也要花時(shí)間。為了理解程序執(zhí)行動(dòng)態(tài),需要對層次結(jié)構(gòu)中每一級別有個(gè)基本的了解。
硬件層次結(jié)構(gòu)
通常,從一個(gè)硬件級別移動(dòng)到另一級別所需要的時(shí)間主要由較低級別的等待時(shí)間(從發(fā)出請求到接受到第一批數(shù)據(jù)的時(shí)間)組成。
固定磁盤
對于一個(gè)在單機(jī)系統(tǒng)中運(yùn)行的程序而言,最慢的操作是從磁盤上取得代碼或數(shù)據(jù),這是因?yàn)橛邢铝性颍?
必須引導(dǎo)磁盤控制器直接訪問指定的塊(排隊(duì)延遲)。
磁盤臂必須尋道以找到正確的柱面(尋道等待時(shí)間)。
讀/寫磁頭必須等候直到正確的塊旋轉(zhuǎn)到它們下面(旋轉(zhuǎn)等待時(shí)間)。
數(shù)據(jù)必須傳送到控制器(傳送時(shí)間)然后傳遞到應(yīng)用程序中(中斷處理時(shí)間)。
除了程序中顯式的讀或?qū)懻埱笠酝猓€有許多原因?qū)е麓疟P操作緩慢。頻繁的系統(tǒng)調(diào)諧活動(dòng)證明是不必要地跟蹤了磁盤 I/O。
實(shí)內(nèi)存
實(shí)內(nèi)存通常稱為隨機(jī)存取存儲(chǔ)器或 RAM,它比磁盤速度快,但每個(gè)字節(jié)的開銷非常昂貴。操作系統(tǒng)盡量只把當(dāng)前使用的代碼和數(shù)據(jù)保存在 RAM 中,而把任何額外的內(nèi)容存儲(chǔ)在磁盤上,或者決不首先把它們帶入 RAM 中。
然而,RAM 的速度不一定比處理器快。通常在硬件意識到 RAM 訪問需求與處理器可使用數(shù)據(jù)或指令的時(shí)間之間,會(huì)出現(xiàn)許多處理器周期的 RAM 等待時(shí)間。
如果要訪問存儲(chǔ)到磁盤上(或者尚未調(diào)進(jìn))的某一虛擬內(nèi)存頁,則會(huì)產(chǎn)生一個(gè)缺頁故障,并且程序的執(zhí)行暫掛直到該頁從磁盤讀取。
轉(zhuǎn)換后備緩沖區(qū)(TLB)
使程序員不會(huì)受限于系統(tǒng)的物理局限性的方法是實(shí)現(xiàn)虛擬內(nèi)存。程序員在設(shè)計(jì)和編寫程序時(shí)認(rèn)為內(nèi)存非常大,系統(tǒng)將負(fù)責(zé)將程序中指令和數(shù)據(jù)的虛擬地址轉(zhuǎn)換成需要用來從 RAM 取得的指令和數(shù)據(jù)的實(shí)際地址。因?yàn)檫@個(gè)地址轉(zhuǎn)換過程可能很費(fèi)時(shí),系統(tǒng)將最近訪問過的虛擬內(nèi)存頁的實(shí)際地址保存在一個(gè)叫轉(zhuǎn)換后備緩沖區(qū)(TLB)的高速緩存中。
只要運(yùn)行中的程序繼續(xù)訪問程序和數(shù)據(jù)頁中的一小部分,則完整的從虛擬到實(shí)際頁地址的轉(zhuǎn)換過程就不需要在每次 RAM 訪問的時(shí)候都重做一次。當(dāng)程序試圖訪問的虛擬內(nèi)存頁沒有 TLB 入口(即 TLB 未命中)時(shí),則需要大量的處理器周期(即 TLB 未命中等待時(shí)間)來進(jìn)行地址轉(zhuǎn)換。
高速緩存
為了將程序必須經(jīng)歷的 RAM 等待時(shí)間減到最小,系統(tǒng)為指令和數(shù)據(jù)組織了高速緩存。如果所需的指令和數(shù)據(jù)已在高速緩存中,則產(chǎn)生高速緩存命中,處理器就可在下一個(gè)周期立刻使用該指令或數(shù)據(jù)。否則產(chǎn)生高速緩存未命中,伴隨有 RAM 等待時(shí)間。
在某些系統(tǒng)中,有兩到高速緩存,通常稱它們?yōu)?L1、L2 和 L3。如果一個(gè)特殊的存儲(chǔ)器引用導(dǎo)致 L1 未命中,則檢查 L2。如果 L2 產(chǎn)生未命中,則引用轉(zhuǎn)至下一個(gè)級別,要么是 L3(如果存在),要么是 RAM。
高速緩存的大小和結(jié)構(gòu)根據(jù)型號的不同而有不同,但是有效使用它們的原理是相同的。
流水線和寄存器
流水線型超標(biāo)量體系結(jié)構(gòu)使得在某些情況下可以同時(shí)處理多個(gè)指令。大批的通用寄存器和浮點(diǎn)寄存器使得可以將相當(dāng)多的程序數(shù)據(jù)保存在寄存器中,而不需要頻繁存儲(chǔ)和重新裝入。
可以設(shè)計(jì)優(yōu)化編譯器最大限度地利用這些能力。當(dāng)生成產(chǎn)品程序時(shí),無論程序有多小編譯器的優(yōu)化函數(shù)都應(yīng)該能使用。Optimization and Tuning Guide for XL Fortran, XL C and XL C++ 中描述了如何將程序調(diào)諧到最大性能。
軟件層次結(jié)構(gòu)
程序?yàn)榱诉\(yùn)行還必須逐步執(zhí)行軟件層次結(jié)構(gòu)中的一系列步驟。
可執(zhí)行程序
當(dāng)請求運(yùn)行某個(gè)程序時(shí),操作系統(tǒng)執(zhí)行一些操作以將磁盤上的可執(zhí)行程序轉(zhuǎn)換成運(yùn)行中的程序。首先,必須掃描當(dāng)前 PATH 環(huán)境變量中的目錄以查找程序的正確副本。然后,系統(tǒng)裝入程序(不要和 ld 命令混淆,該命令是個(gè)綁定程序)必須解析出從程序到共享庫的任何外部引用。
為了表示用戶的請求,操作系統(tǒng)將創(chuàng)建一個(gè)進(jìn)程或一組資源(例如專用虛擬地址段),任何運(yùn)行中的程序都需要該進(jìn)程或資源。
操作系統(tǒng)也會(huì)在該進(jìn)程中自動(dòng)創(chuàng)建一個(gè)單獨(dú)的線程。線程是一個(gè)單獨(dú)程序?qū)嵗漠?dāng)前執(zhí)行狀態(tài)。在 AIX 中,對處理器和其它資源的訪問是根據(jù)線程來分配而不是根據(jù)進(jìn)程分配的。應(yīng)用程序可在一個(gè)進(jìn)程中創(chuàng)建多個(gè)線程。這些線程共享由運(yùn)行它們的進(jìn)程所擁有的資源。
最后,系統(tǒng)轉(zhuǎn)移到程序的入口點(diǎn)。如果包含入口點(diǎn)的程序頁還不在內(nèi)存中(可能因?yàn)槌绦蜃罱啪幾g、執(zhí)行和復(fù)制),則由它引起的缺頁故障中斷將該頁從它的后備存儲(chǔ)器中讀取出來。
中斷處理程序
通知操作系統(tǒng)發(fā)生了外部事件的機(jī)制是中斷當(dāng)前運(yùn)行線程并將控制轉(zhuǎn)移到中斷處理程序。在中斷處理程序可以運(yùn)行之前,必須保存足夠的硬件狀態(tài)以保證在中斷處理完成后系統(tǒng)能恢復(fù)線程的上下文。新調(diào)用的中斷處理程序?qū)⒔?jīng)歷在硬件層次結(jié)構(gòu)中上移帶來的所有延遲(除了頁面故障)。如果該中斷處理程序最近沒有運(yùn)行過(或者中間程序很節(jié)約時(shí)間),那么它的任何代碼或數(shù)據(jù)不太可能保留在 TLB 或高速緩存中。
當(dāng)再次調(diào)度已中斷的線程時(shí),它的執(zhí)行上下文(如寄存器內(nèi)容)邏輯上將得到恢復(fù),以便它可以正確運(yùn)行。然而,TLB 和高速緩存的內(nèi)容必須根據(jù)程序的后繼請求重新構(gòu)造。因此,作為中斷的結(jié)果,中斷處理程序和被中斷的線程都可能遇到大量的高速緩存未命中和 TLB 未命中延遲。
等待線程
無論何時(shí)只要執(zhí)行的程序發(fā)出不能立刻滿足的請求,例如同步 I/O 操作(顯式的或缺頁故障的結(jié)果),該線程就會(huì)處于等待狀態(tài),直到請求完成為止。除了請求本身所需的時(shí)間以外,通常這還會(huì)導(dǎo)致另外一些 TLB 和高速緩存的延遲時(shí)間。
可分派線程
當(dāng)某個(gè)線程可分派但不在運(yùn)行時(shí),它不能完成任何有用的事情。更糟的是,正運(yùn)行的其它線程可能導(dǎo)致重新使用該線程的高速緩存線路并將實(shí)內(nèi)存頁收回,從而引起最終分派時(shí)出現(xiàn)更多的延遲。
當(dāng)前已分派的線程
調(diào)度程序選擇對使用處理器有強(qiáng)烈要求的線程。在『CPU 調(diào)度程序性能概述』中討論了影響該項(xiàng)選擇需要考慮的事項(xiàng)。當(dāng)分派線程后,處理器的邏輯狀態(tài)恢復(fù)成線程中斷時(shí)有效的狀態(tài)。
當(dāng)前的機(jī)器指令
如果未出現(xiàn) TLB 或高速緩存未命中的情況,絕大多數(shù)機(jī)器指令都能在單個(gè)處理器周期內(nèi)執(zhí)行。相比之下,如果程序迅速轉(zhuǎn)換到該程序的不同區(qū)域且訪問大量不同區(qū)域中的數(shù)據(jù),就會(huì)產(chǎn)生較高的 TLB 和高速緩存未命中率,執(zhí)行每條指令使用的平均處理器周期數(shù)(CPI)可能大于 1。這種程序被認(rèn)為有較差的局域性引用能力。它也許在使用必需的最少指令數(shù)來做這個(gè)工作,但是要消耗大量不必要的周期數(shù)。部分是因?yàn)橹噶顢?shù)和周期數(shù)之間相關(guān)性較弱,檢查程序列表來計(jì)算路徑長度不會(huì)再直接產(chǎn)生一個(gè)時(shí)間值。由于較短的路徑通常比較長的路徑快,所以速率根據(jù)路徑長度率的不同而明顯不同。
編譯器用完善的方法重新安排代碼從而將程序執(zhí)行所需的周期數(shù)降到最小。追求最佳性能的程序員必須首先致力于確保編譯器具有有效優(yōu)化代碼所需的全部信息,而不是試圖事后批評編譯器的優(yōu)化技術(shù)(請參閱『預(yù)處理器和編譯器的有效使用』)。優(yōu)化有效性的實(shí)際衡量標(biāo)準(zhǔn)是可信工作負(fù)載的性能。
系統(tǒng)調(diào)諧
在有效實(shí)現(xiàn)應(yīng)用程序后,系統(tǒng)總體性能的進(jìn)一步提高就成了系統(tǒng)調(diào)諧考慮的一個(gè)問題。系統(tǒng)級調(diào)諧包含的主要組件有:
通信 I/O
取決于工作負(fù)載的類型與通信鏈路的類型,可能需要調(diào)諧以下的一個(gè)或多個(gè)通信設(shè)備驅(qū)動(dòng)程序:TCP/IP 或 NFS。
固定磁盤
邏輯卷管理器(LVM)控制文件系統(tǒng)的位置和磁盤上調(diào)頁空間,這可能會(huì)極大地影響系統(tǒng)經(jīng)歷的尋道等待時(shí)間。磁盤設(shè)備驅(qū)動(dòng)程序控制執(zhí)行 I/O 請求所遵從的順序。
實(shí)內(nèi)存
虛擬內(nèi)存管理器(VMM)控制空閑實(shí)內(nèi)存幀的池,并決定何時(shí)從何處取用幀來補(bǔ)充該池。
運(yùn)行線程
調(diào)度程序確定接下來由哪個(gè)可調(diào)度實(shí)體接收控制權(quán)。在 AIX 中,可調(diào)度實(shí)體是線程。請參閱『線程支持』。
性能調(diào)諧過程介紹
性能調(diào)諧主要是資源管理問題和正確的系統(tǒng)參數(shù)設(shè)置。調(diào)諧工作負(fù)載和系統(tǒng)以有效利用資源由下列步驟組成:
識別系統(tǒng)中的工作負(fù)載
設(shè)置目標(biāo):
確定如何評測結(jié)果
量化目標(biāo)和區(qū)分目標(biāo)的優(yōu)先級
識別系統(tǒng)性能的關(guān)鍵資源
最小化工作負(fù)載的關(guān)鍵資源要求:
如果可選擇的話,使用最適當(dāng)?shù)馁Y源
減少個(gè)別程序或系統(tǒng)函數(shù)對關(guān)鍵資源的要求
結(jié)構(gòu)化資源的并行使用
修改資源的分配以反映優(yōu)先級
更改個(gè)別程序的優(yōu)先級或資源
更改系統(tǒng)資源管理參數(shù)的設(shè)置
重復(fù)步驟 3 到步驟 5 直到滿足目標(biāo)(或者資源飽和)
如果必要的話,使用其它資源
在系統(tǒng)性能管理的每個(gè)階段都有相應(yīng)的工具(參閱附錄 A 『監(jiān)視和調(diào)諧命令和子例程』)。這些工具有些可從 IBM 得到;另一些是第三方產(chǎn)品。下圖說明在一個(gè)簡單的 LAN 環(huán)境中性能管理的各階段。
圖 2. 性能階段. 該圖用五個(gè)加權(quán)的圓圈說明對系統(tǒng)性能調(diào)諧的各步驟:規(guī)劃、安裝、監(jiān)視、調(diào)諧和擴(kuò)展。每個(gè)圓圈代表系統(tǒng)處于不同的性能狀態(tài):空閑、不均衡、均衡和過載。實(shí)質(zhì)上就是擴(kuò)展一個(gè)過載的系統(tǒng)、調(diào)諧系統(tǒng)直到它是均衡的、監(jiān)視不均衡的系統(tǒng)并且在需要擴(kuò)展時(shí)安裝更多的資源。
識別工作負(fù)載
系統(tǒng)執(zhí)行的所有工作都必須能夠識別。特別是在 LAN 連接的系統(tǒng)中,通過系統(tǒng)的用戶之間僅有的非正式協(xié)議,可以輕松地開發(fā)出一組復(fù)雜的交叉安裝的文件系統(tǒng)。這些文件系統(tǒng)必須被識別出來并作為任何調(diào)諧活動(dòng)的一部分進(jìn)行考慮。
對于多用戶工作負(fù)載,分析員必須量化一般情況和高峰期的請求率。確定用戶實(shí)際與終端交互時(shí)間的實(shí)際比例也是很重要的。
該識別階段中的一個(gè)要素是決定必須對生產(chǎn)系統(tǒng)進(jìn)行評估和調(diào)諧活動(dòng),還是在另一系統(tǒng)上(或“切換”)用實(shí)際工作負(fù)載的模擬型式來完成評估和調(diào)諧活動(dòng)。分析員必須針對非生產(chǎn)環(huán)境的靈活性權(quán)衡來自于生產(chǎn)環(huán)境結(jié)果的較大可靠性,分析員可在非生產(chǎn)環(huán)境中進(jìn)行試驗(yàn),當(dāng)然試驗(yàn)所冒的風(fēng)險(xiǎn)是性能下降或更糟。
設(shè)置目標(biāo)的重要性
雖然可以根據(jù)可測數(shù)量設(shè)置目標(biāo),但實(shí)際希望的結(jié)果往往帶有主觀性,比如令人滿意的響應(yīng)時(shí)間。進(jìn)一步講,分析員必須抵擋住調(diào)諧可測量的東西而不是對他而言是重要東西的。如果沒有系統(tǒng)提供的評估能符合所要求的改進(jìn),那么就必須對該評估進(jìn)行設(shè)計(jì)。
量化目標(biāo)最有價(jià)值的方面不是選擇達(dá)到的數(shù)字,而是對(通常)多個(gè)目標(biāo)的相對重要性進(jìn)行公開判定。如果這些優(yōu)先級沒有事先設(shè)定且不是每個(gè)相關(guān)的人都理解的話,分析員在沒有進(jìn)行頻繁咨詢之前不能作出任何折衷的決定。分析員還容易對用戶的反應(yīng)或管理性能中一些已經(jīng)被忽略的方面而感到吃驚。如果系統(tǒng)的支持和使用跨過了組織的邊界,您可能需要供應(yīng)商和用戶之間的書面服務(wù)級協(xié)議,可確保對性能目標(biāo)和優(yōu)先級有一個(gè)清楚而共同的理解。
識別關(guān)鍵資源
通常,給定工作負(fù)載的性能可由一兩種關(guān)鍵系統(tǒng)資源的可用性和速度決定。分析員必須正確識別出那些資源,否則會(huì)冒險(xiǎn)陷入無休止的嘗試出錯(cuò)操作。
系統(tǒng)具有物理資源和邏輯資源。關(guān)鍵的物理資源通常比較容易識別,因?yàn)檩^多的系統(tǒng)性能工具可用來評估物理資源的利用率。通常最影響性能的物理資源如下:
CPU 周期
內(nèi)存
I/O 總線
不同的適配器
磁盤臂
磁盤空間
網(wǎng)絡(luò)訪問
邏輯資源不太容易識別。邏輯資源通常是對物理資源進(jìn)行分區(qū)的編程抽象。進(jìn)行分區(qū)的目的是共享和管理物理資源。
構(gòu)建于其上的物理資源和邏輯資源的一些示例如下:
CPU
處理器時(shí)間片
內(nèi)存
頁面幀
堆棧
緩沖區(qū)
隊(duì)列
表
鎖和信號量
磁盤空間
邏輯卷
文件系統(tǒng)
文件
分區(qū)
網(wǎng)絡(luò)訪問
會(huì)話
信息包
通道
了解邏輯資源和物理資源是很重要的。因?yàn)槿鄙龠壿嬞Y源線程可能阻塞,就像因?yàn)槿鄙傥锢碣Y源而阻塞一樣,擴(kuò)展下層物理資源未必能保證創(chuàng)建附加的邏輯資源。例如,考慮使用 NFS 塊 I/O 守護(hù)程序 biod??蛻魴C(jī)上的一個(gè) biod 守護(hù)程序要求處理每個(gè)暫掛的 NFS 遠(yuǎn)程 I/O 請求。因此,biod 守護(hù)程序的數(shù)量了能同時(shí)運(yùn)行的 NFS I/O 操作的數(shù)量。當(dāng)缺少 biod 守護(hù)程序時(shí),系統(tǒng)檢測會(huì)指示 CPU 和通信鏈路只使用了很少一部分。您可能有系統(tǒng)未充分利用(并且很慢)的假象,事實(shí)上這時(shí)是因?yàn)槿鄙?biod 守護(hù)程序從而了其余的資源。biod 守護(hù)程序使用處理器周期和內(nèi)存,但您不能簡單地通過添加實(shí)內(nèi)存或?qū)⑺D(zhuǎn)移到一個(gè)更快的 CPU 上來修正這個(gè)問題。解決方案是創(chuàng)建更多的邏輯資源(biod 守護(hù)程序)。
在應(yīng)用程序開發(fā)過程中可能不經(jīng)意間創(chuàng)建邏輯資源和瓶頸。傳遞數(shù)據(jù)或控制設(shè)備的方法可以有效地創(chuàng)建一個(gè)邏輯資源。當(dāng)偶然創(chuàng)建這樣的資源時(shí),通常沒有工具可監(jiān)視它們的使用,也沒有接口控制它們的分配。它們的存在可能不會(huì)引起重視,直到某個(gè)特定性能問題出現(xiàn)時(shí)就會(huì)突出它們的重要性。
最小化關(guān)鍵資源要示
下面討論在三個(gè)級別上考慮最小化工作負(fù)載的關(guān)鍵資源要求。
使用適當(dāng)?shù)馁Y源
決定在一個(gè)資源上使用另一個(gè)資源時(shí)應(yīng)該理智地考慮并且頭腦中要有明確的目標(biāo)。在應(yīng)用程序開發(fā)過程中有一個(gè)選擇資源的示例,即通過增加內(nèi)存消耗來減少 CPU 的消耗來達(dá)到一個(gè)平衡。用于演示資源選擇的公共的系統(tǒng)配置決策為:是將文件放置在單獨(dú)的本地工作站上,還是放置在遠(yuǎn)程服務(wù)器上。
減少關(guān)鍵資源的要求
對于本地開發(fā)的應(yīng)用程序,可用多種方法檢查程序以便其更有效地執(zhí)行相同的功能或除去不需要的功能。在系統(tǒng)管理級別上,爭用關(guān)鍵資源的低優(yōu)先級工作負(fù)載可以移動(dòng)到其它系統(tǒng)中、在其它時(shí)間運(yùn)行或由“工作負(fù)載管理器”控制。
結(jié)構(gòu)化資源的并行使用
因?yàn)楣ぷ髫?fù)載需要運(yùn)行多個(gè)系統(tǒng)資源,從而可以利用這樣的事實(shí),即資源是的且可以并行使用。例如,操作系統(tǒng)預(yù)讀算法檢測到程序在順序訪問文件的事實(shí),因此它調(diào)度并行執(zhí)行的其它順序讀取操作,同時(shí)應(yīng)用程序還處理先前的數(shù)據(jù)。并行也用于系統(tǒng)管理。例如,如果某個(gè)應(yīng)用程序同時(shí)訪問兩個(gè)或多個(gè)文件且如果同時(shí)訪問的這些文件存放在不同的驅(qū)動(dòng)器上,那么添加一個(gè)額外的磁盤驅(qū)動(dòng)器可能會(huì)提高磁盤 I/O 的速率。
資源分配優(yōu)先級
操作系統(tǒng)提供了一些方法來區(qū)分活動(dòng)的優(yōu)先級。有些在系統(tǒng)級別上設(shè)置,比如磁盤調(diào)步。其它的例如進(jìn)程優(yōu)先級可由單個(gè)用戶設(shè)置以反映連接到特定任務(wù)上的重要性。
重復(fù)調(diào)諧步驟
性能分析的一個(gè)公認(rèn)的真理是接下來總有瓶頸出現(xiàn)。減少某個(gè)資源的使用意味著另一資源了吞吐量或響應(yīng)時(shí)間。例如,假設(shè)我們的系統(tǒng)中有下列的利用率級別:
CPU:90% 磁盤:70% 內(nèi)存:60%
這個(gè)工作負(fù)載是 CPU 受限的。如果成功的調(diào)諧工作負(fù)載使得 CPU 負(fù)載從 90% 降到 45%,則可望在性能上有兩倍的改善。不幸的是現(xiàn)在的工作負(fù)載是 I/O 受限的,它有下列的近似利用率:
CPU:45% 磁盤:90% 內(nèi)存:60%
改善后的 CPU 利用率允許程序立刻提交磁盤請求,但接下來我們會(huì)受到由磁盤驅(qū)動(dòng)器的容量施加的。性能改善也許是 30% 而不是預(yù)期的 100%。
總是存在一個(gè)新的關(guān)鍵資源。重要的問題是使用手邊的資源是否已經(jīng)滿足性能目標(biāo)。
注意: 用 vmtune、schedtune 和其它調(diào)諧命令產(chǎn)生的不正當(dāng)系統(tǒng)調(diào)諧可能導(dǎo)致意外的系統(tǒng)行為,例如降低系統(tǒng)或應(yīng)用程序的性能或系統(tǒng)暫停。更改僅應(yīng)在性能分析識別出瓶頸時(shí)才適用。
注:
對于性能相關(guān)的調(diào)諧設(shè)置,不存在什么一般建議。
應(yīng)用額外的資源
在前述所有的方法都用盡后如果系統(tǒng)性能仍不能滿足它的目標(biāo),則必須增強(qiáng)或擴(kuò)展關(guān)鍵資源。如果關(guān)鍵資源是邏輯資源且下層物理資源足夠,則無需額外代價(jià)就可以擴(kuò)展邏輯資源。如果關(guān)鍵資源是物理資源,分析員必須研究一些額外的問題:
必須增強(qiáng)或擴(kuò)展關(guān)鍵資源到什么程度才可以終止瓶頸?
系統(tǒng)性能會(huì)滿足它的目標(biāo)嗎?或另外的資源會(huì)首先飽和嗎?
如果有一串關(guān)鍵資源的話,增強(qiáng)或擴(kuò)展所有這些資源或與另一系統(tǒng)劃分當(dāng)前工作負(fù)載是否更節(jié)省成本呢?
性能基準(zhǔn)
當(dāng)試圖比較不同環(huán)境中給定軟件的性能時(shí),常會(huì)遇到許多可能的錯(cuò)誤,一些是技術(shù)上的,一些是概念上的。本節(jié)包含主要的提示信息。本書其它各節(jié)討論評測過去和特定處理時(shí)間的不同方法。
評測處理系統(tǒng)調(diào)用需要花費(fèi)的時(shí)間(掛鐘)時(shí),需要獲取一個(gè)由下列內(nèi)容組成的數(shù)字:
執(zhí)行正運(yùn)行服務(wù)的指令所需要的確切時(shí)間
處理器等待內(nèi)存中的指令或數(shù)據(jù)時(shí)延遲的不同時(shí)間(也就是說,高速緩存和 TLB 不命中的代價(jià))
在調(diào)用開頭和結(jié)束訪問時(shí)鐘所需要的時(shí)間
由周期性事件如系統(tǒng)定時(shí)器中斷所消耗的時(shí)間
由或多或少的隨機(jī)事件消耗的時(shí)間,如 I/O
為了避免報(bào)告一個(gè)不精確的數(shù)字,常常要求多次評測工作負(fù)載。因?yàn)樗械耐獠康囊蛩囟紩?huì)增加處理時(shí)間,典型的評估集有一個(gè)曲線的形式
測定cpu性能的指標(biāo)
一、CPU使用率
1、如何查看CPU使用率
使用vmstat、top等命令查詢,獲取空閑(idle簡寫為id)值,1-id 即為cpu使用率
使用哪種方式查詢都可以,需注意當(dāng)cpu使用率較大時(shí),需使用top命令查詢單個(gè)cpu的利用率;
1)vmstat
2) top
top命令界面下,按1,顯示單個(gè)cpu的信息(再按1,顯示cpu總的使用情況)
如果某個(gè)cpu的數(shù)值使用率較大,其余的很小,則證明程序設(shè)計(jì)的有問題;
2、CPU使用率分析
注意>50% 告警>70% 嚴(yán)重>90%(也可以設(shè)置為80%以上告警)
當(dāng)系統(tǒng)cpu利用率大于50%時(shí),需要注意;大于70%時(shí),需密切關(guān)注;大于90%,情況就比較嚴(yán)重了;
建議CPU使用率70%以下;
二、CPU負(fù)載
1、如何查看CPU負(fù)載
1)查看CPU邏輯顆數(shù)(負(fù)載與邏輯CPU個(gè)數(shù)密切相關(guān))
cat /proc/cpuinfo |grep "processor"|wc -l
說明:以上為4核CPU
2)查看cpu負(fù)載
top命令界面如下(分別為1/5/15分鐘的平均負(fù)載):
2、CPU負(fù)載分析
top命令,load
average的3個(gè)值,均除以邏輯cpu個(gè)數(shù),得到的結(jié)果為每個(gè)cpu內(nèi)核的負(fù)載,對此數(shù)值進(jìn)行分析;
如果大于1,證明已經(jīng)有一定的負(fù)載了;建議每個(gè)cpu內(nèi)核平均負(fù)載不大于0.8;
如果為1~3之間,且系統(tǒng)其它資源都正常,則可接受;若大于5,則系統(tǒng)性能有問題;(有時(shí)大于2,也可以說負(fù)載高)
此數(shù)值并不是固定的,需要根據(jù)系統(tǒng)其它資源統(tǒng)一分析;
ps:這3個(gè)值代表1、5、15分鐘的平均值,通過這3個(gè)數(shù)值的信息,可以分析出系統(tǒng)負(fù)載的趨勢;
三、其他
1) vmstat的r計(jì)數(shù)器> cpu邏輯顆數(shù)
vmstat 1:關(guān)注r列值
r列: 表示系統(tǒng)中 CPU 等待處理的線程。由于 CPU 每次只能處理一個(gè)線程,所以,該數(shù)值越大,通常表示系統(tǒng)運(yùn)行越慢。
這個(gè)值如果長期大于CPU邏輯顆數(shù),則說明CPU資源不足,可以考慮增加CPU;
2)sar -u:查看CPU使用率
sar -q:查看CPU平均負(fù)載
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com