Você está na página 1de 18

Gerenciamento de Memria

ERENCIAMENTODEMEMRIA
Para ajudar a entender todas as implicaes no gerenciamento de memria em ambientes
virtualizados interessante ver como mquinas virtuais baseadas em Windows gerenciam
a memria. Quando analisamos, por exemplo, o Windows 7 / Windows Server 2008 R2
podemos verificar que a memria dividida em 4 partes:

Em Uso
Pginas que esto em uso no momento

Modificado
Pginas de memria que ainda no foram utilizadas durante algum tempo, mas precisam
ser gravadas no disco antes que possam ser reutilizados.

Standby
Pginas que no esto sendo usadas e foram escritas para o disco. Elas podem ser
devolvidas a um processo se este precisar, mas tambm esto disponveis para uso por
outro processo.

Free
Pginas de memria que no esto em uso, mas ainda no foram zeradas

DYNAMICMEMORY
surgiu no Service Pack 1 do Windows Server 2008 R2 e exige que o servidor de
virtualizao esteja com o SP1 instalado e que as maquinas virtuais estejam com o
Integration Components na verso 7601. O Dynamic Memory permite que a memria do
Host possa ser vendida para uma maquina virtual, porm ser entregue apenas no limite
fsico. A memria da VM gerenciada de forma dinmica, baseado na demanda:

Monitorao de Committed Bytes dentro da VM

Utiliza tcnica de hot add para adicionar memria

Utiliza tcnica de memory ballooning para remover a memria


Alm disso, possui um Buffer configurvel para as necessidades de memria de cache
para as mquinas virtuais, alm de que cada uma delas possa ter priorizao de memria.
Os pr-requisitos para utilizar o Dynamic Memory so:

Para os Hosts:

Windows Server 2008 R2 SP1

Microsoft Hyper-V Server 2008 R2 SP1

Para os Guests:
Windows Server 2003, 2008 & 2008 R2

Edies Enterprise e Datacenter somente

32-bit & 64-bit


Dynamic Memory muito parecido com o processo de compra de passagens areas.
Quando compramos uma passagem para um determinado voo a companhia pode vender,
por exemplo, 200 passagens. Entretanto a companhia sabe que para este voo ser
utilizada uma aeronave que possui apenas 180 lugares, mas vender assim mesmo uma
quantidade maior do que realmente possui fisicamente (ns conhecemos este processo
como Over Booking). Por mais que os 200 ingressos sejam vendidos apenas 180 pessoas
podero voar. Em nenhum momento 200 pessoas vo voar acomodados em corredores,
dividindo assentos, etc.

Um servidor possui uma quantidade X de memria, porm informar para as maquinas


virtuais que utilizam Dynamic Memory de que elas podem ter mais memria se precisarem.
Entretanto se o limite fsico de memria do Host for atingido no haver compresso de
memria ou page sharing: um bloco de memria ocupado APENAS por uma maquina
virtual.
A memria inicial o startup de memria que a maquina virtual utiliza at que todo o
Kernel da mesma esteja inicializado. Aps a inicializao completa de todo o Kernel da
sim a maquina virtual pode incrementar de memria RAM baseado na demanda, da
seguinte forma: Vamos imaginar uma maquina virtual com 1GB de RAM de memria
inicial, e configuramos o mximo para 8GB de RAM e o Buffer configurado em 20%.

TransparentPageSharing(TPS)

No caso de sistemas operacionais Windows anteriores ao Windows Server 2008 cada


