Ⅰ iowait值多少正常
物理機稍微好點, iowait 30%~50%左右最好。
什麼是iowait?顧名思義,就是系統因為io導致的進程wait。再深一點講就是:這時候系統在做io,導致沒有進程在幹活,cpu在執行idle進程空轉,所以說iowait的產生要滿足兩個條件,一是進程在等io,二是等io時沒有進程可運行。
iowait其實是一種特殊形式的CPU空閑。特殊之處在於,在此CPU的等待隊列上有線程在等待IO完成(我們稱之為pendingIO 或者 outstanding IO)。
這是由 IO 的特點決定的,因為 IO 速度較慢,現代操作系統實現 IO 一般是通過非同步中斷來完成的:即提交 IO 請求,然後線程掛起進入等待隊列;IO 完成後,再通過中斷通知相關線程轉到就緒隊列,進行處理。
Ⅱ 計算機里的I/O是什麼東西啊
I/O輸入/輸出(Input/Output),分為IO設備和IO介面兩個部分。I/O也就是輸入輸出地址。每個設備都會有一個專用的I/O地址,用來處理自己的輸入輸出信息。I/O地址絕對不能重復,如果兩個設備的I/O地址有沖突,系統硬體就不能正常工作。
輸入輸出I/O流可以看成對位元組或者包裝後的位元組的讀取就是拿出來放進去雙路切換;實現聯動控制系統的弱電線路與被控設備的強電線路之間的轉接、隔離,以防止強電竄入系統,保障系統的安全;
與專線控制盤連接,用於控制重要消防設備(如消防泵、噴淋泵、風機等),一隻模塊可控制一台大型消防設備的啟、停控制。
IN/OUT指令的定址方式有直接定址和間接定址兩種。當埠地址<=0FFH時,採用直接定址方式。當埠地址>0FFH時,要採用間接定址方式,使用DX作為I/O間接地址寄存器,DX中存放I/O埠地址。
當然,埠地址<=0FFH時也可以間接定址。IN/OUT指令只能在埠和AL寄存器之間或埠和AX寄存器之間傳送信息。選擇Al還是AX,取決於埠的位數和數據匯流排寬度。
(2)操作系統io擴展閱讀:
現代計算機系統中配置了大量的外圍設備,即I/O設備。依據它們的工作方式的不同,通常進行如下分類:
(1)字元設備(character device),又叫做人機交互設備。用戶通過這些設備實現與計算機系統的通信。它們大多是以字元為單位發送和接受數據的,數據通信的速度比較慢。
例如,鍵盤和顯示器為一體的字元終端、列印機、掃描儀、包括滑鼠等,還有早期的卡片和紙帶輸入和輸出機。含有顯卡的圖形顯示器的速度相對較快,可以用來進行圖像處理中的復雜圖形的顯示。
(2)塊設備(block device),又叫外部存儲器,用戶通過這些設備實現程序和數據的長期保存。與字元設備相比,它們是以塊為單位進行傳輸的,如磁碟、磁帶和光碟等。塊的常見尺寸為512~32768B之間。
(3)網路通信設備。這類設備主要有網卡、數據機等,主要用於與遠程設備的通信。這類設備的傳輸速度比字元設備高,但比外部存儲器低。
這種分類的方法並不完備,有些設備並沒有包括。例如,時鍾既不是按塊訪問,也不是按字元訪問,它所做的是按照預先規定好的時間間隔產生中斷。但是這種分類足以使操作系統構造出處理I/O設備的軟體,使它們獨立於具體的設備。
I/O設備軟體:
①用戶層軟體
實現與用戶交互的介面,用戶可直接調用在用戶層提供的、與I/O操作有關的庫函數,對設備進行操作。
②設備獨立軟體
用於實現用戶程序與設備驅動器的統一介面、設備命名、設備的保護以及設備的分配與釋放等,同時為設備管理和數據傳送提供必要的存儲空間。
③設備驅動程序
與硬體直接相關,用於具體實現系統對設備發出的操作指令,驅動I/O設備工作的驅動程序。
④中斷處理程序
用於保存被中斷進程的CPU環境,轉入相應的中斷處理程序進行處理,處理完後再恢復被中斷進程的現場後,返回到被中斷進程。
Ⅲ 操作系統四種I/O控制方式之間的關系是什麼
程序I/O :CPU 被I/O 輸入輸出無限等待 浪費資源---------->中斷I/O:僅當輸入輸出完畢,CPU才處理,但中斷次數還是太多,因為會經常輸入輸出---------->DMA :輸入輸出以塊來中斷,CPU僅在輸入輸出了一大堆數據(一個塊)才處理一次,沒怎麼被I/O所拖累--------->通道:我記得是已經把CPU完全從I/O中解放出來了。 總之關系就是 想讓CPU從I/O 從解放出來而不斷發展的結果。
Ⅳ 銀河麒麟操作系統如何測磁碟IO
1、聯系銀河麒麟伺服器的客服,在客服的指導下測磁碟IO。
2、去附近的電腦店,讓電腦工程師幫忙測磁碟IO。
Ⅳ 如何解決磁碟io造成的系統卡頓問題
具體問題具體分析,舉例來說明為什麼磁碟IO成瓶頸資料庫的性能急速下降了。
為什麼當磁碟IO成瓶頸之後, 資料庫的性能不是達到飽和的平衡狀態,而是急劇下降。為什麼資料庫的性能有非常明顯的分界點,原因是什麼?
相信大部分做資料庫運維的朋友,都遇到這種情況。 資料庫在前一天性能表現的相當穩定,資料庫的響應時間也很正常,但就在今天,在業務人員反饋業務流量沒有任何上升的情況下,資料庫的變得不穩定了,有時候一個最簡單的insert操作, 需要幾十秒,但99%的insert卻又可以在幾毫秒完成,這又是為什麼了?
dba此時心中有無限的疑惑,到底是什麼原因呢? 磁碟IO性能變差了?還是業務運維人員反饋的流量壓根就不對? 還是資料庫內部出問題?昨天不是還好好的嗎?
當資料庫出現響應時間不穩定的時候,我們在操作系統上會看到磁碟的利用率會比較高,如果觀察仔細一點,還可以看到,存在一些讀的IO. 資料庫伺服器如果存在大量的寫IO,性能一般都是正常跟穩定的,但只要存在少量的讀IO,則性能開始出現抖動,存在大量的讀IO時(排除配備非常高速磁碟的機器),對於在線交易的資料庫系統來說,大概性能就雪崩了。為什麼操作系統上看到的磁碟讀IO跟寫IO所帶來的性能差距這么大呢?
如果親之前沒有注意到上述的現象,親對上述的結論也是懷疑。但請看下面的分解。
在寫這個文章之前,作者閱讀了大量跟的IO相關的代碼,如非同步IO線程的相關的,innodb_buffer池相關的,以及跟讀數據塊最相關的核心函數buf_page_get_gen函數以及其調用的相關子函數。為了將文章寫得通俗點,看起來不那麼累,因此不再一行一行的將代碼解析寫出來。
咱們先來提問題。buf_page_get_gen函數的作用是從Buffer bool裡面讀數據頁,可能存在以下幾種情況。
提問. 數據頁不在buffer bool 裡面該怎麼辦?
回答:去讀文件,將文件中的數據頁載入到buffer pool裡面。下面是函數buffer_read_page的函數,作用是將物理數據頁載入到buffer pool, 圖片中顯示
buffer_read_page函數棧的頂層是pread64(),調用了操作系統的讀函數。
通過解析buf_wait_for_read函數的下層函數,我們知道其實通過首先自旋加鎖pin的方式,超過設定的自旋次數之後,進入等待,等待IO完成被喚醒。這樣節省不停自旋pin時消耗的cpu,但需要付出被喚起時的開銷。
再繼續擴展問題: 如果會話線程A 經過物理IO將數據頁1001讀入buffer之後,他需要修改這個頁,而在會話線程A之後的其他的同樣需要訪問數據頁1001的會話線程,即使在數據頁1001被入讀buffer pool之後,將仍然處於等待中。因為在數據頁上讀取或者更新的時候,同樣需要上鎖,這樣才能保證數據頁並發讀取/更新的一致性。
由此可見,當一個高並發的系統,出現了熱點數據頁需要從磁碟上載入到buffer pool中時,造成的延遲,是難以想像的。因此排在等待熱點頁隊列最後的會話線程最後才得到需要的頁,響應時間也就越長,這就是造成了一個簡單的sql需要執行幾十秒的原因。
再回頭來看上面的問題,mysql資料庫出現性能下降時,可以看到操作系統有讀IO。 原因是,在資料庫對數據頁的更改,是在內存中的,然後通過檢查點線程進行非同步寫盤,這個非同步的寫操作是不堵塞執行sql的會話線程的。所以,即使看到操作系統上有大量的寫IO,資料庫的性能也是很平穩的。但當用戶線程需要查找的數據頁不在buffer pool中時,則會從磁碟上讀取,在一個熱點數據頁不是非常多的情況下,我們設置足夠大的innodb_buffer_pool的size, 基本可以緩存所有的數據頁,因此一般都不會出現缺頁的情況,也就是在操作系統上基本看不到讀的IO。 當出現讀的IO時,原因時在執行buf_read_page_low函數,從磁碟上讀取數據頁到buffer pool, 則資料庫的性能則開始下降,當出現大量的讀IO,資料庫的性能會非常差。
Ⅵ I/O系統是什麼
1、概念I/O系統,英文全稱為「Input output system」,中文全稱為「輸入輸出系統」,由輸入輸出控制系統和外圍設備兩部分組成,是計算機系統的重要組成部分。在計算機系統中,通常把處理器和主存儲器之外的部分稱為輸入輸出系統。
2、作用:對指定外設進行i/o操作,同時完成許多其他的控制。包括外設編址,數據通路的建立,向主機提供外設的狀態信息等。
3、結構輸入輸出控制系統:在計算機中對外圍設備實施控制的系統。主要功能是:向外圍設備發送動作命令、控制輸入輸出數據的傳送、檢測外圍設備的狀態。輸入輸出設備必須通過該系統同中央處理器和主存儲器交換數據。
輸入輸出控制系統按控制方式分為中央處理器程序控制、直接存儲器存取控制、輸入輸出處理機控制三種。輸入輸出處理機控制又由通道控制方式和外圍處理機控制方式組成。
4、應用:現代計算機系統中配置了大量的外圍設備,即I/O設備。依據它們的工作方式的不同,通常進行如下分類。
(1)字元設備(character device),又叫做人機交互設備。用戶通過這些設備實現與計算機系統的通信。它們大多是以字元為單位發送和接受數據的,數據通信的速度比較慢。例如,鍵盤和顯示器為一體的字元終端、列印機、掃描儀、包括滑鼠等,還有早期的卡片和紙帶輸入和輸出機。含有顯卡的圖形顯示器的速度相對較快,可以用來進行圖像處理中的復雜圖形的顯示。
(2)塊設備(block device),又叫外部存儲器,用戶通過這些設備實現程序和數據的長期保存。與字元設備相比,它們是以塊為單位進行傳輸的,如磁碟、磁帶和光碟等。塊的常見尺寸為512~32768B之間。
(3)網路通信設備。這類設備主要有網卡、數據機等,主要用於與遠程設備的通信。這類設備的傳輸速度比字元設備高,但比外部存儲器低。這種分類的方法並不完備,有些設備並沒有包括。例如,時鍾既不是按塊訪問,也不是按字元訪問,它所做的是按照預先規定好的時間間隔產生中斷。但是這種分類足以使操作系統構造出處理I/O設備的軟體,使它們獨立於具體的設備。
(6)操作系統io擴展閱讀:
I/O介面的功能是負責實現CPU通過系統匯流排把I/O電路和 外圍設備聯系在一起,按照電路和設備的復雜程度,I/O介面的硬體主要分為兩大類:
(1)I/O介面晶元
這些晶元大都是集成電路,通過CPU輸入不同的命令和參數,並控制相關的I/O電路和簡單的外設作相應的操作,常見的介面晶元如定時/計數器、中斷控制器、DMA控制器、並行介面等。
(2)I/O介面控制卡
有若干個集成電路按一定的邏輯組成為一個部件,或者直接與CPU同在主板上,或是一個插件插在系統匯流排插槽上。
按照介面的連接對象來分,又可以將他們分為串列介面、並行介面、鍵盤介面和磁碟介面等。
Ⅶ 操作系統的進程遇到io中斷會進入什麼狀態
進程遇到IO中斷會進入阻塞態;
大概工作過程:進程開始處於運行態時調用IO設備(IO中斷),IO設備速度慢,為不浪費CPU,進程會讓出CPU使用權,主動進入阻塞態等待IO設備,IO設備工作完成後,進程會從阻塞態喚醒加入就緒隊列(就緒態),在系統調度後可運行。
Ⅷ 湯子瀛版的操作系統中提到的IO控制方式之一是程序IO方式,它和程序輪詢方式是一回事嗎
Io控制方式總共分為四種
程序Io方式:在早期的計算機系統中,由於沒有中斷機構,所以都採用了程序Io方式
中斷驅動IO控制方式
中斷驅動IO控制方式一般用於控制字元設備 並且這種設備一般都是低速設備
直接存儲器訪問IO控制方式
用於控制塊設備 控制去讀或寫一個連續的數據塊 並且控制速度較高的設備
IO通道控制設備:是直接存儲器訪問的發展 進一步減少Cpu的干預可以控制對一組數據塊進行讀或寫 這些數據塊可以不連續、
Ⅸ 一個進程在進行I/O操作時處於什麼狀態
進程在運行過程中主要是在就緒、運行和阻塞三種狀態間進行轉換。創建狀態和退出狀態描述進程創建的過程和進程退出的過程。 1)運行狀態(running):進程佔用處理器資源;處於此狀態的進程的數目小於等於處理器的數目。在沒有其他進程可以執行時(如所有進程都在阻塞狀態),通常會自動執行系統的空閑進程。 2)就緒狀態(ready):進程已獲得除處理器外的所需資源,等待分配處理器資源;只要分配了處理器進程就可執行。就緒進程可以按多個優先順序來劃分隊列。例如,當一個進程由於時間片用完而進入就緒狀態時,排人低優先順序隊列;當進程由i/o操作完成而進入就緒狀態時,排入高優先順序隊列。 3)阻塞狀態(blocked):當進程由於等待i/o操作或進程同步等條件而暫停運行時,它處於阻塞狀態。 4)創建狀態(new):進程正在創建過程中,還不能運行。操作系統在創建狀態要進行的工作包括分配和建立進程式控制制塊表項、建立資源表格(如打開文件表)並分配資源、載入程序並建立地址空間表等。 5)退出狀態(exit):進程已結束運行,回收除進程式控制制塊之外的其他資源,並讓其他進程從進程式控制制塊中收集有關信息(如記帳和將退出代碼傳遞給父進程)。 五狀態進程模型中的狀態轉換主要包括下列幾種。操作系統中多個進程的並發執行是通過調度與超時兩種轉換間的循環,或調度、等待事件和事件出現三種轉換間的循環來描述的。 1)創建新進程:創建一個新進程,以運行一個程序。創建新進程的可能原因包括用戶登錄、操作系統創建以提供某項服務、批處理作業等。 2)收容(admit,也稱為提交):收容一個新進程,進入就緒狀態。由於性能、內存等原因,系統會限制並發進程總數。 3)調度運行(dispatch):從就緒進程表中選擇一個進程,進入運行狀態。 4)釋放(release):由於進程完成或失敗而終止進程運行,進入結束狀態。 為了簡潔,狀態變遷圖中只畫出了運行狀態到退出狀態間的釋放轉換;但實際上,還存在從就緒狀態或阻塞狀態到退出狀態的釋放轉換。運行到結束的轉換可分為正常退出(exit)和異常退出(abort);其中異常退出是指進程執行超時、內存不夠、非法指令或地址訪問、i/0操作失敗、被其他進程所終止等原因而退出。從就緒狀態或阻塞狀態到結束狀態的釋放轉換可能是由於多種原因引發,如父進程可在任何時間終止子進程。 5)超時(timeout):由於用完時間片或高優先順序進程就緒等原因導致進程暫停運行 6)事件等待(event wait):進程要求的事件未出現而進入阻塞;可能的原因包括申請系統服務或資源、通信、i/o操作等。 7)事件出現(eventoccurs):進程等待的事件出現;如操作完成、申請成功等。