Quantos clientes por cartão ? Quantos clientes por rádio ? (E outras perguntas similares)
Devido a quantidade de perguntas dessa natureza, vou explicar mais ou menos como as coisas funcionam :
Existem dois tipos fundamentais de programas (processos) (ou tarefas que um computador pode funcionar).
Existe o tipo Processor-Bound e o tipo IO-Bound.
Processor-Bound:
As tarefas do tipo processor-bound são aquelas em que a maior parte do tempo é gasta processando calculos, desvios etc.
São tarefas do tipo incrementar uma variável, comparar o valor de uma variável com outra, etc.
Tarefas que basicamente usam pouca ou nenhuma entrada e saída.
Nesse tipo de tarefa o processador tem grande influência.
IO-Bound:
As tarefas do tipo io-bound são aquelas em que se faz poucos calculos, sendo a maior parte do tempo gasta esperando por dispositivos de entrada e saída. Por exemplo, trasferir um caracter do teclado para a memória. Verificar o resultado de uma operação de DMA. Responder à um pedido de interrupção de algum periférico.
Nesse tipo de tarefa o processador tem pouca influência. Sendo a maior parte da influencia a velocidade do periférico em questão. A velocidade do barramento onde o periférico está. Etc.
Dificilmente um processo IO-Bound irá saturar o processador.
Pois bem, com base nisso, respondo :
O trabalho de um roteador é IO-Bound ou Processor-Bound ?
Na maior parte, IO-Bound, por que ?
Por que o processador passa a maior parte do tempo em idle, esperando o término de uma ou outra operação de IO.
Vamos por alto. A maior parte dos radinhos usados em wireless usa algum processador derivado do MIPS.
Se um processador MIPS de 32Bits roda a 300mhz, isso (com ressalvas (*)) significa que ele pode executar 300 milhões de operações de 32bits por segundo.
Isso significa 4x300 = 1.200 milhões de operações em um byte por segundo (com ressalvas).
Uma rede Ethernet 100Mbit/Sec trafega 100/8 megabytes por segundo, mais ou menos 12,5 milhões de bytes por segundo.
Ou seja.
O processador é capaz de suprir 100 placas de rede ao mesmo tempo.
Quais as operações que um roteador faz ?
Comparar os bytes de IP : são quatro bytes (32bit, que coincidentemente cabe numa unica instrução de comparação do mips). Vamos supor que cada byte dependa de 4 instruções para ser decidir se um determinado IP está em uma determinade sub-rede, então o roteador a 300mhz poderia executar 75 milhões de comparações de IP em subrede por segundo. Levando em conta que um provedor wireless normal não colocaria 75 milhões de usuários na mesma torre...
Conforme a complexidade das regras de firewall, tabelas de roteamento, etc aumenta, é possível chegar ao gargalo desse radinho de 300mhz. Mas perceba que isso só vai acontecer se mais e mais tarefas processor-bound forem adicionadas ao sistema.
Antes de se chegar ao limite de processamento de um radinho fubeka, o que provávelmente vai acontecer antes é que o barramento miniPCI chegará ao seu topo de transferencia.
Qual a velocidade máxima de um barramento miniPCI ?
O barramento miniPCI roda a 33mhz com 32bits de dados (Uma placa PCI normal é mais rápida com 66mhz por 64bits...)
33mhz x 4 (33 = 4x 8bit) = 132 milhões de bytes por segundo. (Um pci-x faria 66mhz x 64 = 66 x 8 = 528mbyte/sec)
ou mais ou menos o equivalente à uma rede gigabit (uma rede ethernet gigabit pode fazer 1000bits/sec ou 125mbyte/sec).
Num barramento PCI os dispositivos compartilham a banda entre si, em outras palavras, em um sistema com quatro cartões miniPCI só há 132 megabytes/sec disponíveis para os quatro cartões. Não importa se os cartões são de 300mbit/sec (o que dá 150megabyte/sec), o total somado entre os quatro cartões (tanto in quanto out) não poderá ultrapassar os 132mbyte/sec disponíveis no barramento PCI compartilhado (muito provavelmente menos, mas eu teria que entrar em detalhes que não quero).
Ou seja, claramente aqui o gargalo torna-se o barramento, não o processador.(TEXTO ORIGINAL - UNDER-LINUX)




