O iodepth de fio e a profundidade de armazenamento da fila são os mesmos? Então, como é possível controlar a profundidade da fila com um parâmetro iodepth do comando fio? Será que isso vai criar empregos paralelos, mas, novamente, há uma opção para executar trabalhos em paralelo também (isso não será trivial ou conflitante?)
Eu estou lutando para entender como a control está controlando suas cargas de trabalho (especialmente sobre este iodepth). Alguém pode explicar o parâmetro iodepth em detalhes.
Hi,
On 28 July 2018 at 14:26, Jeevan Patnaik wrote:
Hi,
Is Iodepth of fio and queue depth of storage both same? Then, how is
it possible to control queue depth with an iodepth parameter from fio
fio iodepth e a profundidade I / O seu sistema operacional consegue enviar I / O até
armazenamento estão ligados, mas certamente não tem que ser o mesmo e
o relacionamento é altamente dependente do seu funcionamento
sistema / armazenamento / fio ioengine utilizado / fio parâmetros. Basicamente, submete
I / O um caminho particular para o seu sistema operacional. Dependendo de como você
enviar o seu I / O para o seu sistema operacional, ele pode optar por enviá-lo
mais abaixo de uma maneira mais ótima / diferente (por exemplo, por lotes
solicitações em conjunto, interrompendo solicitações que são muito grandes em pequenos
peças, atrasando I / O etc). Além disso, e como indicado no HOWTO , o iodepth afeta apenas os ioengines assíncronos (e observe aquele texto
inclui avisos sobre a necessidade de usar o direct = 1 no Linux).
command? Will that be creating parallel jobs, but then again there is
an option to run jobs in parallel also (will that not be a trivial or
conflicting?)
Vou dar um breve resumo, mas note que não estou tentando cobrir
caching / readahead / plugging / block camadas de dispositivos (por exemplo, RAID / LVM) etc:
Um mecanismo de E / S de fio síncrono envia uma única E / S para o SO, aguarda
ser "reconhecido" como tendo sido recebido e, em seguida, envia outra
I / O etc.
Se um motor de fio I / O é capaz de enviar I / O para o sistema operacional em um verdadeiro
forma assíncrona (ver link acima), em seguida, a chave é que ele não faz
tem que esperar que a E / S seja "confirmada" antes de enviar
novo I / O. Se o iodepth for apenas 1, ele terá que se comportar de uma maneira
semelhante a um mecanismo de E / S síncrona. No entanto, digamos que um emprego
especifica um iodepth de 32. Nesse caso, até 32 E / Ss a serem
pendente antes do fio escolherá esperar antes de enviar mais
E / S (apenas quais são as marcas d'água e quanto é enviado de cada vez
é controlado pelas opções iodepth_batch_ *. Isso pode ser mais
eficiente e alcançar maiores taxas de transferência, mas muitas vezes vem com um custo
de maior latência.
O fio não criará trabalhos paralelos fio apenas por causa do iODepth MAS
usar trabalhos paralelos é outra maneira de aumentar a quantidade de
E / S simultâneas sendo enviadas a qualquer momento (usando diferentes
threads / processos) e usando ambos no mesmo dispositivo
tandem (por isso, se você tiver dois trabalhos de fio enviando E / S assíncronas em um
iodepth de 16 cada seu sistema operacional pode estar realmente recebendo 32 I / Os em
qualquer momento). Pode haver motivos para combinar os dois (por exemplo, você
tem vários dispositivos e eles são tão rápidos que uma CPU não consegue acompanhar
mesmo ao enviar E / S de forma assíncrona).
I am struggling to understand how fio is controlling it's workloads
(especially about this iodepth). Can someone please explain the iodepth
parameter in detail.
Eu observarei que você também fez essa pergunta no stackexchange
( O que exatamente é o iodepth in fio? ). Você pode querer linkar para
link de lá para ajudar
outros que podem ter uma pergunta semelhante ...