All of lore.kernel.org
 help / color / mirror / Atom feed
* Writing/reading OD, MD, ID of a disk
@ 2020-10-06 12:39 siha lawrence
  2020-11-01  9:06 ` Sitsofe Wheeler
  0 siblings, 1 reply; 3+ messages in thread
From: siha lawrence @ 2020-10-06 12:39 UTC (permalink / raw)
  To: fio

Hi,

What parameters could we use to write/read OD, MD, ID of a disk or
specific LBAs?

Thanks,
Siha


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Writing/reading OD, MD, ID of a disk
  2020-10-06 12:39 Writing/reading OD, MD, ID of a disk siha lawrence
@ 2020-11-01  9:06 ` Sitsofe Wheeler
  2020-11-02  0:27   ` Damien Le Moal
  0 siblings, 1 reply; 3+ messages in thread
From: Sitsofe Wheeler @ 2020-11-01  9:06 UTC (permalink / raw)
  To: siha lawrence; +Cc: Dmitry Fomichev, fio

Hi,

On Tue, 6 Oct 2020 at 13:40, siha lawrence <sihaj33@gmail.com> wrote:
>
> Hi,
>
> What parameters could we use to write/read OD, MD, ID of a disk or
> specific LBAs?
>
> Thanks,
> Siha

It seems like OD (Outer Disk), MD (Middle Disk) and ID (Inner Disk)
are SMR drive terms. I don't know how you explicitly target those...
maybe someone more familiar with SMR would know? (I've CC'd Dmitry in
case they know).

If you want to write a specific LBA you will have to get as close to
the disk as possible. If we're talking Linux you can access the disk's
raw block device (filename=/dev/<dev>), use direct=1, set blocksize to
the underlying block size and then you could play back a hand crafted
iolog (https://fio.readthedocs.io/en/latest/fio_doc.html#cmdoption-arg-read-iolog
/ https://fio.readthedocs.io/en/latest/fio_doc.html#trace-file-format-v2
) where the offset would correspond to the LBA.

--
Sitsofe | http://sucs.org/~sits/


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Writing/reading OD, MD, ID of a disk
  2020-11-01  9:06 ` Sitsofe Wheeler
@ 2020-11-02  0:27   ` Damien Le Moal
  0 siblings, 0 replies; 3+ messages in thread
From: Damien Le Moal @ 2020-11-02  0:27 UTC (permalink / raw)
  To: Sitsofe Wheeler, siha lawrence; +Cc: Dmitry Fomichev, fio

On 2020/11/01 18:06, Sitsofe Wheeler wrote:
> Hi,
> 
> On Tue, 6 Oct 2020 at 13:40, siha lawrence <sihaj33@gmail.com> wrote:
>>
>> Hi,
>>
>> What parameters could we use to write/read OD, MD, ID of a disk or
>> specific LBAs?
>>
>> Thanks,
>> Siha
> 
> It seems like OD (Outer Disk), MD (Middle Disk) and ID (Inner Disk)
> are SMR drive terms. I don't know how you explicitly target those...
> maybe someone more familiar with SMR would know? (I've CC'd Dmitry in
> case they know).

OD/MD/ID is not SMR specific. These terms refer to the physical location on the
disk platters of the sectors being accessed. Any HDD, regardless of the
underlying recording technology (PMR, SMR, energy assist or not) will map
logical blocks to a physical block on a particular track on a platter, with the
track located toward the outer diameters of the platter or mid or inner diameters.

Since the number of sectors on a track is not constant and depends on the linear
length of the track, accesses at outer diameters of a disk gives higher
throughput since the tracks there are longer and so more sectors can be
processed with one revolution (8.33ms for a 7200 rpm drive) compared to accesses
to shorter tracks toward the spindle (axis) of the platter.

> If you want to write a specific LBA you will have to get as close to
> the disk as possible. If we're talking Linux you can access the disk's
> raw block device (filename=/dev/<dev>), use direct=1, set blocksize to
> the underlying block size and then you could play back a hand crafted
> iolog (https://fio.readthedocs.io/en/latest/fio_doc.html#cmdoption-arg-read-iolog
> / https://fio.readthedocs.io/en/latest/fio_doc.html#trace-file-format-v2
> ) where the offset would correspond to the LBA.

Correct. But the block size does not need to be the same size as the disk
physical sector size. It can be any value that is a multiple of the physical
block size. E.g. to measure sequential throughput at OD (lba=0), one can simply
run something like:

fio --name=OD --filename=/dev/sdX --ioengine=libaio --iodepth=16 --rw=read
--direct=1 --bs=512K --iosize=some-large-ish-value --offset=0

And to measure at ID.... Well that's where problems start: the
logical-to-physical mapping is not a standard and varies from drive to drive. So
there is no way to tell what the logical block value is for MD and ID. Old-ish
or low capacity drives tend to have a somewhat linear mapping: 0 is OD, mid
capacity is MD and ID is toward the max LBA of the disk. But a *lot* of drives
have different mapping, e.g mid-capacity LBAs are at ID and max capacity LBAs
are at MD.

This is however very easy to discover. Simply run:

fio --name=throughput --filename=/dev/sdX --ioengine=libaio --iodepth=16
--rw=read --direct=1 --bs=512K

To read the entire drive. Add logging of the throughput over time and plot that.
You will clearly see how the throughput varies depending on the LBA being
accessed and the throughput value is directly dependent on the diameter location
of the LBAs accessed.

Note that even LBA 0 == OD is not a given. Some SMR drives with conventional
zones tend to place these zones at MD but they are mapped starting from LBA 0.

Best regards.

-- 
Damien Le Moal
Western Digital Research


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-11-02  0:27 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-06 12:39 Writing/reading OD, MD, ID of a disk siha lawrence
2020-11-01  9:06 ` Sitsofe Wheeler
2020-11-02  0:27   ` Damien Le Moal

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.