segunda-feira, 22 de dezembro de 2008

Batch Commands

Comandos Batch.

Aqui fica alguma informação extra que pode ser util.

@ - Previne que uma linha seja mostrada no ecrã quando escrito no inicio da linha.
ECHO [offon] - Activa ou desactiva o echo de ecrã.
ECHO "menssagem" - Mostra a "mensagem" no ecrã.
if [not] Errorlevel num cmd - Executa o cmd se o novel de erro for superior ao "num" o not inverte o sentido.
if [not] Exists file cmd - Executa o cmd se o ficheiro existir. Not inverte o sentido.
if [not] txt1 == txt2 - Executa o cmd se o ficheiro txt1 for igual ao txt2 Not inverte o sentido.
goto label - Salta para a label
:label - Identifica a label.
for %%var in (set) do [cmd] %% var - Executa um loop pelo conteudo de set correndo o cmd por cada intem do set.
shift - Faz um shift aos parametros uma casa ficando os parametros %2 em %1 e %3 em %2.
call batch args - Chama um ficheiro batch e passa argumentos voltando ao codigo quando o ficheiro batch acaba de executar.
setlocal - define variaveis locais ao programa que está a correr.
endlocal - Faz com que as variaveis locais sejam conhecidas pelo sistema. Ficam activas no sistema quando o batch encerra a sua execução.
pushd path - Grava a pasta local num stack e altera a path
popd - Muda para a ultima pasta colocada na pilha pelo pushd e remove-a da pilha.
pause - suspende o programa até uma tecla ser pressionada.
title - Define o titulo da janela de comandos.

sexta-feira, 12 de dezembro de 2008

TCP in Windows Vista & Windows 2008 Server

Bem para que ninguem fique a tentar fazer o que está no artigo Tunning Rede Windows XP, informo que o TCP foi redesenhado para estes sistemas e que este já inclui um conceito de Window-Auto Tunning.
Este conceito tem por base o anucio por parte dos parceiros de comunicação de um tamanho de janela inicialmente pequeno e que vai sendo ajustado "on the fly" dependendo da latencia e da velocidade do link. Esta nova implementação é muito mais eficiente por defeito do que as anteriores.

Os factores que são utilizados para o ajuste do tamanho de Janela TCP são:
Velocidade da Linha.
Latencia
"Application Delay" - > tempo que a aplicação demora a ir buscar informação á janela TCP.

Por defeito o windows também não deixa ter valores superiores a 16Mb.

Já agora para estimular o interesse podem ver como está o vosso TCP com o seguinte comando:

netsh int tcp show global

Mais tarde falarei sobre isto.

Maximum HTTP Connections...

Para acabar com as vezes em que o IE apenas nos deixa ter alguns downloads em simultâneo e quando queremos abrir mais uma página ou fazer um novo download este fica a moer até alguma ligação anterior ter sido encerrada.

O IE por defeito está limitado a um determinado numero de ligações em simultâneo se nós alterarmos essas limitações podemos ter um controlo maior sobre o nosso ie impedindo que fiquemos á espera...

Para isso temos de adicionar as seguintes chaves no nosso registo de forma a indicar outros valores que não os de defeito.

HKEY_USERS.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings"MaxConnectionsPerServer"=dword:00000010"MaxConnectionsPer1_0Server"=dword:00000010
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"MaxConnectionsPerServer"=dword:00000010"MaxConnectionsPer1_0Server"=dword:00000010

Aqui damos um valor de 10.
Atenção que não convêm aumentar muito alem das 10. Pois também pode aumentar o numero de sites http em que temos problemas. Se tivermos muitos problemas nos que visitamos convêm descer o numero.
Isto tem a ver com a sobrecarga que podemos dar a um servidor ao abrir demasiadas ligações simultâneas, se ele tiver algum tipo de restrição então esta solução não se torna mais rápida...

Para a próxima a ver se coloco alguma coisa do género para o firefox...

Tunning de Rede Windows XP

Neste artigo vou descrever como fazer um tweak ao windows XP registry para tentarmos melhorar a performance deste a nivel da rede.

O objectivo é que comprendam um pouco mais do modo como funciona o windows xp em rede e que não comprem ou instalem software adicional para melhorar o desempenho de rede da máquina sem necessidade.
O windows XP contem vários parametros de registo que devidamente configurados podem afectar a performance radicalmente.

Temos o TCP Window por exemplo, que é uma especie de buffer que armazena os pacotes que recebemos da rede antes de as enviar para a aplicção (mdelo OSI) que está á espera delas para processar a informação. Estas ficam aqui armazenadas até uma flag de push ser defenida nos pacotes que chegam ou quando a aplicação decidir ir buscar ao buffer os dados necessários.

Durante o "handshake de TCP/IP" da ligação TCP/IP, ambos os lados informam o parceiro de qual é o seu tamanho de Janela ou "Window Size" Esta informação fica registada no TCP Header (como já vimos anteriormente noutro post) e pode ter um valor de 0 a 65535 e esse é o valor máximo em bytes que o buffer ou Janela pode ter.

Por defeito o windows XP utiliza um sistema de Window Scaling que muda de acordo com a forma como ele está a trabalhar. Isto é se ele está a receber uma ligação ele comporta-se como um servidor e ele utiliza este sistema, quando ele está a iniciar uma ligação ele não utiliza este Window Scaling.

Se um parceiro fica sem espaço durante a troca de pacotes este envia um pacote com uma sinalização de Window=0 O parceiro TCP para de enviar pacotes até um novo pacote seja enviado com a sinalização de Window diferente de 0. Aqui a troca de dados é reiniciada até haver outro pacote de sinalização com o Window=0.

Com o aumento de velocidade de ligações os 65535 bytes tornam-se pequenos, é aqui que o Window Scaling é utilizado, se ambos os lados da comunicação tem a opção de window scaling no TCP Header então o window Scaling é suportado, o Window scale define o factor multiplicativo para usar e determinal o tamanho de janela. Um window Scale de 1 significa que o Window Size vai ser multiplicado por 2

Com esta lógia temos então
0 -> multiplica por 1
1 -> multiplica por 2
2 -> multiplica por 4
3 -> multiplica por 8
4-> multiplica por 16
5-> multiplica por 32
6-> multiplica por 64
7-> multiplica por 128

Exemplo:
Queremos fazer download de um ficheiro de 75Mbytes, se não tivermos estas opções activas o que acontece é que rápidamente ficamos com o buffer cheio, se as tivermos activas o nosso buffer seria escalado por 4 e que nos daria um buffer de 262,140 bytes.

Para activar o Windows Scaling temos de editar o registo:
na chave hkey_Local_Machine\SYSTEM\CurrentControlSet\Services\TCPIP\
Key: TcpipParameters
Adicionar uma chave tipo
Value Type: REG_DWORD
Nome da chave:tcp1323opts
Valor: 1

Com esta alteração quanto maior for o ficheiro que temos a transferir maior é o nosso window size ou buffer.

Outas alterações que podem ajudar são:

HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\ParametersSackOpts="1"
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\ParametersTcpMaxDupAcks="2"
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\InterfacesMTU="1500"

No windows vista o tamanho por defeito do Window size é de 131072.