diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7cd88b1 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/oomd-0.2.0.tar.gz diff --git a/oomd.spec b/oomd.spec new file mode 100644 index 0000000..68c48e5 --- /dev/null +++ b/oomd.spec @@ -0,0 +1,67 @@ +Name: oomd +Summary: Userspace Out-Of-Memory (OOM) killer +Version: 0.2.0 +Release: 3%{dist} +License: GPLv2 +URL: https://github.com/facebookincubator/oomd/ +Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz + +BuildRequires: gcc-c++ +BuildRequires: meson >= 0.45 +BuildRequires: pkgconfig(jsoncpp) +BuildRequires: pkgconfig(libsystemd) +BuildRequires: pkgconfig(gtest_main) +BuildRequires: pkgconfig(gmock) + +%systemd_requires + +%description +Out of memory killing has historically happened inside kernel space. On a +memory overcommitted linux system, malloc(2) and friends usually never fail. +However, if an application dereferences the returned pointer and the system has +run out of physical memory, the linux kernel is forced take extreme measures, +up to and including killing processes. This is sometimes a slow and painful +process because the kernel can spend an unbounded amount of time swapping in +and out pages and evicting the page cache. Furthermore, configuring policy is +not very flexible while being somewhat complicated. + +oomd aims to solve this problem in userspace. oomd leverages PSI and cgroupv2 +to monitor a system holistically. oomd then takes corrective action in +userspace before an OOM occurs in kernel space. Corrective action is configured +via a flexible plugin system, in which custom code can be written. By default, +this involves killing offending processes. This enables an unparalleled level +of flexibility where each workload can have custom protection rules. +Furthermore, time spent livedlocked in kernelspace is minimized. + +%prep +%autosetup + +%build +%meson +%meson_build + +%check +%meson_test + +%install +%meson_install + +%files +%license LICENSE +%doc README.md CONTRIBUTING.md CODE_OF_CONDUCT.md docs/ +%{_bindir}/oomd +%{_unitdir}/oomd.service +%config(noreplace) %{_sysconfdir}/oomd/ + +%post +%systemd_post oomd.service + +%preun +%systemd_preun oomd.service + +%postun +%systemd_postun_with_restart oomd.service + +%changelog +* Tue Sep 10 2019 Filipe Brandenburger - 0.2.0-3 +- Initial release of oomd RPM package diff --git a/sources b/sources new file mode 100644 index 0000000..e1a9d1b --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (oomd-0.2.0.tar.gz) = f6ce5483d96ca54558642ec60ce28b6f5ad63460c3af2cda17fdbdea125bc31236a2468db7125077d2a68ca951a21b1ad853e31869fe957ab261b5ec55e7992c