arquivo do sistema operacional carregado sempre no mesmo endereamento de
memria (normalmente estes endereos so representados como 00000 etc). Neste
cenrio o TPS comea a analisar estes endereos alocados de todas as maquinas virtuais,
em blocos de 4K, e comea a compar-los entre si. Caso seja verificado que o Hash seja o
mesmo ento apenas 1 das alocaes mantida na memria, e as demais so liberadas e
gerenciadas pela tabela de Hash.
Este tcnica possui bastante efetividade quando so utilizadas maquinas virtuais com
mesmo sistema operacional, mesmos aplicativos e mesmos dados. O motivo que a
probabilidade de encontrar estes trechos redundantes muito maior do que se for
considerar o cenrio com maquinas virtuais com sistemas operacionais distintos,
diferentes aplicativos e dados.
Nos novos servidores baseados em processadores com Intel EPT (Extended Page Table)
e AMD RVI (Rapid Virtualization Index) as alocaes de pginas fsicas do Host so feitas
em blocos de 2MB na memria, ao invs de 4K. Isto um problema, pois a probabilidade
de encontrar pginas idnticas em blocos de 2MB muito menor se comparado a pginas
de 4KB. Isto significa que o TPS ter um overhead maior, pois ele precisar gerar hashes
de 4K mesmo nas pginas de 2MB.

BALLOONING
O termo Ballooning uma tcnica comum, pois a grande maioria dos virtualizadores
implementa este mecanismo. O Ballooning na grade parte dos casos implementado
atravs de um driver de dispositivo. Este driver comunica-se com o virtualizador (ou
hypervisor) e informa quando est sob presso (demandando memria) para obter mais
memria. Quando o driver de ballooning inflado cabe ao sistema operacional da
maquina virtual decidir quais pginas sero desalocadas da memria ara satisfazer as
requisies do Ballooning.

MEMORYCOMPRESSION
Esta tcnica no nova, pois h muito tempo atrs para o sistema operacional DOS j
existiam fabricantes que ofereciam softwares que duplicavam a memria RAM (ex:
QEMM da Quarterdeck ou Double-RAM). Neste cenrio em particular as pginas que vo
para swap (paginao) podem ser comprimidas e armazenadas em um cache de
compresso, localizado na memria principal do Host ou servidor de virtualizao. Quando
uma pgina que est em swap acessada novamente ento a pagina descompactada e
acessada. Como est no Compression Cache do host (localizado na memria) ento seu
acesso mais rpido do que se estivesse armazenada em disco. Se as pginas no
podem ser comprimidas ento a compresso vai falhar, e as paginas executam um SWAP.
Importante observar que o Compression Cache finito em tamanho e utiliza uma poltica
de reposio baseada em idade/tempo.

HYPERVISORSWAPPING
Esta tcnica a mais simples de todas, pois basicamente at agora o que vimos das
principais tcnicas que todas possuem em comum um nico objetivo: obter mais espao
na memria para alocar mais mquinas virtuais. Entretanto pode chegar um ponto no
servidor de virtualizao em que todas as tcnicas anteriores tenham feito o mximo
possvel e no h mais memria RAM disponvel, tanto para as maquinas virtuais quanto
para o host de virtualizao. Neste cenrio a memria extra solicitada pela maquina virtual
redirecionada para paginao em disco.
O cenrio ideal de utilizao do Hypervisor Swapping ocorre quando so utilizados discos
SSD (Solid State Drive) ou storages de alto desempenho. Entretanto dependendo da
quantidade de maquinas virtuais necessrio manter um RAID ou vrias controladores de
disco, todos com discos SSD ou equivalentes.
A tcnica do Hypervisor Swapping utilizada como ultima alternativa. Isto significa que se
todas as outras tcnicas de memria j esgotaram seus recursos ento ser utilizado
como ultima alternativa o swapping:

TPS baseado na taxa de Scan de pginas e oportunidades de compartilhamento


de memria (mesmo Sistema Operacional, mesma verso, mesma lnguagem, etc)

Balloning depende do tempo de resposta do Sistema Operacional da maquina


virtual

Limite de memria fsica: Windows Server 2008 R2


O Windows Server 2008 R2 apenas est disponvel na verso 64-bits

Version

64-bit
Windows

Windows Server 2008 R2 Datacenter

2 TB

