Re: [PATCH v2] btrfs/237: Use zone cap instead of zone size in fill_size and rest calculation

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]




On 2022-03-18 08:54, Naohiro Aota wrote:
>>  
>> -zonesize=$(cat /sys/block/$(_short_dev $SCRATCH_DEV)/queue/chunk_sectors)
>> -zonesize=$((zonesize << 9))
>> -
>>  _scratch_mkfs >/dev/null 2>&1
>>  _scratch_mount -o commit=1 # 1s commit time to speed up test
>>  
>> @@ -49,12 +46,18 @@ if [[ "$uuid" == "" ]]; then
>>  	exit 1
>>  fi
>>  
>> +data_bg_zone_idx=5
> 
> Hmm. Yeah, it's currently there. But, I'd hesitate to use that like a
> constant number.
> 
> Instead, how about querying "btrfs inspect-internal" like in
> get_data_bg() do? E.g, like this:
> 
> # Assumes SINGLE data profile
> btrfs inspect-internal dump-tree -t CHUNK $SCRATCH_DEV | grep -A 4 CHUNK_ITEM |\
> 	grep -A 3 'type DATA\|SINGLE' |\
> 	grep -Eo 'offset [[:digit:]]+'| cut -d ' ' -f 2
> 
> This command dumps the location of data BG in a byte unit.
> 
> Then, we can calculate the sector number and can supply it to "blkzone
> report -o".
> 
Got it. I also prefer this over hardcoding.
I think we can reuse the get_data_bg function as it also outputs the
same data BG offset.
Like this:

start_data_bg_zone=$(get_data_bg)
start_data_bg_zone=$((data_bg_zone >> 9))

size=$($BLKZONE_PROG report -o $start_data_bg_zone -l 1 $SCRATCH_DEV |\
...
Let me know your thoughts.
>> +size=$($BLKZONE_PROG report -c $data_bg_zone_idx $SCRATCH_DEV | tail -1 |\
>> +	_filter_blkzone_report |\
>> +	grep -Po "cap ([0x\d]+)+" | cut -d ' ' -f 2)
>> +size=$((size << 9))
>> +
>>  reclaim_threshold=75
>>  echo $reclaim_threshold > /sys/fs/btrfs/"$uuid"/bg_reclaim_threshold
>>  fill_percent=$((reclaim_threshold + 2))
>>  rest_percent=$((90 - fill_percent)) # make sure we're not creating a new BG
>> -fill_size=$((zonesize * fill_percent / 100))
>> -rest=$((zonesize * rest_percent / 100))
>> +fill_size=$((size * fill_percent / 100))
>> +rest=$((size * rest_percent / 100))
>>  
>>  # step 1, fill FS over $fillsize
>>  $XFS_IO_PROG -fc "pwrite 0 $fill_size" $SCRATCH_MNT/$seq.test1 >> $seqres.full
>> -- 
>> 2.25.1

-- 
Regards,
Pankaj



[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux