3.10.0-957.12.1.el7.x86_64
다음과 같이 2개의 NVMe 디스크가 설정된 CentOS 7 서버(커널)가 있습니다 .
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 477G 0 disk
├─nvme0n1p1 259:2 0 511M 0 part /boot/efi
├─nvme0n1p2 259:4 0 19.5G 0 part
│ └─md2 9:2 0 19.5G 0 raid1 /
├─nvme0n1p3 259:7 0 511M 0 part [SWAP]
└─nvme0n1p4 259:9 0 456.4G 0 part
└─data-data 253:0 0 912.8G 0 lvm /data
nvme1n1 259:1 0 477G 0 disk
├─nvme1n1p1 259:3 0 511M 0 part
├─nvme1n1p2 259:5 0 19.5G 0 part
│ └─md2 9:2 0 19.5G 0 raid1 /
├─nvme1n1p3 259:6 0 511M 0 part [SWAP]
└─nvme1n1p4 259:8 0 456.4G 0 part
└─data-data 253:0 0 912.8G 0 lvm /data
모니터링 결과에 따르면 지속적으로 80% 이상의 io 활용률을 iostat
보이는 반면, 개별 파티션의 io 활용률은 0%이며 완전히 사용 가능합니다(250,000 iops, 초당 1GB 읽기/쓰기).nvme0n1
nvme1n1
avg-cpu: %user %nice %system %iowait %steal %idle
7.14 0.00 3.51 0.00 0.00 89.36
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
nvme1n1 0.00 0.00 0.00 50.50 0.00 222.00 8.79 0.73 0.02 0.00 0.02 14.48 73.10
nvme1n1p1 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
nvme1n1p2 0.00 0.00 0.00 49.50 0.00 218.00 8.81 0.00 0.02 0.00 0.02 0.01 0.05
nvme1n1p3 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
nvme1n1p4 0.00 0.00 0.00 1.00 0.00 4.00 8.00 0.00 0.00 0.00 0.00 0.00 0.00
nvme0n1 0.00 0.00 0.00 49.50 0.00 218.00 8.81 0.73 0.02 0.00 0.02 14.77 73.10
nvme0n1p1 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
nvme0n1p2 0.00 0.00 0.00 49.50 0.00 218.00 8.81 0.00 0.02 0.00 0.02 0.01 0.05
nvme0n1p3 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
nvme0n1p4 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
md2 0.00 0.00 0.00 48.50 0.00 214.00 8.82 0.00 0.00 0.00 0.00 0.00 0.00
dm-0 0.00 0.00 0.00 1.00 0.00 4.00 8.00 0.00 0.00 0.00 0.00 0.00 0.00
이 동작의 근본 원인이 무엇인지 아이디어가 있습니까?
높은 IO 경고를 트리거하는 모니터링을 제외하고 모든 것이 제대로 작동하는 것 같습니다.
답변1
잘못된 출력의 원인 은 iostat
RHEL/CentOS 버전 7.7에서 해결될 커널 버그와 관련된 것으로 보입니다. 스케줄러가 설정된 장치는 영향을 받으며 이는 NVME 드라이브의 기본값입니다. %util
svctm
kernel-3.10.0-1036.el7
none
참고로Red Hat 솔루션(로그인 필요) 오류에 대해 설명합니다.
내부에CentOS 버그 보고누군가 위에서 언급한 커널/배포판 버전으로 위의 문제가 해결될 것이라고 썼습니다.
스케줄러를 변경하면 새 커널을 사용할 수 있을 때까지 문제가 해결됩니다. 이는 실제 성능이 아닌 측정항목에만 영향을 미치는 것으로 보이므로 새로운 커널이 나올 때까지 이러한 측정항목을 무시하는 것도 또 다른 가능성입니다.
NVME 드라이버가 없어 이를 확인할 수 없습니다. 아마도 @michal kralik이 이를 확인할 수 있을 것입니다.
답변2
Linux 커널은 각 논리 파티션으로 전달된 IO를 IO가 실제로 수행되는 물리적 장치로 다시 매핑합니다.