Searched hist:"9 d9fd8b79f0ebe59f791c8225fa01ab59858b7b5" (Results 1 – 4 of 4) sorted by relevance
/freebsd/sys/cam/ctl/ |
H A D | ctl_ser_table.c | diff 9d9fd8b79f0ebe59f791c8225fa01ab59858b7b5 Sat Feb 27 16:14:05 CET 2021 Alexander Motin <mav@FreeBSD.org> Micro-optimize OOA queue processing.
- Move ctl_get_cmd_entry() calls from every OOA traversal to when the requests first inserted, storing seridx in struct ctl_scsiio. - Move some checks out of the loop in ctl_check_ooa(). - Replace checks for errors that can not happen with asserts. - Transpose ctl_serialize_table, so that any OOA traversal accessed only one row (cache line). Compact it from enum to uint8_t. - Optimize static branch predictions in hottest places.
Due to O(n) nature on deep LUN queues this can be the hottest code path in CTL, and additional 20% of IOPS I see in some 4KB I/O tests are good to have in reserve. About 50% of CPU time here according to the profiles is now spent in two memory accesses per traversed request in OOA.
Sponsored by: iXsystems, Inc. MFC after: 2 weeks
|
H A D | ctl_io.h | diff 9d9fd8b79f0ebe59f791c8225fa01ab59858b7b5 Sat Feb 27 16:14:05 CET 2021 Alexander Motin <mav@FreeBSD.org> Micro-optimize OOA queue processing.
- Move ctl_get_cmd_entry() calls from every OOA traversal to when the requests first inserted, storing seridx in struct ctl_scsiio. - Move some checks out of the loop in ctl_check_ooa(). - Replace checks for errors that can not happen with asserts. - Transpose ctl_serialize_table, so that any OOA traversal accessed only one row (cache line). Compact it from enum to uint8_t. - Optimize static branch predictions in hottest places.
Due to O(n) nature on deep LUN queues this can be the hottest code path in CTL, and additional 20% of IOPS I see in some 4KB I/O tests are good to have in reserve. About 50% of CPU time here according to the profiles is now spent in two memory accesses per traversed request in OOA.
Sponsored by: iXsystems, Inc. MFC after: 2 weeks
|
H A D | ctl_private.h | diff 9d9fd8b79f0ebe59f791c8225fa01ab59858b7b5 Sat Feb 27 16:14:05 CET 2021 Alexander Motin <mav@FreeBSD.org> Micro-optimize OOA queue processing.
- Move ctl_get_cmd_entry() calls from every OOA traversal to when the requests first inserted, storing seridx in struct ctl_scsiio. - Move some checks out of the loop in ctl_check_ooa(). - Replace checks for errors that can not happen with asserts. - Transpose ctl_serialize_table, so that any OOA traversal accessed only one row (cache line). Compact it from enum to uint8_t. - Optimize static branch predictions in hottest places.
Due to O(n) nature on deep LUN queues this can be the hottest code path in CTL, and additional 20% of IOPS I see in some 4KB I/O tests are good to have in reserve. About 50% of CPU time here according to the profiles is now spent in two memory accesses per traversed request in OOA.
Sponsored by: iXsystems, Inc. MFC after: 2 weeks
|
H A D | ctl.c | diff 9d9fd8b79f0ebe59f791c8225fa01ab59858b7b5 Sat Feb 27 16:14:05 CET 2021 Alexander Motin <mav@FreeBSD.org> Micro-optimize OOA queue processing.
- Move ctl_get_cmd_entry() calls from every OOA traversal to when the requests first inserted, storing seridx in struct ctl_scsiio. - Move some checks out of the loop in ctl_check_ooa(). - Replace checks for errors that can not happen with asserts. - Transpose ctl_serialize_table, so that any OOA traversal accessed only one row (cache line). Compact it from enum to uint8_t. - Optimize static branch predictions in hottest places.
Due to O(n) nature on deep LUN queues this can be the hottest code path in CTL, and additional 20% of IOPS I see in some 4KB I/O tests are good to have in reserve. About 50% of CPU time here according to the profiles is now spent in two memory accesses per traversed request in OOA.
Sponsored by: iXsystems, Inc. MFC after: 2 weeks
|