Windows Server 2008 R2 Enterprise

2 TB

Windows Server 2008 R2 for Itanium-Based


Systems

2 TB

Windows Server 2008 R2 Foundation

8 GB

Windows Server 2008 R2 Standard

32 GB

Windows HPC Server 2008 R2

128 GB

Windows Web Server 2008 R2

32 GB

Limite de memria fsica: Windows Server 2008


Na verso 32 bits, limites > que 4 GB assumimos que o PAE est activo.

Version

32-bit

64-bit

Windows Server 2008 Datacenter

64 GB

2 TB

Windows Server 2008 Enterprise

64 GB

2 TB

Windows Server 2008 HPC Edition

No se aplica

128 GB

Windows Server 2008 Standard

4 GB

32 GB

Windows Server 2008 for Itanium-Based


Systems

No se aplica

2 TB

Windows Small Business Server 2008

4 GB

32 GB

Windows Web Server 2008

4 GB

32 GB

Windows Server 2008 R2


O Windows Server 2008 R2 apenas est disponvel na verso 64-bits

VERSION

6 4 -BI T W I N D O W S

Windows Server 2008 R2 Datacenter

2 TB

Windows Server 2008 R2 Enterprise

2 TB

Windows Server 2008 R2 for Itanium-Based Systems

2 TB

Windows Server 2008 R2 Foundation

8 GB

Windows Server 2008 R2 Standard

32 GB

Windows HPC Server 2008 R2

128 GB

Windows Web Server 2008 R2

32 GB

Windows Server 2008

Na verso 32 bits, limites > que 4 GB assumimos que o PAE est activo.

VERSION

32-BIT

64-BIT

Windows Server 2008 Datacenter

64 GB

2 TB

Windows Server 2008 Enterprise

64 GB

2 TB

Windows Server 2008 HPC Edition

No se
aplica

128 GB

Windows Server 2008 Standard

4 GB

32 GB

Windows Server 2008 for Itanium-Based


Systems

No se
aplica

2 TB

Windows Small Business Server 2008

4 GB

32 GB

Windows Web Server 2008

4 GB

32 GB

Windows Vista
VERSION

32-BIT

6 4 -BI T

Windows Vista Ultimate

4 GB

128 GB

Windows Vista Enterprise

4 GB

128 GB

Windows Vista Business

4 GB

128 GB

Windows Vista Home Premium

4 GB

16 GB

Windows Vista Home Basic

4 GB

8 GB

Windows Vista Starter

1 GB

No se aplica

Windows Home Server

O Windows Home Server est disponvel apenas verso 32-bits e o limite fsico
de 4 GB.

Windows Server 2003


Na verso 32 bits, limites > que 4 GB assumimos que o PAE est activo.

VERS O

32-BIT

6 4 -BI T

Windows Server 2003 with Service Pack 2


(SP2), Datacenter Edition

128 GB64 GB
with 4GT

2 TB

Windows Server 2003 with Service Pack 2


(SP2), Enterprise Edition

64 GB

2 TB

Windows Storage Server 2003, Enterprise

8 GB

No se

Edition

aplica

Windows Storage Server 2003

4 GB

No se
aplica

Windows Server 2003 R2 Datacenter


EditionWindows Server 2003 with Service
Pack 1 (SP1), Datacenter Edition

128 GB16 GB
with 4GT

1 TB

Windows Server 2003 R2 Enterprise


EditionWindows Server 2003 with Service
Pack 1 (SP1), Enterprise Edition

64 GB16 GB
with 4GT

1 TB

Windows Server 2003 R2 Standard


EditionWindows Server 2003, Standard
Edition SP1Windows Server 2003, Standard
Edition SP2
4 GB

32 GB

Windows Server 2003, Datacenter Edition

128 GB16 GB
with 4GT

512 GB

Windows Server 2003, Enterprise Edition

32 GB16 GB
with 4GT

64 GB

Windows Server 2003, Standard Edition

4 GB

16 GB

Windows Server 2003, Web Edition

2 GB

No se
aplica

Windows Small Business Server 2003

4 GB

No se
aplica

Windows Compute Cluster Server 2003

No se aplica

32 GB

Voc pode criar alocaes de recursos no Gerenciador de Recursos de Sistema do


Windows que limitam a quantidade de memria do conjunto de trabalho ou a
memria comprometida consumida por um processo.
Os limites de memria so aplicados por processo. Por exemplo, se voc criar uma
alocao de recursos que especifique um limite de conjunto de trabalho de 10
megabytes (MB) e aplicar um critrio de correspondncia de processos que faa a

correspondncia de seis processos em execuo, o limite de 10 MB ser aplicado


individualmente a cada um dos seis processos.

Limites de memria do conjunto de


trabalho
Voc pode definir um limite superior no conjunto de trabalho de um processo
correspondido. O Gerenciador de Recursos de Sistema do Windows impede que o
conjunto de trabalho de um processo correspondido exceda o limite definido na
alocao de recursos. Se o limite for atingido, as alocaes de memria
subsequentes no falharo, mas as pginas existentes no conjunto de trabalho
sero substitudas. Isso impede erros de aplicativos subsequentes.

Limites da memria comprometida


Voc pode definir um limite superior na memria comprometida consumida por um
processo. Em geral, se houver um aumento constante na memria comprometida
consumida por um processo, isso se deve a um vazamento de memria no
processo. Quando voc limita a quantidade de memria comprometida consumida
por um processo, pode interferir quando ocorre um vazamento de memria. Quando
o limite atingido, o Gerenciador de Recursos de Sistema do Windows pode
registrar um evento no log de eventos ou terminar o processo e registrar um evento
no log de eventos.
O servio Gerenciador de Recursos de Sistema do Windows mantm o limite de
memria comprometida. O servio monitora o uso de memria comprometida dos
processos correspondidos. Ele tambm executa a ao definida pelo usurio sempre
que o uso da memria comprometida do processo exceder o limite. H somente
duas aes definidas pelos usurio disponveis:

Registrar evento

Terminar processo e registrar evento

Consideraes adicionais

No use limites de memria no Gerenciador de Recursos de Sistema do


Windows para gerenciar aplicativos ou processos que modificam os
respectivos limites de memria dinamicamente. Isso pode interferir na
operao correta do Gerenciador de Recursos de Sistema do Windows e do
aplicativo gerenciado.

Recomenda-se usar metas de CPU para gerenciar recursos. Aplique os


limites de memria de maneira seletiva aos aplicativos que demonstram
problemas de consumo de memria. O limite excessivo da memria
disponvel para um aplicativo pode aumentar o tempo necessrio para que o
aplicativo conclua uma tarefa e pode elevar o uso do disco.

Gerenciamento de Memria
no Windows
Posted on June 9, 2012

Quero falar um pouco sobre o Buffer Manager do SQL Server, mas antes
de comearmos acredito que interessante repassar alguns conceitos de
gerenciamento de memria do Windows:
Memria Virtual
O VAS, ou Virtual Address Space corresponde ao espao de
memria virtual de um processo. Atravs do VAS, cada processo no
Windows tem a impresso de estar rodando em um enorme espao de
memria contgua no-compartilhada. Indeferente da real quantidade de
memria fsica do sistema (16 GB, por exemplo), em sistemas x86, a
memria virtual de cada processo tem um tamanho padro de 2 GB,
enquanto em sistemas X64 o processo recebe um espao de
endereamento virtual de exagerados (para os padres atuais) 8 TB.
Mesmo que a memria utilizada por um processo esteja (fisicamente)
espalhada entre diversas reas da memria fsica ou ainda paginadas no
disco rgido, para o processo a memria acessvel sempre ter um
aspecto uniforme e contguo.
Durante o tempo de execuo do processo o componente do
processador chamado de MMU (memory management unit) far o
mapeamento da memria virtual do processo memria fsica do
sistema atravs de page tables, ou tabelas de pgina, criadas pelo
gerenciador de memria do Windows, e so os responsveis por
armazenar os mapeamentos entre os endereos virtuais da memria do
processo e seus endereos reais correspondentes (fsicos). A tabela de
pgina do processo contm diversas Page Table Entries (PTEs), uma para
cada pgina de memria virtual do processo.

