Conhecendo melhor os SSD’s

Há alguns dias atrás (20/10/2010)  li um artigo sobre SSD’s :
http://www.guiadohardware.net/tutoriais/entendendo-ssd/

Alguns pontos interessantes:
* Existem dois tipos de memórias Flash:
NOR:
** acessíveis como memória RAM, permitem XiP (Execute in Place)
** mais caras
** tempo de leitura rápido, tempo de escrita muito alto
NAND:
** acessíveis serialmente (como um HD)
** trabalha internamente com páginas de 4KB
** mais baratas, tempo de escrita melhor que a NOR
* Primeiros SSDs eram sofríveis. O SSD usado nos primeiros EeePC por exemplo tinham taxa de gravação de apenas 48KB/s (muito baixo)
* Um SSD de segunda geração pode atingir taxas de 250MB/s e 80MB/s (leitura e escrita sequencial respectivamente).
* Após algum tempo de uso, os SSDs apresentam uma perda de desempenho, semelhante apenas em aparência a uma perda de desempenho causada por fragmentação em um HD tradicional, mas com uma causa totalmente diferente (http://www.guiadohardware.net/tutoriais/entendendo-ssd/ssd-novo-velho.html). Em SSDs mais atuais os fabricantes implementaram alguns mecanismos para minimizar o problema.
* A estimativa de vida útil de um SSD não é tão alta quanto boa parte do pessoal é levado a pensar (a velha lenda de que simplesmente por não ter partes móveis a durabilidade seja maior). Na prática as estimativas de vida útil dos SSDs atuais giram em torno de 5 a 10 anos.
* Nos próximos anos há uma tendência para aumentos de capacidades, mas os preços não devem ter uma queda muito significativa. Devido também ao fator custo, SSDs não são vantajosos para armazenamento de grandes volumes de dados, sendo mais vantajoso combinar o uso de SSD para o sistema operacional e HDs para a massa de dados.
* Por diversas questões técnicas, a tecnologia de memória Flash usada nos SSDs não escalará a longo prazo.
* A principal candidata a sucessora da memória Flash é a PCM (Phase-Change Memory), uma tecnologia que estava em estudo na decada de 60/70. Com a evolução da memória RAM e mídias magnéticas essa tecnologia foi deixada de lado, mas está sendo retomada agora pela ameaça de estagnação da memória Flash.

E coincidentemente ontém a noite li um artigo sobre o impacto das taxas de transferência e IOPs mais altos dos SSDs e pontos que precisam melhorar no kernel Linux para conseguir tratar melhor esse tipo de dispositivo de blocos. Segue o link: http://lwn.net/Articles/408428/

IOzone, tipos de testes

Certa vez estava fazendo um relatório com benchmarks de um storage, e uma das ferramentas que costumo utilizar é o IOzone. Aproveitei a documentação original e traduzi para pt_BR visando explicar os diversos tipos de testes.

IOzone
IOzone é uma ferramenta de benchmark de filesystem. Este benchmark gera e
mede uma variedade de operações com arquivos. É uma ferramenta útil para
uma análise abrangente de performance de diversas condições de uso de
dispositivos de armazenamento de dados.
A seguir temos uma descrição de cada tipo de operação sobre a qual são
executados os testes com o IOzone.

Write
Este teste mede a performance de escrita de um novo arquivo. Quando um
novo arquivo é escrito, não apenas os dados necessitam ser gravados, mas
também informações adicionais sobre onde e como os dados estão
armazenados na mídia. Estas informações adicionais (overhead) são chamadas
de “metadados”, e consistem de informações do diretório, espaço alocado, e
qualquer outra informação necessária ao arquivo que não faz parte dos dados
do arquivo. É normal a performance da escrita inicial ser menor do que a
performance de uma re-escrita, devido ao tratamento dessa informação
adicional (metadados, overhead).

Re-write
Este teste mede a performance de escrita de um arquivo já existente. Nestes
casos o trabalho requerido é menor, pois já existem os metadados do arquivo.
É normal portanto que a performance de re-write seja melhor do que a
performance de escrever um novo arquivo.

Read
Este teste mede a performance de leitura de um arquivo já existente.

Re-read
Este teste mede a performance de leitura de um arquivo que foi lido
recentemente. É normal que esta performance seja melhor que a primeira
leitura, pois o sistema operacional geralmente mantém um cache dos arquivos
e dados lidos recentemente, e este cache pode ser usado para novas
chamadas de leitura (evitando uma re-leitura do disco), aumentando a
performance.

Random Read
Este teste mede a performance de leitura de um arquivo com acessos feitos a
partir de localizações randômicas do arquivo. A performance do sistema sob
este tipo de atividade pode ser influenciada por vários fatores como: tamanho
do cache do sistema operacional, número de discos, latência, entre outras.

Random Write
Este teste mede a performance de escrita de um arquivo com acessos feitos a
localizações randômicas do arquivo. Novamente, a performance do sistema sob
este tipo de atividade pode ser influenciada por vários fatores como: tamanho
do cache do sistema operacional, número de discos, latência, entre outras.

Backwards Read
Este teste mede a performance de leitura de um arquivo de trás para frente.
Pode parecer uma maneira estranha de ler um arquivo, mas existem
aplicativos que fazem isso. Enquanto a maioria dos sistemas operacionais
possuem otimizações para permitir a leitura seqüêncial de um arquivo mais
rapidamente, existem poucos sistemas operacionais que possuam alguma
melhoria para leituras de arquivos de trás para frente.

Record Rewrite
Este teste mede a performance de escrita e re-escrita de um bloco de dados
em particular de um arquivo. Com isso podemos ter comportamentos
interessantes. Se o tamanho do bloco for pequeno o suficiente para caber na
área de cache da CPU então teremos uma performance altíssima. Se o
tamanho for maior que o cache de dados da CPU mas couber no TLB, então
teremos um nível diferente de performance. Se o tamanho do bloco for maior
que o cache de dados da CPU e do TLB mas ainda couber no cache do sistema
operacional então teremos outro nível de performance, e se o tamanho do
bloco for maior que o cache do sistema operacional teremos mais outro nível
diferente de performance.

Strided Read
Este teste mede a performance de leitura de um arquivo com acesso em
passos. Um exemplo possível para explicar melhor este teste: ler com offset
zero 4Kbytes, saltar 200Kbytes, e então ler 4Kbytes, saltar 200Kbytes, e assim
por diante. Uma aplicação típica com esse comportamento é quando temos
estruturas de dados em arquivos e processos de leituras de registros dessas
estruturas. A grande maioria dos sistemas operacionais não detecta este
comportamento nem implementa nenhuma técnica de melhoria de
performance para esse tipo de acesso.

Fwrite
Este teste mede a performance de escrita de um arquivo utilizando a função
fwrite(). Esta é uma rotina de biblioteca que realiza uma operação de escrita
bufferizada, com o buffer no espaço de endereçamento de usuário. Se uma
aplicação está para escrever em transferências de tamanhos pequenos, então
as funcionalidades de buffer e blocked I/O de fwrite() podem melhorar a
performance da aplicação pela redução do número real de system calls
utilizadas e aumentando o tamanho da transferência quando as chamadas ao
sistema operacional são feitas. Como este teste é feito com a escrita de um
arquivo novo, então a carga de escrita dos metadados está inclusa na medição.

Frewrite
Este teste é semelhante ao teste de Fwrite, porém escrevendo em um arquivo
já existente. Com isso não temos a carga adicional de escrita dos metadados,
causando uma melhor performance.

Fread
Este teste mede a performance de leitura de um arquivo usando a função de
biblioteca fread(). Esta é uma rotina de biblioteca que realiza uma operação de
leitura bufferizada e blocked. com o buffer no espaço de endereçamento do
usuário. Se um aplicação está para escrever em transferências de tamanhos
pequenos, então as funcionalidades de buffer e blocked I/O de fread() podem
melhorar a performance da aplicação pela redução do número real de system
calls utilizadas e aumentando o tamanho da transferência quando as chamadas
ao sistema operacional são feitas.

Freread
Este teste é semelhante ao teste de Fread, porém relendo dados do arquivo
que já foram lidos anteriormente. Como esses dados costumam ficar no cache
do sistema operacional, um aumento de performance é obtido.

 

pendrive bootável com DOS (útil para updates de BIOS, firmware)

Vou repassar uma dica que pode ser útil em alguma situação futura, tipicamente em casos de update de flash de BIOS de placa mãe.

Hoje (14/7/2011) eu precisei fazer um update desse tipo em um servidor SuperMicro, e inicialmente tentei uma dica passada pelo suporte da própria SuperMicro:

http://www.softpedia.com/get/System/Boot-Manager-Disk/BootFlashDOS.shtml

Testei com esse programa, usando uma máquina com Windows XP.
Porém, ao testar o boot via pendrive, não funcionou.

Pesquisei no google, e encontrei esse link:
http://www.adrenaline.com.br/forum/area-windows/181133-criando-um-pendrive-bootavel-do-ms.html

Através dele, baixei dois arquivos:
http://www.techpowerup.com/articles/34/images/SP27213.exe
http://www.techpowerup.com/articles/34/images/USBImage.zip

E o procedimento funcionou com sucesso.

dica qmail: outra forma de gerar cópias de mensagens

Estava vendo essa página[1] que tem uma referência dos arquivos de controle do qmail, e validei outra forma de gerar cópias de mensagens de um domínio para uma certa conta.
Com este método inclusive as mensagens enviadas são copiadas, ou seja, auditoria de tudo que entra e sai do domínio é possível.

O método é o taps[2][3].

Exemplos:

  • To tap all email and send a copy to admin@example.com add a line like:
    .*:admin@example.com
  • To tap a whole domain and send a copy to admin@example.com add a line like:
    .*@domain.com:admin@example.com
  • To tap an individual email address and send a copy to archive@example.com add a line like:
    user@domain.com:archive@example.com

Testado com CentOS 5.3 + qmail-toaster (versão atual[4]).

Referências:
[1] http://wiki.qmailtoaster.com/index.php/Control_Files_by_Name
[2] http://wiki.qmailtoaster.com/index.php/Taps
[3] http://www.inter7.com/index.php?page=qmailtap
[4] http://qmailtoaster.com/

[Dicas-RFC] zzrfc (?)

Buenas, essa semana tivemos o caso do DNS:

Senhores,

Atenção, os anúncios abaixo são muito sérios. Se a sua instituição tem
um servidor prestando serviço de DNS recursivo você deve efetuar o
upgrade o mais rápido possível.

http://www.isc.org/index.pl?/sw/bind/forgery-resilience.php

http://www.microsoft.com/technet/security/Bulletin/MS08-037.mspx

As formas de mitigar este problema, agora implementadas no BIND e no
servidor da Microsoft, são discutidas em detalhes em um draft do grupo
dnsext no IETF [1].

Isso me levou a draft-ietf-dnsext-forgery-resilience-05.txt… e o que me chamou a atenção foi a seção de referências, todas para outras RFC’s.

E se existisse uma “Dicas-RFC”, possivelmente nos mesmos moldes da Dicas-L, acho que seria legal hein?

Outra idéia que pintou, sugerir para o Aurélio implementar um “zzrfc” nas funcoeszz 🙂

Bom, fui ao google e …

xnxlinks #20080325

xnxlinks #20080303

Manage your documents with Knowledge Tree

http://www.linux.com/feature/122345

Knowledge Tree is an open source document management system (DMS) that
helps enterprise users categorize, store, index, and share documents.
It offers features like metadata editing, versioning, and WebDAV
access, which make it a better choice than a simple file server for
sharing documents.

http://www.knowledgetree.com/

DNS master x slave

DNS definitions

master/slave
“Master/slave is a private relationship between the servers; neither the
registrar nor the public know which IP is in the slave’s configuration
file, or even that it is a slave. A slave’s “master” may in fact be
slave to another master.”

primary/secondary
These unfortunate terms were used for master/slave in earlier versions
of BIND. However, some people think the primary is the first nameserver
IP listed at the registrar, and any others others are secondary. In
fact, all the nameserver IPs are equal and “authoritative”; the first
one does not have a special status.

http://linuxgazette.net/issue90/tag/1.html

… In my case, my computer is the real master and my friend runs two
secondaries. However, the registrar lists only his servers. Is that all
that’s needed to make his secondary appear to be the master from the
public’s perspective, or do I have to do something else too?

[Dan] First bear in mind that “master” and “slave”, a relationship
between servers, has nothing whatever to do with “primary” and
“secondary”, an arbitrary ordering of servers on a list your registrar
maintains for you. Many sysadmins confuse the two, partly because
similar terms are sometimes used, and much grief results.

lighttpd

« Older entries