我如何知道 SSD 是否是 Linux 中的瓶颈?

我如何知道 SSD 是否是 Linux 中的瓶颈?

我有一台使用三星 840 pro 磁盘的数据库服务器。即使网站上没有太多活动,负载也总是高于平时。所以我怀疑磁盘已经磨损了。但我如何检查磁盘 i/o 是否是瓶颈?

以下是一些可能相关的快照:

 top - 03:02:11 up 766 days, 20:45,  1 user,  load average: 7.42, 6.89, 6.72
Tasks: 325 total,   1 running, 321 sleeping,   3 stopped,   0 zombie
%Cpu(s): 17.3 us,  0.4 sy,  0.0 ni, 82.1 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem:  13227468+total, 27130284 used, 10514440+free,    94308 buffers
KiB Swap:  3906556 total,     9136 used,  3897420 free.  3833216 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                         
21764 mysql     20   0 27.058g 0.021t  12164 S 576.0 17.2  17369,44 mysqld                                                          
  574 root      20   0       0      0      0 S   0.3  0.0 280:00.66 jbd2/sda1-8                                                     
 5585 root      20   0       0      0      0 S   0.3  0.0   0:08.04 kworker/18:0                                                    
    1 root      20   0   28692   4540   2964 S   0.0  0.0  42:51.98 systemd                                                         
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.50 kthreadd                                                        
    3 root      20   0       0      0      0 S   0.0  0.0 894:44.38 ksoftirqd/0                                                     
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                    
    6 root      20   0       0      0      0 S   0.0  0.0  21:07.91 kworker/u64:0                                                   
    8 root      20   0       0      0      0 S   0.0  0.0   2510:32 rcu_sched                                                       
    9 root      20   0       0      0      0 S   0.0  0.0   0:00.00 

iotop 输出:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                         
21764 mysql     20   0 27.058g 0.021t  12164 S 576.0 17.2  17369,44 mysqld                                                          
  574 root      20   0       0      0      0 S   0.3  0.0 280:00.66 jbd2/sda1-8                                                     
 5585 root      20   0       0      0      0 S   0.3  0.0   0:08.04 kworker/18:0                                                    
    1 root      20   0   28692   4540   2964 S   0.0  0.0  42:51.98 systemd                                                         
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.50 kthreadd                                                        
    3 root      20   0       0      0      0 S   0.0  0.0 894:44.38 ksoftirqd/0                                                     
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                    
    6 root      20   0       0      0      0 S   0.0  0.0  21:07.91 kworker/u64:0                                                   
    8 root      20   0       0      0      0 S   0.0  0.0   2510:32 rcu_sched                                                       
    9 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                                          
   10 root      rt   0       0      0      0 S   0.0  0.0   5:28.52 migration/0                                                     
   11 root      rt   0       0      0      0 S   0.0  0.0   3:15.12 watchdog/0                                                      
   12 root      rt   0       0      0      0 S   0.0  0.0   3:27.27 watchdog/1                                                      
   13 root      rt   0       0      0      0 S   0.0  0.0   3:19.37 migration/1                                                     
   14 root      20   0       0      0      0 S   0.0  0.0 190:10.26 ksoftirqd/1                                                     
   16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H                                                    
   17 root      rt   0       0      0      0 S   0.0  0.0   3:19.65 watchdog/2                                                      
   18 root      rt   0       0      0      0 S   0.0  0.0   2:52.44 migration/2                                                     
   19 root      20   0       0      0      0 S   0.0  0.0 194:18.02 ksoftirqd/2                                                     
   21 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/2:0H                                                    
   22 root      rt   0       0      0      0 S   0.0  0.0   3:21.4

iostat -m (数据库位于 sda 上,Linux 文件系统位于 sdb 上)

Linux 3.16.0-4-amd64 (back)     03/27/20    _x86_64_    (32 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           6.76    0.00    0.38    0.07    0.00   92.79

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sdd               0.03         0.00         0.01      43327     384521
sdc               0.08         0.00         0.01     166547     748630
sdb               0.37         0.00         0.02      78269    1076710
sda               8.46         0.00         0.11      54407    7463246

答案1

上面发布的所有内容都表明 CPU 是瓶颈,而不是 SSD。最能说明问题的是 576% 的 CPU,我预计这意味着 5.76 个 CPU 核心被消耗了。

该问题似乎与 MySQL 有关 - 可能是竞争条件或复杂的查询、损坏的表或错误的索引?

如果问题出在磁盘上,我预计会看到 CPU 较低且 IOWait 较高,但 IOWait 是 0.07。

相关内容