LinuxIO效能優化實戰學習筆記

2021-10-20 15:23:06 字數 2194 閱讀 2151

以下內容來自極客課程,如對您有幫助,詳細課程請見海報:

1.檔案系統

為了方便管理,linux 檔案系統為每個檔案都分配兩個資料結構,索引節點(index node)和目錄項(directory entry)。它們主要用來記錄檔案的元資訊和目錄結構。

2.slab

cache = cached+sreclaim

實際上,核心使用 slab 機制,管理目錄項和索引節點的快取。/proc/meminfo 只給出了 slab 的整體大小,具體到每一種 slab 快取,還要檢視 /proc/slabinfo 這個檔案。

3.io工作原理

其實,無論機械磁碟,還是固態磁碟,相同磁碟的隨機 i/o 都要比連續 i/o 慢很多,原因也很明顯。

我們可以把 linux 儲存系統的 i/o 棧,由上到下分為三個層次,分別是檔案系統層、通用塊層和裝置層。這三個 i/o 層的關係如下圖所示,這其實也是 linux 儲存系統的 i/o 棧全景圖。

根據這張 i/o 棧的全景圖,我們可以更清楚地理解,儲存系統 i/o 的工作原理。

io排程演算法

其中,對 i/o 請求排序的過程,也就是我們熟悉的 i/o 排程。事實上,linux 核心支援四種 i/o 排程演算法,分別是 none、noop、cfq 以及 deadline。這裡我也分別介紹一下。

4.io問題排查思路

用iostat看磁碟的await,utils,iops,bandwidth

用smartctl看磁碟的health status

用iotop/pidstat找出持續讀寫的程序做優化

通過strace -f -p [pid] 檢視read或write的檔案符號,通過lsof -p [pid] 再找到某個具體的問題件

5.io優化的常見思路

應用程式優化

應用程式處於整個 i/o 棧的最上端,它可以通過系統呼叫,來調整 i/o 模式(如順序還是隨機、同步還是非同步), 同時,它也是 i/o 資料的最終**。在我看來,可以有這麼幾種方式來優化應用程式的 i/o 效能。

檔案系統優化

磁碟優化1.檢視空間和inode數量df

$ df -i /dev/sda1 

filesystem inodes iused ifree iuse% mounted on /dev/sda1

3870720 157460 3713260 5% /

2.使用 slabtop ,來找到占用記憶體最多的快取型別

3.使用iostat檢視每個磁碟的使用率、iops、吞吐量

# -d -x表示顯示所有磁碟i/o的指標

這些指標中,你要注意:

4.streace跟蹤程序、執行緒核心呼叫

在strace -p pid後加上-f,多程序和多執行緒都可以跟蹤。

5.檔案系統和磁碟io相關命令

學習Linux效能優化實戰 1

程序排程 軟中斷測試工具 最近在極客時間上面發現了倪鵬飛老師的linux效能優化實戰,自己感覺講得很好,有興趣的朋友可以去極客時間上面訂閱。部落格是自己總結學習到的一些命令,記錄下來,以備後面使用。侵刪。uptime 用來看系統過去的 1 5 15 分鐘的平均負載。mpstat p all inte...

Linux IO效能檢視

1.top 命令 wa值越高 可能磁碟io越大,但是網路io也會導致該值高,所以只是說可能。2.sar d p 1 2 其中,d 引數代表檢視磁碟效能,p 引數代表將 dev 裝置按照 sda,sdb 名稱顯示,1 代表每隔1s採取一次數值,2 代表總共採取2次數值。await svctm util...

canvas動畫實戰與效能優化

插播一篇關於canvas動畫及效能優化的文章,為我們可以更好的進入到webgl的世界奠定基礎。首先介紹一下我們要實現的動畫內容 夜空中的流星原始碼。今天就來跟大家詳細分享一下如何進行編寫canvas動畫以及如何進行優化。canvas的頁面組成是非常簡單的。如下所示 您的瀏覽器不支援canvas標籤,...