Damien, > My bad, yes, that is the definition in sysfs. So io_min is the stride > size, where: Depends on the RAID type. For RAID0 and 1 there is no inherent penalty wrt. writing less than the stride size. But for RAID 5/6 there clearly is. > stride size x number of data disks == stripe_size. > > Note that chunk_sectors limit is the *stripe* size, not per drive stride. > Beware of the wording here to avoid confusion (this is all already super > confusing !). The choice of "chunk" to describe the LBA boundary queue limit is unfortunate since MD uses chunk_sectors as the term for what you call stride. > Well, at least, that is how I interpret the io_min definition of > minimum_io_size in Documentation/ABI/stable/sysfs-block. But the wording "For > RAID arrays it is often the stripe chunk size." is super confusing. Not > entirely sure if stride or stripe was meant here... The stripe chunk or stripe unit is what you call stride. Stripe width is the full stripe across all drives. > As for read_ahead_kb, it should be bounded by io_opt (upper bound) but > should be initialized to a smaller value aligned to io_min (if io_opt > is unreasonably large). In retrospect I am not really a fan of using io_opt for read_ahead_kb since, to my knowledge, there is no guarantee that the readahead I/O will be naturally aligned. That said, I don't really know of devices where this matters much for reads. With writes, this would be much more of an issue. -- Martin K. Petersen