저는 CentOS 7.9.2009(3.10.0-1160.24.1.el7.x86_64)와 CentOS Steam 8(4.18.0-301.1.el8.x86_64)에 기본적으로 동일한 구성 2개를 갖고 있는데, 이는 I/O를 다르게 처리하는 것으로 보입니다. 둘 다 완전히 동일한 하드웨어를 사용합니다.
CentOS 8의 I/O 성능이 크게 느려져 전체 운영 체제가 정지됩니다. 실행 중인 프로그램은 약 50밀리초마다 약 4kb를 파일에 쓰고 몇 분마다 새 파일을 생성합니다.
해당 파티션은 정확히 동일합니다.
NAME FSTYPE LABEL
sda
|-sda1 linux_raid_member
| `-md0 ext4 /
|-sda2 linux_raid_member
| `-md2 swap [SWAP]
|-sda3 linux_raid_member
| `-md3 ext4 /home
`-sda4 linux_raid_member
`-md4 vfat /boot/efi
sdb
|-sdb1 linux_raid_member
| `-md0 ext4 /
|-sdb2 linux_raid_member
| `-md2 swap [SWAP]
|-sdb3 linux_raid_member
| `-md3 ext4 /home
`-sdb4 linux_raid_member
`-md4 vfat /boot/efi
md3 ext4 파티션은 모든 쓰기가 발생하는 곳이므로 저널링이 비활성화되어 있습니다(^has_journal).
둘 다 mdadm 버전 4.1을 사용하여 정확히 동일하게 구성됩니다.
ARRAY /dev/md/0 metadata=1.2
ARRAY /dev/md/2 metadata=1.2
ARRAY /dev/md/3 metadata=1.2
ARRAY /dev/md/4 metadata=1.0
CentOS 7 I/O 정보(양호/작동 버전):
avg-cpu: %user %nice %system %iowait %steal %idle
1.42 0.00 1.73 0.79 0.00 96.06
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdb 6.57 1.09 6.77 20.33 861.35 181.20 76.93 0.15 5.57 1.80 6.83 1.85 5.03
sda 6.57 1.09 6.89 20.34 871.93 181.20 77.37 0.16 5.73 2.06 6.97 1.86 5.05
md2 0.00 0.00 0.00 0.00 0.00 0.00 36.87 1.94 0.00 0.00 0.00 9189344.91 100.00
md0 0.00 0.00 0.12 2.04 3.04 13.32 15.18 0.38 0.00 0.00 0.00 463.89 100.01
md3 0.00 0.00 0.34 17.24 43.12 165.73 23.76 0.30 0.00 0.00 0.00 56.91 100.02
md4 0.00 0.00 0.00 0.00 0.00 0.00 9.63 0.05 0.00 0.00 0.00 1271435.74 100.00
%iowait는 상대적으로 낮고, md 장치는 100%util이고, sdX는 더 낮은 %util입니다(마지막 열).
CentOS Stream 8 I/O 정보( 최신 버전마다 iostat
다른 열 ):
avg-cpu: %user %nice %system %iowait %steal %idle
4.15 0.00 5.17 8.72 0.00 81.96
Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
sdb 15.06 51.51 1394.12 266.33 6.74 5.28 30.91 9.29 13.90 8.96 0.67 92.57 5.17 5.65 37.59
sda 15.24 51.52 1407.22 266.33 6.76 5.26 30.73 9.26 13.96 9.11 0.68 92.35 5.17 5.68 37.90
scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 2.10 0.00 0.00 0.20 0.00 2.80 0.00
md2 0.00 0.05 0.01 0.21 0.00 0.00 0.00 0.00 0.00 0.00 0.00 6.13 4.00 0.00 0.00
md0 0.16 5.46 5.68 23.85 0.00 0.00 0.00 0.00 0.00 0.00 0.00 34.53 4.36 0.00 0.00
md3 0.21 47.99 16.97 239.23 0.00 0.00 0.00 0.00 0.00 0.00 0.00 80.54 4.98 0.00 0.00
md4 0.00 0.00 0.02 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 6.01 0.50 0.00 0.00
%iowait는 매우 높고, md 장치의 %util은 0이며, sdX의 %util은 더 높습니다.
CentOS 7의 성능이 실제로 더 떨어지는 것 같습니다 atop
. MD 장치가 빨간색으로 깜박입니다.
MDD | md0 | busy 101% | read 0 | | write 29 | KiB/r 0 | KiB/w 4 | MBr/s 0.0 | MBw/s 0.0 | | avq 317813.45 | avio 345 ms
MDD | md3 | busy 101% | read 0 | | write 518 | KiB/r 0 | KiB/w 7 | MBr/s 0.0 | MBw/s 0.4 | | avq 113304.48 | avio 19.3 ms
DSK | sdb | busy 11% | read 0 | | write 551 | KiB/r 0 | KiB/w 7 | MBr/s 0.0 | MBw/s 0.4 | | avq 4.02 | avio 2.05 ms |
DSK | sda | busy 11% | read 0 | | write 551 | KiB/r 0 | KiB/w 7 | MBr/s 0.0 | MBw/s 0.4 | | avq 4.35 | avio 1.94 ms |
CentOS 8 Stream에서 배터리가 0%이므로 MD 장치가 빨간색으로 깜박이지 않습니다.
MDD | md0 | busy 0% | read 0 | write 58 | KiB/r 0 | KiB/w 4 | MBr/s 0.0 | MBw/s 0.0 | avq 0.00 | avio 0.0 ns |
MDD | md3 | busy 0% | read 0 | write 40 | KiB/r 0 | KiB/w 22 | MBr/s 0.0 | MBw/s 0.1 | avq 0.00 | avio 0.0 ns |
DSK | sdb | busy 7% | read 0 | write 93 | KiB/r 0 | KiB/w 12 | MBr/s 0.0 | MBw/s 0.1 | avq 1.30 | avio 6.97 ms |
DSK | sda | busy 6% | read 0 | write 93 | KiB/r 0 | KiB/w 12 | MBr/s 0.0 | MBw/s 0.1 | avq 1.30 | avio 6.58 ms |
NFS | rpc 4 | cread 0 | cwrit 0 | MBcr/s 0.0 | MBcw/s 0.0 | nettcp 4 | netudp 0 | badfmt 0 | badaut 0 | badcln 0 |
CentOS 8 atop
읽기에는 NFS 라인도 있지만 CentOS 7에는 NFS 라인이 없습니다. 둘 다 동일한 클라이언트 하드웨어/시스템이 설치된 NFS 서버를 실행하므로 이것이 어떻게든 영향을 미칠 수 있습니까? 클라이언트는 /home/user
모든 쓰기 작업이 이루어지는 md3 파티션에 설치됩니다.
두 시스템 모두에서 동일한 프로그램(빠른 소규모 쓰기)을 실행하면 iotop
CentOS 7에서는 I/O 사용량이 5~10%, CentOS 8 시스템에서는 30~80%의 I/O 사용량이 표시됩니다. CentOS 8 시스템에서도 [nfsd]의 일부 I/O 사용량이 표시되지만 매우 낮습니다(<4%).
나는 CentOS 8 시스템이 어떤 이유로 mdX 대신 sdX에 쓰는 것이 원인이라고 확신하지만 MD 장치의 작동 방식을 완전히 오해하고 있을 수도 있습니다.