Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change fsync(2) optimization to per-file #1159

Closed
wants to merge 1 commit into from

Conversation

behlendorf
Copy link
Contributor

The zfs_fsyncer_key TSD was added as a performance optimization
to reduce contention on the zl_lock from zil_commit(). This
issue manifested itself as very long (100+ms) system call
times for fsync(2) heavy workloads.

However, we'd like to eliminate the usage of TSD in ZoL while
keeping this optimization. There is no native Linux kernel
equivilant of TSD and the SPLs implementation is primitive.
It would simply be best to remove all the TSD consumers.

To achieve this the zfs_fsyncer_key TSD counter has been
reworked to be per-file instead of per-thread. This is not
expected to behave significantly differently than the original
implementation for real workloads.

This just leaves one small ZFS TSD consumer. If it can be
cleanly removed from the code we'll be able to shed the SPL
TSD implementation entirely.

Signed-off-by: Brian Behlendorf [email protected]
Issue openzfs/spl#174

The zfs_fsyncer_key TSD was added as a performance optimization
to reduce contention on the zl_lock from zil_commit().  This
issue manifested itself as very long (100+ms) system call
times for fsync(2) heavy workloads.

However, we'd like to eliminate the usage of TSD in ZoL while
keeping this optimization.  There is no native Linux kernel
equivilant of TSD and the SPLs implementation is primitive.
It would simply be best to remove all the TSD consumers.

To achieve this the zfs_fsyncer_key TSD counter has been
reworked to be per-file instead of per-thread.  This is not
expected to behave significantly differently than the original
implementation for real workloads.

This just leaves one small ZFS TSD consumer.  If it can be
cleanly removed from the code we'll be able to shed the SPL
TSD implementation entirely.

Signed-off-by: Brian Behlendorf <[email protected]>
Issue openzfs/spl#174
@behlendorf
Copy link
Contributor Author

Closing, this won't be merged. The core issue in the TSD implementation was resolved instead. Although I'd still love to kill off all the tsd consumers, but that can wait for another day.

@behlendorf behlendorf closed this Jan 31, 2013
@behlendorf behlendorf deleted the issue-174 branch February 16, 2017 00:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant