I know you should use No-op for Solid Sate Drives or SSD s for sure.
Não necessariamente. Não sei por que as pessoas continuam tratando os SSDs como algum tipo de caso especial em que você não precisa dos benefícios de outros agendadores. Ter discos rotativos significa apenas que é mais importante ter solicitações mescladas. Mesclar solicitações é apenas uma coisa que o planejador faz.
CFQ, Prazo, etc, todos fazem mais do que isso. Por exemplo, CFQ permite que você dê prioridade a determinados processos em relação a outros (via ionice
), enquanto Prazo fornece garantias de latência. Qualquer um desses ainda pode ser relevante para SSDs.
Livrar-se de discos rotativos significa apenas que a decisão do seu agendador provavelmente será mais sobre como você deseja dividir a largura de banda de e para o disco, em vez de apenas mesclar solicitações.
EDITAR: Também indicarei que em minhas fusões de sistema pode ser desativado (independentemente do agendador) usando o /sys/block/sdXX/queue/nomerges
sintonizável. O prazo final também fornece um ajuste para desabilitar as mesclagens frontais.
What I want to know is the best choice for normal (rotating) HDD containing ext4 and NTFS File systems. (MBR style).
A escolha do agendador provavelmente não é super dependente do sistema de arquivos que você está usando. Dentries e arquivos usados freqüentemente acabam no cache do sistema de arquivos de qualquer maneira. De qualquer forma, nenhum dos agendadores parece ter algum recurso que beneficie um sistema de arquivos (XFS, ext3, ext4 + extents, reiserfs, etc) sobre outro.
O NTFS tende a ficar muito fragmentado, então um read_ahead_kb
menor provavelmente é benéfico (você precisa brincar com ele para ver o que funciona para você). Basicamente, se for um volume muito fragmentado, puxar os dados vizinhos provavelmente vai sufocar a largura de banda que poderia ter sido solicitada legitimamente.
E o GPT / MBR não afeta em nada essa decisão.