diff --git a/Gemfile b/Gemfile
index 2a228b326adbb2f59cbe17ff2fecb93848c3021c..8104ddde61bee431f7d430e9da68fe94b0525840 100644
--- a/Gemfile
+++ b/Gemfile
@@ -15,6 +15,9 @@ source 'https://rubygems.org'
 gem 'rails', gem_versions['rails']
 gem 'rails-deprecated_sanitizer', '~> 1.0.3'
 
+# Improves copy-on-write performance for MRI
+gem 'nakayoshi_fork', '~> 0.0.4'
+
 # Responders respond_to and respond_with
 gem 'responders', '~> 2.0'
 
diff --git a/Gemfile.lock b/Gemfile.lock
index e21a1b8545748ccc272ddbddbe3608ed104729aa..84137fbfa6c08e162d0519466be3073ed37e93cf 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -470,6 +470,7 @@ GEM
     mustermann-grape (1.0.0)
       mustermann (~> 1.0.0)
     mysql2 (0.4.10)
+    nakayoshi_fork (0.0.4)
     net-ldap (0.16.0)
     net-ssh (5.0.1)
     netrc (0.11.0)
@@ -1051,6 +1052,7 @@ DEPENDENCIES
   mini_magick
   minitest (~> 5.7.0)
   mysql2 (~> 0.4.10)
+  nakayoshi_fork (~> 0.0.4)
   net-ldap
   net-ssh (~> 5.0)
   nokogiri (~> 1.8.2)
diff --git a/Gemfile.rails4.lock b/Gemfile.rails4.lock
index fea3102b8d6c8199bcee03987f7560ab4911ae42..8ca5f114af82f2f794d6bb159f5f7ba8c0de4e13 100644
--- a/Gemfile.rails4.lock
+++ b/Gemfile.rails4.lock
@@ -467,6 +467,7 @@ GEM
     mustermann-grape (1.0.0)
       mustermann (~> 1.0.0)
     mysql2 (0.4.10)
+    nakayoshi_fork (0.0.4)
     net-ldap (0.16.0)
     net-ssh (5.0.1)
     netrc (0.11.0)
@@ -1042,6 +1043,7 @@ DEPENDENCIES
   mini_magick
   minitest (~> 5.7.0)
   mysql2 (~> 0.4.10)
+  nakayoshi_fork (~> 0.0.4)
   net-ldap
   net-ssh (~> 5.0)
   nokogiri (~> 1.8.2)
diff --git a/changelogs/unreleased/sh-use-nakayoshi-fork.yml b/changelogs/unreleased/sh-use-nakayoshi-fork.yml
new file mode 100644
index 0000000000000000000000000000000000000000..5977d9b0974b921ebd3ff644de83d6f4e2686ec3
--- /dev/null
+++ b/changelogs/unreleased/sh-use-nakayoshi-fork.yml
@@ -0,0 +1,5 @@
+---
+title: Improve memory performance by reducing dirty pages after fork()
+merge_request: 23169
+author:
+type: performance