ZFS indirection tables prefetch
Review Request #259 - Created Oct. 12, 2015 and updated
6322 ZFS indirection tables prefetch
Tested on FreeBSD head system.
|it would be helpful to specify that this is the blkid of the level-0 block whose level-1 indirect we will ...||Matthew Ahrens|
I don't see that DNODE_IS_CACHEABLE has ever existed in illumos.
can you clarify if this is "bytes of the file" vs "bytes of indirects"? i.e. will we use an additional 64MB memory per stream, vs approximately 64MB / block size * sizeof(blkptr_t)
cstyle says that if one side of the if/else has braces, both should.
I think I understand why you are rounding up the start -- if the start is misaligned (not at the beginning of the indirect block) we would have alread prefetched this indirect last time.
Why do you round up the end? It seems like you would want to end on the indirect that contains the ending level-0 blkid (zs_ibf_blkid).
it would be helpful to specify that this is the blkid of the level-0 block whose level-1 indirect we will prefetch (as opposed to the blkid of the next level-1 indirect to prefetch)
Version of the patch, slightly updated after Matthew's comments.
Revision 2 (+48 -21)
FYI, you will need to explain what testing you did when filing the RTI. At a minimum, run the test suite on illumos. (or open a pull request against https://github.com/openzfs/openzfs and we will do the regression tests and RTI for you). Also if you can include some performance results (from FreeBSD would be fine), that would be helpful too.