HomeFreeBSD

Avoid some spa_has_pending_synctask() calls.

Description

Avoid some spa_has_pending_synctask() calls.

Since 8c4fb36a24 (PR #7795) spa_has_pending_synctask() started to
take two more locks per write inside txg_all_lists_empty(). I am
surprised those pool-wide locks are not contended, but still their
operations are visible in CPU profiles under contended vdev lock.

This commit slightly changes vdev_queue_max_async_writes() flow to
not call the function if we are going to return max_active any way
due to high amount of dirty data. It allows to save some CPU time
exactly when the pool is busy.

Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-By: Tom Caputi <caputit1@tcnj.edu>
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Closes #11280

Details

Provenance
mavAuthored on Dec 6 2020, 5:55 PM
GitHub <noreply@github.com>Committed on Dec 6 2020, 5:55 PM
Parents
rG6366ef22404e: Bring consistency to ABD chunk count types.
Branches
Unknown
Tags
Unknown