Atravs deste mecanismo o sistema pode garantir que um processo no


poder afetar diretamente (propositada ou despropositadamente) a
memria de outro processo rodando no mesmo sistema.
Outra caracterstica de sistemas que utilizam memria virtual (como o
Windows) que ele permite que cada processo em execuo em um
sistema tenha acesso a uma quantidade possivelmente muito superior
memria fsica instalada. Nas verses 64-bit do Windows, por exemplo, a
memria virtual de um processo corresponde a um total de 8 TB, e isso,
como dito anteriormente, independente da memria fsica instalada.
Nas verses 32-bit, o processo fica restrito ao um VAS muito menor, de
apenas 4 GB, sendo por padro 2 GB para uso do sistema operacional e
apenas 2 GB do usurio (aplicao). Essas configuraes podem ser
alteradas durante o processo de boot do Windows (atravs
dos switchs /3GB no Windows 2003 e /set IncreateUserVa 3072 nas
verses mais recentes), mas o processo continua restringido aos 4 GB,
ou seja, a nova memria alocada para uso do processo foi tirada
diretamente da memria disponvel para a execuo do SO, e agora
dividida como 3 GB + 1 GB.
Existem outras tcnicas para superar esse limite mas no entraremos
nos mritos aqui por no agregarem valor nossa discusso. Voc pode
encontrar mais informaes respeito no fim deste artigo, nos links para
leitura adicional.

interessante notar que atualmente a edio mais robusta (Datacenter)


do Windows Server mais atual (2008 R2) suporta um mximo de 2 TB de
memria fsica em sistemas X64. fcil notar, portanto, que o VAS no
corresponde memria fsica do sistema.
Memria Reservada e Memria Confirmada
As pginas em memria virtual podem estar em 3 estados:
1.

Reservada (MEM_RESERVE)

2.

Confirmada (MEM_COMMIT)

3.

Livre (MEM_FREE)

Uma thread de execuo em um processo pode reservar um espao de


