Performance

辨識 CentOS 8 上的飽和磁碟

  • January 10, 2021

快速背景;我有一個 10Gbit 文件伺服器,帶有六個執行 CentOS 8 的數據 SSD,我正在努力使線路飽和。如果我將頻寬限制在 5 或 6Gbps,一切都很好。以下是來自 Cockpit 的一些圖表,顯示一切正常(約 850 個並髮使用者,5Gbps 上限)。

文本

不幸的是,當我推得更高時,頻寬會以巨浪波動。通常這是磁碟飽和(或 SATA 卡)的標誌,在 Windows 機器上我已經解決了這樣的問題:

  1. 打開“資源監視器”。
  2. 選擇“磁碟”選項卡。
  3. 觀看“隊列長度”圖表。任何隊列長度穩定在 1 以上的磁碟/RAID 都是瓶頸。升級它或減少它的負載。

現在我在 CentOS 8 伺服器上看到了這些症狀,但我該如何找出罪魁禍首呢?我的 SATA SSD 分為三個軟體 RAID0 陣列,如下所示:

   # cat /proc/mdstat
   Personalities : [raid0]
   md2 : active raid0 sdg[1] sdf[0]
         7813772288 blocks super 1.2 512k chunks
   
   md0 : active raid0 sdb[0] sdc[1]
         3906764800 blocks super 1.2 512k chunks
   
   md1 : active raid0 sdd[0] sde[1]
         4000532480 blocks super 1.2 512k chunks`

iostat波動很大,通常有很高的 %iowait。如果我沒看錯,這似乎表明 md0 (sdb+sdc) 的負載最大。但這是瓶頸嗎?畢竟,%util 遠不及 100。

# iostat -xm 5
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          7.85    0.00   35.18   50.02    0.00    6.96

Device            r/s     w/s     rMB/s     wMB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda            106.20   57.20      0.89      0.22     3.20     0.00   2.93   0.00  136.87  216.02  26.82     8.56     3.99   0.92  14.96
sde            551.20    0.00    153.80      0.00    65.80     0.00  10.66   0.00    6.75    0.00   3.44   285.73     0.00   0.64  35.52
sdd            571.60    0.00    153.77      0.00    45.80     0.00   7.42   0.00    6.45    0.00   3.40   275.48     0.00   0.63  35.98
sdc            486.60    0.00    208.93      0.00   305.40     0.00  38.56   0.00   20.60    0.00   9.78   439.67     0.00   1.01  49.10
sdb            518.60    0.00    214.49      0.00   291.60     0.00  35.99   0.00   81.25    0.00  41.88   423.52     0.00   0.92  47.88
sdf            567.40    0.00    178.34      0.00   133.60     0.00  19.06   0.00   17.55    0.00   9.68   321.86     0.00   0.28  16.08
sdg            572.00    0.00    178.55      0.00   133.20     0.00  18.89   0.00   17.63    0.00   9.81   319.64     0.00   0.28  16.00
dm-0             5.80    0.80      0.42      0.00     0.00     0.00   0.00   0.00  519.90  844.75   3.69    74.62     4.00   1.21   0.80
dm-1           103.20   61.40      0.40      0.24     0.00     0.00   0.00   0.00  112.66  359.15  33.68     4.00     4.00   0.96  15.86
md1           1235.20    0.00    438.93      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00   363.88     0.00   0.00   0.00
md0           1652.60    0.00    603.88      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00   374.18     0.00   0.00   0.00
md2           1422.60    0.00    530.31      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00   381.72     0.00   0.00   0.00
dm-2             0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
loop0            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          5.14    0.00   22.00   72.86    0.00    0.00

Device            r/s     w/s     rMB/s     wMB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda             34.00   37.40      0.15      0.15     5.20     0.00  13.27   0.00  934.56  871.59  64.34     4.61     4.15   0.94   6.74
sde            130.80    0.00     36.14      0.00    15.00     0.00  10.29   0.00    5.31    0.00   0.63   282.97     0.00   0.66   8.64
sdd            132.20    0.00     36.35      0.00    14.40     0.00   9.82   0.00    5.15    0.00   0.61   281.57     0.00   0.65   8.62
sdc            271.00    0.00    118.27      0.00   176.80     0.00  39.48   0.00    9.52    0.00   2.44   446.91     0.00   1.01  27.44
sdb            321.20    0.00    116.97      0.00   143.80     0.00  30.92   0.00   12.91    0.00   3.99   372.90     0.00   0.91  29.18
sdf            340.20    0.00    103.83      0.00    71.80     0.00  17.43   0.00   12.17    0.00   3.97   312.54     0.00   0.29   9.90
sdg            349.20    0.00    104.06      0.00    66.60     0.00  16.02   0.00   11.77    0.00   3.94   305.14     0.00   0.29  10.04
dm-0             0.00    0.80      0.00      0.01     0.00     0.00   0.00   0.00    0.00 1661.50   1.71     0.00    12.00   1.25   0.10
dm-1            38.80   42.20      0.15      0.16     0.00     0.00   0.00   0.00  936.60 2801.86 154.58     4.00     4.00   1.10   8.88
md1            292.60    0.00    111.79      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00   391.22     0.00   0.00   0.00
md0            951.80    0.00    382.39      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00   411.40     0.00   0.00   0.00
md2            844.80    0.00    333.06      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00   403.71     0.00   0.00   0.00
dm-2             0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
loop0            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00

同時伺服器性能很差。SSH 上的每次擊鍵都需要幾秒鐘的時間來註冊,GNOME 桌面幾乎沒有響應,並且使用者報告連接斷開。我會顯示 Cockpit 圖表,但登錄超時。限制頻寬效果很好,但我想解鎖其餘的。那麼如何辨識瓶頸呢?我喜歡一些建議!

罪魁禍首是 sda,即 CentOS 磁性磁碟。大多數證據都指向那裡。正如有人評論(並且似乎已刪除),sda、dm-0 和 dm-1 上的等待時間看起來很可疑。果然,dm-0(root)和dm-1(swap)也在sda上。觀察 iotop 執行,瓶頸似乎是由 Gnome 活動的快速閃現引發的,隨後 kswapd (swap) 阻塞了工作。用“init 3”關閉 Gnome 取得了明顯的進步,但如此強大的機器絕不會因空閒的登錄螢幕而癱瘓。SMART 還在 sda 上報告了 8000 多個壞扇區。我的猜測是其中許多都在交換空間中,導致交換削弱了系統。

一個想法是將交換移動到另一個磁碟,但替換 sda 似乎更實用。我使用 CloneZilla 開始了磁碟複製,但估計需要 3 個小時,並且全新安裝會更快,所以我就這樣做了。現在伺服器執行良好!這是一個螢幕截圖,顯示了 1300 多個文件同時以 8Gbps 的速度傳輸,既美觀又穩定。問題解決了!

在此處輸入圖像描述

引用自:https://serverfault.com/questions/1047742