diff --git a/.travis.yml b/.travis.yml
index d8c9e385bbc1d1295cbed8805ee6a6da0938bf4b..d770e7261f522f5575200b44318fed2a1e8c80c6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,11 +4,11 @@ before_install:
   - sudo apt-get update -qq
   - sudo apt-get install -qq libgtest-dev libgflags-dev python-virtualenv
 script:
-  - ./tools/run_tests/run_tests.py -l c -t -j 16 -c dbg
-  - ./tools/run_tests/run_tests.py -l c++ -t -j 16 -c dbg
+  - ./tools/run_tests/run_tests.py -l c -t -j 16 -c dbg -s 2.0
+  - ./tools/run_tests/run_tests.py -l c++ -t -j 16 -c dbg -s 2.0
   - make clean
-  - ./tools/run_tests/run_tests.py -l c -t -j 16 -c opt
-  - ./tools/run_tests/run_tests.py -l c++ -t -j 16 -c opt
+  - ./tools/run_tests/run_tests.py -l c -t -j 16 -c opt -s 2.0
+  - ./tools/run_tests/run_tests.py -l c++ -t -j 16 -c opt -s 2.0
   - ./tools/run_tests/run_tests.py -l node -t -j 16 -c opt
 notifications:
   email: false
diff --git a/test/core/util/test_config.c b/test/core/util/test_config.c
index 1c46407311472c9e8908e28b6cbc1a75747fa2b7..1f0f0175b1c3dcf735af6b142be09c69a7580311 100644
--- a/test/core/util/test_config.c
+++ b/test/core/util/test_config.c
@@ -34,6 +34,7 @@
 #include "test/core/util/test_config.h"
 
 #include <grpc/support/port_platform.h>
+#include <grpc/support/log.h>
 #include <stdlib.h>
 #include <signal.h>
 
@@ -52,6 +53,9 @@ void grpc_test_init(int argc, char **argv) {
   /* disable SIGPIPE */
   signal(SIGPIPE, SIG_IGN);
 #endif
+  gpr_log(GPR_DEBUG, "test slowdown: machine=%f build=%f total=%f",
+          GRPC_TEST_SLOWDOWN_MACHINE_FACTOR, GRPC_TEST_SLOWDOWN_BUILD_FACTOR,
+          GRPC_TEST_SLOWDOWN_FACTOR);
   /* seed rng with pid, so we don't end up with the same random numbers as a
      concurrently running test binary */
   srand(seed());
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 22f12b019a620aefe0f02fccaf7b45fb365b03b6..fddd8eb58b7768867716b9e0b042d25ad32cf9c5 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -171,6 +171,7 @@ argp.add_argument('-c', '--config',
 argp.add_argument('-n', '--runs_per_test', default=1, type=int)
 argp.add_argument('-r', '--regex', default='.*', type=str)
 argp.add_argument('-j', '--jobs', default=1000, type=int)
+argp.add_argument('-s', '--slowdown', default=1.0, type=float)
 argp.add_argument('-f', '--forever',
                   default=False,
                   action='store_const',
@@ -200,6 +201,7 @@ make_targets = []
 languages = set(_LANGUAGES[l] for l in args.language)
 build_steps = [jobset.JobSpec(['make',
                                '-j', '%d' % (multiprocessing.cpu_count() + 1),
+                               'DEFINES=GRPC_TEST_SLOWDOWN_MACHINE_FACTOR=%f' % args.slowdown,
                                'CONFIG=%s' % cfg] + list(set(
                                    itertools.chain.from_iterable(
                                        l.make_targets() for l in languages))))