e905d3f
%bcond_without tests
e905d3f
102f27a
Name:		oomd
102f27a
Summary:	Userspace Out-Of-Memory (OOM) killer
52984c3
Version:	0.5.0
737e7f9
Release:	11%{dist}
737e7f9
License:	GPL-2.0-only
102f27a
URL:		https://github.com/facebookincubator/oomd/
102f27a
Source0:	%{url}/archive/v%{version}/%{name}-%{version}.tar.gz
52984c3
# Check return value for mkstemp()
52984c3
Patch0:         %{url}/commit/076af42b270388f38055fdf60dccbb3001de723a.patch
52984c3
# Fix ODR violation in tests
52984c3
Patch1:         %{url}/commit/3989e169fc0da9c29da8dd692427d4f4c1ace413.patch
15670b7
# Resolved a compiler error due to lacking include
15670b7
Patch2:         %{url}/commit/83a6742f08349fbc93f459228dcc3d1f56eac411.patch
6437d3d
# Disable a test that seems to fail on kernel 6.6.9-100.fc38
6437d3d
Patch3:         oomd-disable-datalifecycle-children-test.patch
102f27a
60fa9f4
ExcludeArch:	i686 armv7hl
60fa9f4
102f27a
BuildRequires:	gcc-c++
102f27a
BuildRequires:	meson >= 0.45
102f27a
BuildRequires:	pkgconfig(jsoncpp)
102f27a
BuildRequires:	pkgconfig(libsystemd)
e905d3f
%if %{with tests}
e905d3f
BuildRequires:	gmock-devel
e905d3f
BuildRequires:	gtest-devel
e905d3f
%endif
babec27
BuildRequires:	systemd-rpm-macros
babec27
%{?systemd_requires}
102f27a
102f27a
%description
102f27a
Out of memory killing has historically happened inside kernel space. On a
102f27a
memory overcommitted linux system, malloc(2) and friends usually never fail.
102f27a
However, if an application dereferences the returned pointer and the system has
102f27a
run out of physical memory, the linux kernel is forced take extreme measures,
102f27a
up to and including killing processes. This is sometimes a slow and painful
102f27a
process because the kernel can spend an unbounded amount of time swapping in
102f27a
and out pages and evicting the page cache. Furthermore, configuring policy is
102f27a
not very flexible while being somewhat complicated.
102f27a
102f27a
oomd aims to solve this problem in userspace. oomd leverages PSI and cgroupv2
102f27a
to monitor a system holistically. oomd then takes corrective action in
102f27a
userspace before an OOM occurs in kernel space. Corrective action is configured
102f27a
via a flexible plugin system, in which custom code can be written. By default,
102f27a
this involves killing offending processes. This enables an unparalleled level
102f27a
of flexibility where each workload can have custom protection rules.
102f27a
Furthermore, time spent livedlocked in kernelspace is minimized.
102f27a
102f27a
%prep
3844a40
%autosetup -p1
102f27a
102f27a
%build
102f27a
%meson
102f27a
%meson_build
102f27a
e905d3f
%if %{with tests}
102f27a
%check
737e7f9
%meson_test -v
e905d3f
%endif
102f27a
102f27a
%install
102f27a
%meson_install
102f27a
102f27a
%files
102f27a
%license LICENSE
102f27a
%doc README.md CONTRIBUTING.md CODE_OF_CONDUCT.md docs/
102f27a
%{_bindir}/oomd
102f27a
%{_unitdir}/oomd.service
611dfcb
%{_mandir}/man1/oomd.*
102f27a
%config(noreplace) %{_sysconfdir}/oomd/
102f27a
102f27a
%post
102f27a
%systemd_post oomd.service
102f27a
102f27a
%preun
102f27a
%systemd_preun oomd.service
102f27a
102f27a
%postun
102f27a
%systemd_postun_with_restart oomd.service
102f27a
102f27a
%changelog
737e7f9
* Tue Jan 30 2024 Michel Lind <salimma@fedoraproject.org> - 0.5.0-11
737e7f9
- Enable verbose test output
737e7f9
- Use SPDX license identifier
6437d3d
- Disable DataLifeCycle children comparison while we investigate failure
6437d3d
  with newer kernels
737e7f9
b5e0db9
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.5.0-10
b5e0db9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
b5e0db9
845a155
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.5.0-9
845a155
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
845a155
b2765b1
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.5.0-8
b2765b1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
b2765b1
a45bc75
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.5.0-7
a45bc75
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
a45bc75
ef58dce
* Tue Aug 09 2022 Davide Cavalca <dcavalca@fedoraproject.org> - 0.5.0-6
15670b7
- Backport upstream commit to add a missing include
15670b7
  Fixes: RHBZ#2113559
15670b7
323301b
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.5.0-5
323301b
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
323301b
e69388c
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.5.0-4
e69388c
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
e69388c
999fd6a
* Wed Nov 03 2021 Björn Esser <besser82@fedoraproject.org> - 0.5.0-3
999fd6a
- Rebuild (jsoncpp)
999fd6a
f650110
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.5.0-2
f650110
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
f650110
52984c3
* Wed Jun 23 2021 Davide Cavalca <dcavalca@fedoraproject.org> - 0.5.0-1
52984c3
- Update to 0.5.0
52984c3
68e4b1b
* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.4.0-6
68e4b1b
- Rebuilt for updated systemd-rpm-macros
68e4b1b
  See https://pagure.io/fesco/issue/2583.
68e4b1b
e905d3f
* Wed Feb 17 2021 Davide Cavalca <dcavalca@fedoraproject.org> - 0.4.0-5
e905d3f
- Build for EPEL 8
e905d3f
- Make tests conditional
e905d3f
- Replace gcc-11 patch with upstream commits
e905d3f
77ece2b
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.4.0-4
77ece2b
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
77ece2b
3844a40
* Fri Oct 30 2020 Jeff Law <law@redhat.com> - 0.4.0-3
3844a40
- Fix missing #includes for gcc-11
3844a40
889388c
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.4.0-2
889388c
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
889388c
430e65e
* Thu Jun  4 2020 Filipe Brandenburger <filbranden@gmail.com> - 0.4.0-1
430e65e
- Upgrade to v0.4.0
430e65e
56f718f
* Sat May 30 2020 Björn Esser <besser82@fedoraproject.org> - 0.3.2-2
56f718f
- Rebuild (jsoncpp)
56f718f
12d9cb2
* Wed Feb 19 2020 Filipe Brandenburger <filbranden@gmail.com> - 0.3.2-1
12d9cb2
- Update to v0.3.2
12d9cb2
611dfcb
* Tue Feb 18 2020 Filipe Brandenburger <filbranden@gmail.com> - 0.3.1-1
611dfcb
- Update to v0.3.1
611dfcb
78e14d7
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.2.0-6
78e14d7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
78e14d7
dba4dcd
* Thu Nov 14 2019 Björn Esser <besser82@fedoraproject.org> - 0.2.0-5
dba4dcd
- Rebuild (jsoncpp)
dba4dcd
60fa9f4
* Thu Sep 12 2019 Filipe Brandenburger <filbranden@gmail.com> - 0.2.0-4
60fa9f4
- First official build for Fedora
60fa9f4
- Exclude 32-bit architectures, which fail to build.
60fa9f4
102f27a
* Tue Sep 10 2019 Filipe Brandenburger <filbranden@gmail.com> - 0.2.0-3
102f27a
- Initial release of oomd RPM package