本篇內(nèi)容主要講解“CPU、內(nèi)存、磁盤IO之間的關(guān)系是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“CPU、內(nèi)存、磁盤IO之間的關(guān)系是什么”吧!
鶴峰網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),鶴峰網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為鶴峰千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的鶴峰做網(wǎng)站的公司定做!
一、名詞解釋
CPU:工人,干活的,判斷以及邏輯處理。
內(nèi)存:車間,工人干活的地方,車間中加工原料,當(dāng)車間中沒有原料了,在從倉(cāng)庫(kù)中取原料,對(duì)原料進(jìn)行加工
內(nèi)存本身有一定的存儲(chǔ)空間,對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行處理的速度比從硬盤取數(shù)據(jù)再處理的速度快很多。
硬盤:倉(cāng)庫(kù),原料,數(shù)據(jù)存儲(chǔ)。
二、三者之間的關(guān)系
CPU對(duì)數(shù)據(jù)進(jìn)行判斷以及邏輯處理,本身不能存儲(chǔ)數(shù)據(jù),這時(shí)cpu從內(nèi)存取數(shù)據(jù)進(jìn)行邏輯計(jì)算,如果內(nèi)存沒有數(shù)據(jù),才會(huì)從硬盤讀數(shù)據(jù)到內(nèi)存,再對(duì)數(shù)據(jù)進(jìn)行處理。
就像人吃飯一樣,cpu就是人,內(nèi)存就是碗,硬盤就是飯鍋!
當(dāng)cpu進(jìn)程等待,會(huì)造成內(nèi)存開銷的增加,內(nèi)存不夠用的時(shí)候會(huì)用到虛擬內(nèi)存,導(dǎo)致虛擬內(nèi)存的增加,這時(shí)磁盤IO開銷就會(huì)增加,系統(tǒng)態(tài)sy%提升,cpu開銷增加;內(nèi)存里數(shù)據(jù)不夠用,才用磁盤中取數(shù)據(jù)。
三、性能高因素
1、系統(tǒng)CPU利用率高是什么原因?
系統(tǒng)中斷和切換頻繁很耗用CPU,共享資源競(jìng)爭(zhēng),大量io交互。CPU太差,主頻太低,都是形容CPU差。
蘋果系統(tǒng)一直是單線程,因?yàn)檫@樣減少了N多插隊(duì)的請(qǐng)求導(dǎo)致的中斷減速.
2、用戶CPU利用率高是什么原因?
計(jì)算量大,比如運(yùn)算,連接查詢,數(shù)據(jù)統(tǒng)計(jì);
非空閑等待,比如IO等待、資源爭(zhēng)用(同一資源被不同線程請(qǐng)求,而此資源又需要保持一致性,只能前一個(gè)釋放后一個(gè)
再訪問,這樣導(dǎo)致的等待);
過多的系統(tǒng)調(diào)用,系統(tǒng)調(diào)用即調(diào)用操作系統(tǒng)提供的程序接口,比如Java項(xiàng)目中寫日志,會(huì)調(diào)用系統(tǒng)接口進(jìn)行日志寫操作,這樣
會(huì)導(dǎo)致系統(tǒng)CPU使用率過高;
過多的中斷,中斷是CPU用來響應(yīng)請(qǐng)求的機(jī)制,比如鍵盤的輸入,鼠標(biāo)的點(diǎn)擊等都會(huì)產(chǎn)生中斷,中斷是通知CPU有任務(wù)需
要響應(yīng),CPU停下正在執(zhí)行的程序來響應(yīng)當(dāng)前的中斷;
3、內(nèi)存吃緊的原因?
多數(shù)是過多的頁(yè)交換和內(nèi)存泄漏
頁(yè)交換:內(nèi)存不夠用來存儲(chǔ)需要的數(shù)據(jù)時(shí),操作系統(tǒng)會(huì)把原內(nèi)存中的部分內(nèi)容釋放掉(移除或者存入磁盤),然后把需要
的內(nèi)容載入,這個(gè)過程就是頁(yè)交換。
4、下面IO高的原因是?
讀寫量大;磁盤太慢,是因?yàn)檗D(zhuǎn)速慢,或者磁頭少,或者RAID 型號(hào)不太OK(RAID 有 0 1 5 10 100 等等,有的可以做存儲(chǔ)盤,有的可以做備份盤);
內(nèi)存不足,操作系統(tǒng)就會(huì)用虛擬內(nèi)存,肯定要用系統(tǒng)的交換區(qū)了,比如LINUX 的SWAP,就造成分頁(yè)增多;
如果你是老板,你如何檢查打工仔的效率(性能)呢? 我們一般會(huì)通過以下這些信息來判斷打工仔是否偷懶:
(1)、打工仔接受和完成多少任務(wù)并向老板匯報(bào)了(中斷);
(2)、打工仔和老板溝通、協(xié)商每項(xiàng)工作的工作進(jìn)度(上下文切換);
(3)、打工仔的工作列表是不是都有排滿(可運(yùn)行隊(duì)列);
(4)、打工仔工作效率如何,是不是在偷懶(CPU 利用率);
四、系統(tǒng)中的上下文切換 、運(yùn)行隊(duì)列等
上下文切換:每個(gè)CPU(或多核CPU的每個(gè)核心)在同一時(shí)間只能執(zhí)行一個(gè)線程<不包括超線程CPU>,Linux采用搶占式調(diào)度。
當(dāng)線程執(zhí)行到達(dá)一個(gè)時(shí)間片后,如果線程有IO阻塞或高優(yōu)先級(jí)線程要執(zhí)行的時(shí)候,Linux將執(zhí)行線程切換,切換前先保存當(dāng)
前線程執(zhí)行狀態(tài)(現(xiàn)場(chǎng)),并恢復(fù)待執(zhí)行線程狀態(tài),這個(gè)過程就叫做上下文切換。在Java應(yīng)用中,文件IO、網(wǎng)絡(luò)IO、鎖等待、線
程Sleep操作都會(huì)使該線程進(jìn)行阻塞或睡眠狀態(tài),從而觸發(fā)上下文切換。頻繁的上下文切換會(huì)造成內(nèi)核占用較高的CPU,使得
響應(yīng)速度下降。
運(yùn)行隊(duì)列:每個(gè)CPU核心都維護(hù)了一個(gè)可運(yùn)行隊(duì)列,例如一個(gè)4核CPU,啟動(dòng)8個(gè)線程,且8個(gè)線程都處于可運(yùn)行狀態(tài),平均
分配情況下,每個(gè)核心的可運(yùn)行隊(duì)列里就有2個(gè)線程。通常而言,系統(tǒng)的load是由CPU運(yùn)行隊(duì)列決定的,假設(shè)以上狀態(tài)維持
了1分鐘,則1分鐘內(nèi)系統(tǒng)load就是2。運(yùn)行隊(duì)列值越大,代表線程要消耗越長(zhǎng)的時(shí)間才能執(zhí)行完成。通常建議每個(gè)核心運(yùn)行
隊(duì)列為1-3個(gè)。
利用率:CPU利用率指在用戶進(jìn)程,內(nèi)核,中斷處理,IO等待以及空閑五個(gè)部分百分比,這五個(gè)值是用來分析CPU消耗情
況的關(guān)鍵指標(biāo)。Linux System and NetWork Performent Monitoring建議用戶進(jìn)程/內(nèi)核消耗比例為 65%-70% / 30%-3
5% 左右。
到此,相信大家對(duì)“CPU、內(nèi)存、磁盤IO之間的關(guān)系是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!