memria virtual sem que haja uso desnecessrio de armazenamento
(ex.: memria fsica) para aquele espao, ou seja, reservar 10 MB de
memria virtual no ir causar o consumo de 10 MB de armazenamento
(ex.: memria fsica). Pginas de memria virtual confirmadas, por outro
lado, so mapeadas um armazenamento e consomem os recursos dos
quais representam. Alocar e confirmar 10 MB de memria virtual ir
causar o consumo de 10 MB de armazenamento (ex.: memria fsica).
Processos que necessitam de grande quantidades de memria (como o
SQL Server) podem utilizar o processo de reservar e confirmar memria
separadamente para evitar o desperdcio de recursos preciosos do
sistema (ex.: memria fsica), evitando confirmar o uso de memria at
que esta seja realmente necessria, mas ainda assim manter o benefcio
de alocar grandes espaos de memria virtual contgua. Por exemplo,
umthread poderia reservar 1 GB de memria virtual (do endereo
0x00f60000 ao endereo 0x40f6000000:
DWORDdwMemSize=1024*1024*1024;// 0x40000000 = 1 GB
LPVOIDlpMem=VirtualAlloc(0,dwMemSize,MEM_RESERVE,
PAGE_READWRITE);

Uma pgina reservada ou confirmada pode ainda ter 3 diferentes tipos:


1.

Privada (MEM_PRIVATE)

2.

Mapeada (MEM_MAPPED)

3.

Imagem (MEM_IMAGE)

Pginas privadas pertencem ao processo, no podem ser compartilhadas


e podem ser escritas no arquivo de paginao do Windows se necessrio
(ex.: presso de memria). Pginas confirmadas e mapeadas so pginas
alocadas atravs de APIs de mapeamento de arquivos e esto
associadas um arquivo em disco:

Pginas de memria virtual do tipo MEM_IMAGE so pginas utilizadas


para mapear um arquivo de imagem PE (.exe, .dll) no espao de
endereamento virtual do processo, inclusive a sua prpria imagem (ex.:
sqlservr.exe):
0:059>!vadump
...
BaseAddress:0000000000d70000
RegionSize:0000000000001000
State:00001000MEM_COMMIT
Protect:00000002PAGE_READONLY
Type:01000000MEM_IMAGE
...
BaseAddress:000000006ffe0000
RegionSize:0000000000001000
State:00001000MEM_COMMIT
Protect:00000002PAGE_READONLY
Type:01000000MEM_IMAGE
...

E recuperamos informaes sobre a imagem mapeada no endereo:


0:059>!dh0000000000d70000

File Type: EXECUTABLE IMAGE


FILE HEADER VALUES
8664 machine (X64)
8 number of sections
4DB2C9AD time date stamp Sat Apr 23 09:44:29 2011
...
0000000000d70000 image base
0:059>!lmi0000000000d70000
LoadedModuleInfo:[0000000000d70000]
Module:sqlservr
BaseAddress:0000000000d70000
ImageName:C:SQL
ServerMSSQL10_50.MSSQLSERVERMSSQLBinnsqlservr.exe
MachineType:34404(X64)
TimeStamp:4db2c9adSatApr2309:44:292011
Size:3bb0000
CheckSum:3b10238
Characteristics:22perf
DebugDataDirs:TypeSizeVAPointer
CODEVIEW25,2bbb324,2bba724RSDSGUID:{E0E45C4E
B0C64908A902...}
Age:2,Pdb:sqlservr.pdb
CLSID4,2bbb320,2bba720[Datanotmapped]
ImageType:FILEImagereadsuccessfullyfromdebugger.
C:SQL
ServerMSSQL10_50.MSSQLSERVERMSSQLBinnsqlservr.exe
SymbolType:PDBSymbolsloadedsuccessfullyfromsymbol
server.


c:symbolssqlservr.pdbE0E45C4EB0C64908A90279B30F42FACA2sqlservr.pdb
LoadReport:publicsymbols,notsourceindexed

c:symbolssqlservr.pdbE0E45C4EB0C64908A90279B30F42FACA2sqlservr.pdb
0:059>!lmi000000006ffe0000
LoadedModuleInfo:[000000006ffe0000]
Module:xpstar
BaseAddress:000000006ffe0000
ImageName:c:SQLServerMSSQL10_50.MSSQLSERVERMSSQLBinnxpstar.dll
MachineType:34404(X64)
TimeStamp:4bb67993FriApr0220:11:152010
Size:88000
CheckSum:93cb2
Characteristics:2022
DebugDataDirs:TypeSizeVAPointer
CODEVIEW23,a5b8,99b8RSDSGUID:{6DEA79A6
908B41789F73...}
Age:1,Pdb:XPSTAR.pdb
ImageType:FILEImagereadsuccessfullyfromdebugger.
c:SQLServerMSSQL10_50.MSSQLSERVERMSSQLBinnxpstar.dll
SymbolType:PDBSymbolsloadedsuccessfullyfromsymbol
server.

c:symbolsXPSTAR.pdb6DEA79A6908B41789F734A3EB6CA9EC41XPSTAR.pdb
LoadReport:publicsymbols,notsourceindexed

c:symbolsXPSTAR.pdb6DEA79A6908B41789F734A3EB6CA9EC41XPSTAR.pdb

Working Set
E no caso do processo utilizar mais memria virtual do que a memria
fsica disponvel no servidor?
Bom, nesse caso temos o que chamado de paging, ou paginao.
Dentro do espao de memria virtual (VAS) do processo, existe
o Working Set, que nada mais do que o conjunto de pginas de
memria confirmadas que foram recentemente utilizados pelo
processo e se encontram em memria fsica. Quando a memria de
um processo removida do seu Working Set, ela pode ser colocada em
dois destinos:
1.

Se esta pgina no foi modificada enquanto estava no Working


Set ela ser colocada diretamente na lista de pginas em standby.

2.

Caso contrrio essa pgina ir para a lista de pginas modificadas


(modified pages), onde fica at ser escrita em disco (paged out), no
arquivo de paginao ou em um arquivo mapeado em memria, e
s ento ser colocada na lista de pginas em standby.

As pginas em standby, apesar de serem consideradas memria livre,


ainda esto ligadas a um processo e caso esse processo necessite
novamente de uma dessas pginas, haver um soft memory fault, e essa
pgina ser rapidamente recuperada e recolocada no Working Set do
processo.
interessante notar, portanto, que memria livre no sistema no
significa necessariamente memria desperdiada. Essa memria est
ligada a algum processo para permitir sua recuperao de forma rpida
caso este processo venha a utiliz-la novamente.
Quando uma pgina permanece na lista de standby por mais que um
determinado perodo, esta pgina ento zerada e colocada na lista de
pginas zeradas. Se houver a necessidade de liberar essa pgina para
uso por outro processo, ela estar pronta para ser colocada em
seu Working Set.
Se o processo requisitar uma pgina da memria que no se encontra
mais em seuWorking Set e j foi removida da lista de standby, gerado

ento um hard memory fault(ao contrrio do soft memory fault), e esta


pgina ser buscada partir do armazenamento de suporte qual
pertencia essa memria (arquivo de paginao ou um arquivo mapeado
na memria pelo processo), colocada em memria fsica e alocada
noWorking Set do processo.
SQL Server
O assunto bem extenso e ainda faltou muita coisa pra cobrir, mas
acredito que foi possvel dar uma revisada nos principais conceitos que
vamos precisar para o prximo post sobre o gerenciamento de memria
no SQL Server, em especial o gerenciamento do Buffer Pool, o maior e
principal consumidor de memria de um servidor SQL.

Sistemas de Arquivos
Outro papel importante so servidores de arquivo. Muitos tambm acreditam que para um
servidor de arquivos apenas uma boa controladora de disco e discos rpidos so mais do
que suficiente. O processo de cpia tem algumas particularidades interessantes, e isto
ajuda a compreender melhor as necessidades de outros itens de hardware. Uma das
tecnologias inseridas no Windows Server 2008 R2 o RSS (Receive Side Scaling) que
permite acelerar o processo de cpia. At as verses anteriores de sistema operacional de
servidor todo o processamento de cpia era feito no primeiro ncleo de processador (Proc
0), de forma que o gargalo era alto, por mais que o servidor tivesse vrios ncleos. Com o
RSS o processo de cpia distribudo entre os ncleos, aumentando o desempenho para
gerenciar a cpia. Isto faz sentido, pois nas verses anteriores no eram comuns cenrios
com terabytes de dados trafegados pela rede. Outro ponto importante que, para acelerar
o processo de cpia entre mquinas pela rede muito mais rpido copiar os dados
primeiro para memria, para depois gravar para o disco. Neste caso ao copiar uma grande
quantidade de dados pela rede o Windows far primeiramente um processo de cpia para
a memria (no d para comparar o tempo de acesso para a memria nano segundos
em relao ao tempo e acesso a disco milissegundos). Em outras palavras, quanto maior
a quantidade de memria RAM, mais rpido o processo de cpia, portanto servidores de
arquivo com pouca memria sofrem danos em desempenho.