RAID1 어레이를 재동기화하고 있습니다. /proc/mdstat
예상 속도로 진행되고 있음을 보여주지만 iotop
모든 측면에서 디스크가 유휴 상태임을 보여줍니다. md127_resync
커널 스레드가 언급되었지만 IO가 표시되지 않습니다. 이는 커널 스레드에 의해 수행되는 것으로 추측됩니다 man iotop
.
이 IO가 에 나타나지 않는다는 것을 어떻게 설명합니까 iotop
? 설명에는 다른 유형의 IO도 발생하지 않는다는 내용이 나와 있습니까?
저는 데비안 9를 사용하고 있습니다.
답변1
주의 깊게 읽어보면 TIP이 있습니다man iotop
최소한 CONFIG_TASK_DELAY_ACCT, CONFIG_TASK_IO_ACCOUNTING, CONFIG_TASKSTATS 및 CONFIG_VM_EVENT_COUNTERS 옵션은 Linux 커널 빌드 구성에서 활성화되어야 합니다.
iotop은 샘플링 기간 동안 프로세스/스레드별로 읽고 쓴 I/O 대역폭 열을 표시합니다. 또한 스레드/프로세스가 교체하고 I/O를 기다리는 데 소비한 시간의 비율도 표시합니다. 각 프로세스에 대해 해당 I/O 우선순위(클래스/수준)가 표시됩니다.
또한 인터페이스 상단에는 샘플링 기간 동안 읽고 쓴 총 I/O 대역폭도 표시됩니다. Total DISK READ 및 Total DISK WRITE 값은 한쪽의 프로세스와 커널 스레드, 다른 쪽의 커널 블록 장치 하위 시스템 간의 총 읽기 및 쓰기 대역폭을 나타냅니다. Actual DISK READ 및 Actual DISK WRITE 값은 커널 블록 장치 하위 시스템과 기본 하드웨어(HDD, SSD 등) 간의 실제 디스크 I/O에 해당하는 대역폭을 나타냅니다. 따라서 Linux 커널 내에서 발생하는 데이터 캐싱 및 I/O 작업 재정렬로 인해 총 값과 실제 값이 특정 순간에 동일하지 않을 수 있습니다.
CONFIG_TASK_DELAY_ACCT, CONFIG_TASK_IO_ACCOUNTING, CONFIG_TASKSTATS는 각 작업에 대한 통계로 구성된 것처럼 들립니다 Total
. 그리고 CONFIG_VM_EVENT_COUNTERS는 단일 전체 통계입니다 Actual
( /proc/vmstat
구성 옵션을 찾는 경우). 가상 메모리를 의미하는 VM 부분은 이것이 커널 버퍼링 IO, 즉 페이지 캐시를 통한 IO에 관한 것임을 강력히 암시합니다. 즉, 이러한 통계는 IO가 진행됨에 따라 캡처됩니다.~에서장치 하위 시스템을 차단하는 VM 하위 시스템입니다.
이것이 나에게 의미하는 바는 가상 머신을 우회하는 IO는 포함되지 않을 수 있다는 것 입니다 iotop
. O_DIRECT
또한 소프트웨어 RAID(및 LVM 등)를 통해 전달된 IO의 이중 계산을 방지하는 방법 iotop
과 다른 블록 장치를 계산하는 기능이 없는 이유도 설명합니다.
RAID 재동기화 IO는 페이지 캐시를 통과할 필요가 없습니다. 비동기 IO와 몇 가지 유사점이 있다고 생각되는 커널 API를 사용할 것입니다(Linux는 비동기 IO에 대해 O_DIRECT만 지원합니다). 따라서 페이지 캐시가 제공하는 비동기 쓰기 저장 및 미리 읽기를 사용 read()
하거나 사용하지 않고도 write()
성능 제한이 발생하지 않습니다 .