mirror of
https://git.proxmox.com/git/mirror_zfs
synced 2025-04-28 16:36:26 +00:00
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
This commit is contained in:
parent
c82eb27b22
commit
8131793d6f
@ -701,6 +701,8 @@ abd_free_linear_page(abd_t *abd)
|
||||
/* When backed by user page unmap it */
|
||||
if (abd_is_from_pages(abd))
|
||||
zfs_kunmap(sg_page(sg));
|
||||
else
|
||||
abd_update_scatter_stats(abd, ABDSTAT_DECR);
|
||||
|
||||
abd->abd_flags &= ~ABD_FLAG_LINEAR;
|
||||
abd->abd_flags &= ~ABD_FLAG_LINEAR_PAGE;
|
||||
|
Loading…
Reference in New Issue
Block a user