Re: [PATCH] zbd: remove reset_zone flag from fio_zone_info

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

 



On Thu, Aug 27, 2020 at 07:18:07PM +0000, Dmitry Fomichev wrote:
> 
> 
> > -----Original Message-----
> > From: Alexey Dobriyan <adobriyan@xxxxxxxxx>
> > Sent: Friday, August 21, 2020 1:07 PM
> > To: Dmitry Fomichev <Dmitry.Fomichev@xxxxxxx>
> > Cc: fio@xxxxxxxxxxxxxxx
> > Subject: Re: [PATCH] zbd: remove reset_zone flag from fio_zone_info
> > 
> > On Wed, Aug 19, 2020 at 07:35:03PM +0000, Dmitry Fomichev wrote:
> > >
> > >
> > > > -----Original Message-----
> > > > From: Alexey Dobriyan <adobriyan@xxxxxxxxx>
> > > > Sent: Wednesday, August 19, 2020 8:56 AM
> > > > To: Dmitry Fomichev <Dmitry.Fomichev@xxxxxxx>
> > > > Cc: fio@xxxxxxxxxxxxxxx
> > > > Subject: Re: [PATCH] zbd: remove reset_zone flag from fio_zone_info
> > > >
> > > > > The reset_zone flag that is defined in fio_zone_info structure is
> > > > > only referenced in zbd_adjust_block() function. Convert this flag
> > > > > to a local variable and save some room in zbd_info array which can
> > > > > be pretty large when running fio against high capacity zoned devices.
> > > >
> > > > This flag should be kept.
> > > >
> > > > Test can crash or be interrupted leaving hw in indeterminate state,
> > > > it must be restarted from clean state. Or test can be precondition and
> > > > zone should not be reset.
> > >
> > > This is beyond the scope of fio. Any preconditioning of zones is done
> > > by external scripts that have no access to this flag. Tools like blkzone,
> > > libzbc or nvme-cli are typically used to precondition zones before
> > > testing and to analyze zone state after test runs.
> > 
> > If it is a matter of policy that fio doesn't do preconditioning,
> > then the patch is OK.
> > 
> > We do preconditioning in fio, it is neat:
> > * don't need external programs
> > * everything inside one job file
> > * not a lot of code to add
> > 
> > But to do this, flag must live in "struct fio_zone_info".
> > 
> > 	[zra]
> > 	zone_reset_all=1
> 
> The way I understand this, this option makes ZBD code to set the reset_zone
> flag for all zones during init. This will force zone reset before the first write
> to a zone. This indeed is a neat idea and this feature looks to be pretty 
> lightweight as you said.
> 
> > 	zone_finish_all=1
> 
> How does this option work? Seems like you have added a new
> finish_zone flag and you finish every zone for which the flag is set
> instead of performing the first write to the zone...

Sorry for delay.

ZRA marks every zone in [->min_zone, ->max_zone) for reset,
forcing Zone Reset before first write.

ZFA sends Finish Zone with "all" flag set synchronously.

Some job orchestration is required but once it is done, jobs run reliably.

> > 	rw=write
> > 
> > 	[pre]
> > 	stonewall
> > 	zone_reset_all=0
> > 	zone_finish_all=0
> > 	job_max_open_zones=...
> > 	rw=write
> > 		...
> > 
> > 	[j]
> > 	stonewall
> > 	zone_reset_all=0
> > 	zone_finish_all=0
> > 	rw=randread
> > 		...
> 
> I guess we can hold off with removing the reset_zone flag if you are planning
> to send the patch for this.

Thanks, I'll try to extract something mainlineable.



[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux