### Description

Today, [force merge is assigned one thread](https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-threadpool.html) only.  

> For [force merge](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-forcemerge.html) operations. Thread pool type is fixed with a size of 1 and an unbounded queue size.

In a large cluster where there are many processors available, there could be a backlog of force merge queued up.  Perhaps we should look into changing the default of force merge thread_pool to a max of `min(1, (# of allocated processors) / 8)`
server/src/main/java/org/elasticsearch/threadpool/ThreadPool.java
return true;
            }
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
        return false;
    }
    public ThreadContext getThreadContext() {
        return threadContext;
    }
    public static boolean assertNotScheduleThread(String reason) {
        assert Thread.currentThread().getName().contains("scheduler") == false
            : "Expected current thread [" + Thread.currentThread() + "] to not be the scheduler thread. Reason: [" + reason + "]";
        return true;
    }
    public static boolean assertCurrentMethodIsNotCalledRecursively() {
        final StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
        assert stackTraceElements.length >= 3 : stackTraceElements.length;
        assert stackTraceElements[0].getMethodName().equals("getStackTrace") : stackTraceElements[0];
        assert stackTraceElements[1].getMethodName().equals("assertCurrentMethodIsNotCalledRecursively") : stackTraceElements[1];
        final StackTraceElement testingMethod = stackTraceElements[2];
        for (int i = 3; i < stackTraceElements.length; i++) {
            assert stackTraceElements[i].getClassName().equals(testingMethod.getClassName()) == false
                || stackTraceElements[i].getMethodName().equals(testingMethod.getMethodName()) == false
                : testingMethod.getClassName() + "#" + testingMethod.getMethodName() + " is called recursively";
        }
        return true;
    }
}