A documentação do kernel diz melhor:
Sometimes it happens that a request enters the io scheduler that is contiguous with a request that is already on the queue. Either it fits in the back of that request, or it fits at the front. That is called either a back merge candidate or a front merge candidate. Due to the way files are typically laid out, back merges are much more common than front merges. For some work loads, you may even know that it is a waste of time to spend any time attempting to front merge requests. Setting front_merges to 0 disables this functionality. Front merges may still occur due to the cached last_merge hint, but since that comes at basically 0 cost we leave that on. We simply disable the rbtree front sector lookup when the io scheduler merge function is called.
A razão pela qual as mesclagens iniciais são incomuns é que os gravadores normalmente não gravam blocos no disco em ordem reversa.
Considere um processo que faça uma simples gravação seqüencial de um novo arquivo contendo dois blocos. Primeiro ele grava o bloco 0 e, em seguida, grava o bloco 1. Quando o bloco 1 atinge a fila, ele está na parte de trás do bloco 0, de modo que o kernel faz uma mesclagem retroativa e envia os dois blocos ao disco físico ao mesmo tempo. Este é o caso típico.
Para obter uma mesclagem frontal, o processo primeiro teria que escrever o bloco 1, depois procurar para trás e escrever o bloco 0. Este não é o caso típico, embora algumas cargas de trabalho aconteçam (por exemplo, bancos de dados).
Eu não esperaria que a mudança no desempenho fosse tão significativa aqui, mesmo com alta E / S. Você pode testá-lo nos dois sentidos em sua carga de trabalho real. Se você não está fazendo algo intensivo em disco, isso não é realmente importante.