diff --git a/utils/scoutfs-utils.spec.in b/utils/scoutfs-utils.spec.in index fb24b812..44261a0d 100644 --- a/utils/scoutfs-utils.spec.in +++ b/utils/scoutfs-utils.spec.in @@ -4,6 +4,12 @@ %{!?_release: %global _release 0.%{pkg_date}git%{pkg_git_hash}} +%if 0%{?rhel} && 0%{?rhel} < 10 +%global tuned_profiles_dir %{_prefix}/lib/tuned +%else +%global tuned_profiles_dir %{_prefix}/lib/tuned/profiles +%endif + Name: scoutfs-utils Summary: scoutfs user space utilities Version: %{pkg_version} @@ -57,6 +63,8 @@ install -m 644 -D src/format.h $RPM_BUILD_ROOT%{_includedir}/scoutfs/format.h install -m 755 -D fenced/scoutfs-fenced $RPM_BUILD_ROOT%{_libexecdir}/scoutfs-fenced/scoutfs-fenced install -m 644 -D fenced/scoutfs-fenced.service $RPM_BUILD_ROOT%{_unitdir}/scoutfs-fenced.service install -m 644 -D fenced/scoutfs-fenced.conf.example $RPM_BUILD_ROOT%{_sysconfdir}/scoutfs/scoutfs-fenced.conf.example +install -m 644 -D tuned/tuned.conf $RPM_BUILD_ROOT%{tuned_profiles_dir}/scoutfs/tuned.conf +install -m 644 -D tuned/40-scoutfs.conf $RPM_BUILD_ROOT%{_prefix}/lib/tuned/recommend.d/40-scoutfs.conf %files %defattr(644,root,root,755) @@ -66,6 +74,8 @@ install -m 644 -D fenced/scoutfs-fenced.conf.example $RPM_BUILD_ROOT%{_sysconfdi %defattr(755,root,root,755) %{_sbindir}/scoutfs %{_libexecdir}/scoutfs-fenced +%{tuned_profiles_dir}/scoutfs/tuned.conf +%{_prefix}/lib/tuned/recommend.d/40-scoutfs.conf %files -n scoutfs-devel %defattr(644,root,root,755) diff --git a/utils/tuned/40-scoutfs.conf b/utils/tuned/40-scoutfs.conf new file mode 100644 index 00000000..2b589d4f --- /dev/null +++ b/utils/tuned/40-scoutfs.conf @@ -0,0 +1,9 @@ +# +# scoutfs tuned recommendation +# + +# If the system has support for mounting scoutfs filesystems, which is +# valid for client mounts and quorum mounts. We then always recommend +# the scoutfs profile. +[scoutfs] +/proc/filesystems=scoutfs diff --git a/utils/tuned/tuned.conf b/utils/tuned/tuned.conf new file mode 100644 index 00000000..3bb44e8a --- /dev/null +++ b/utils/tuned/tuned.conf @@ -0,0 +1,40 @@ +# +# ScoutFS specific tuned profile +# + +# The parameters below are a mix of settings present in the throughput-performance +# profile as well as the latency-performance profile. Generally speaking, we +# want to encourage the system to avoid swap and accumulating large amounts of +# dirty data, as this can cause reclaim to lead to congestion. + +# Enable this profile with `$ sudo tuned-adm profile scoutfs` + +# linux default values are marked with [] for reference. + +[main] +summary=Optimize for production scoutfs deployment +description=Configures the system for production scoutfs filesystem server deployment. + +# network-throughput sets some larger buffers useful for 40gbe deployments +# network-throughput also inherits throughput-performance +include=network-throughput + +[vm] +# throughput-performance sets dirty_bytes to 40% (much larger than linux default), but +# this allows the accumulation of large backlogs of writeback. We prefer to writeback +# often and early to avoid congestion [20%] +dirty_bytes = 10% +# start writing back at this amount [10%] +dirty_background_bytes = 5% + +[sysctl] +# the kernel default is 60. Lower it to instruct the kernel that swapping is +# expensive and we want to avoid it. We assume scoutfs deployments have ample +# available RAM. [60] +vm.swappiness = 10 + +# increase pdflush runs so it can more aggressively write out dirty data [500] +vm.dirty_writeback_centisecs = 300 + +# decrease time dirty data will linger before being written back [3000] +vm.dirty_expire_centisecs = 2000