"레이아웃 IO 파일"에서 실제로 무슨 일이 일어나고 있는지 이해하려고 노력하고 있습니다. 원시 블록 장치에 btrfs를 설치했으며 다음 구성으로 fio를 실행할 때마다 레이아웃 단계를 완료하는 데 약 40분이 걸리고 실제 fio 작업이 IO를 수행하기 시작합니다.
runtime=600
rw=readwrite
rwmixwrite=90
random_distribution=random
percentage_random=100
size=50%
iodepth=16
ioengine=libaio
direct=1
bs=4096
time_based=1
fallocate=none
directory=/tmp/fs_d765f32a-1a34-11eb-8644-61649a50b743
write_lat_log=/tmp/ll
log_avg_msec=500
log_unix_epoch=1
log_max_value=1
filesize=8GB
다음 줄이 표시되면 명령은 15:19:51에 시작되었고 레이아웃 파일은 15:58:31에 끝났습니다(레이아웃 파일은 약 40분 소요). 소스 코드를 살펴보았는데 프로그램이 파일을 확장하기로 결정할 때마다 레이아웃이 발생하는 것 같습니다. 나는 fio 구성에 읽기가 있을 때만 레이아웃이 발생한다고 가정하고 있지만 이 시점에서는 왜 40분이 걸리는지 조금 불분명합니다. 여기서 실제로 무슨 일이 일어나고 있는지 알아보세요.
2020-10-29 15:19:51,583 [MainThread] - root - DEBUG - Fio job output: job-0: (g=0): rw=rw, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=16
fio-3.16
Starting 1 process
job-0: Laying out IO file (1 file / 4096MiB)
2020-10-29 15:58:31,896 [MainThread] - root - DEBUG - Fio job output:
job-0: (groupid=0, jobs=1): err= 0: pid=70: Thu Oct 29 22:58:31 2020
....
....