Update ABD stats for linear page Linux
commit187f93137265feb2ea84f109168dffce2d91e7ef
authorBrian Atkinson <batkinson@lanl.gov>
Thu, 7 Nov 2024 19:11:05 +0000 (7 14:11 -0500)
committerGitHub <noreply@github.com>
Thu, 7 Nov 2024 19:11:05 +0000 (7 11:11 -0800)
tree663d6927df2e51004a3f3578e2552c78ed1751b4
parent5945676bcc5d8b45554c93ea08a0d1f654c7075e
Update ABD stats for linear page Linux

a10e552 updated abd_free_linear_page() to no longer call
abd_update_scatter_stat(). This meant that linear pages that were not
attached to Direct I/O requests were not doing waste accounting for the
ARC. This led to performance issues due to incorrect ARC accounting that
resulted in 100% of CPU time being spent in arc_evict() during prolonged
I/O workloads with the ARC.

The call to abd_update_scatter_stats() is now conditionally called in
abd_free_linear_page() when the ABD is not from a Direct I/O request.

Reviewed-by: Mark Maybee <mmaybee@delphix.com>
Reviewed-by: Tony Nguyen <tony.nguyen@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Signed-off-by: Brian Atkinson <batkinson@lanl.gov>
Closes #16729
module/os/linux/zfs/abd_os.c