Eu instalei o debian 7 em uma máquina física. Esta é a configuração da máquina:
- 3 discos rígidos usando o RAID 5
- Tamanho do elemento de faixa: 1 M
- Política de leitura: leitura adaptável à frente
- Política de gravação: escreva por
- / boot 200 MB ext2
- / 15 GB ext3
- SWAP 10 GB
- LVM rest (~ 500GB)
Eu instalei o postgresql, criei um grande banco de dados (mais de 1GB). Eu tenho uma solicitação de SQL que leva muito tempo para executar (uma instrução SELECT, portanto, ele só lê dados do banco de dados). Essa solicitação leva aproximadamente 5,5 segundos para ser executada.
Então, instalei o XEN, criei um domU, com outra distro debian. Neste SO, eu também instalei o postgresql, com o mesmo banco de dados. A mesma solicitação SQL leva apenas 2,5 segundos para ser executada.
Eu verifiquei o kernel no dom0 e no domU. uname-a retorna "Linux debian 3.2.0-4-amd64 # 1 SMP Debian 3.2.41-2 + deb7u2 x86_64 GNU / Linux" em ambos os sistemas.
Eu verifiquei os parâmetros do kernel, que são aproximadamente os mesmos. Para aqueles que são relevantes, eu mudei seus valores para fazê-los corresponder em ambos os sistemas usando sysctl. Não vi alterações (as solicitações ainda demoram o mesmo tempo).
Depois disso, verifiquei os sistemas de arquivos. Eu usei o ext3 no domU. Ainda sem alterações.
Instalei o hdparm e executei hdparm -Tt em ambos os sistemas, em todas as minhas partições nos dois sistemas, e obtive resultados semelhantes.
Agora, estou preso, não sei o que é diferente e o que poderia ser a causa de uma diferença tão grande.
Informações adicionais:
- O Debian é executado em um servidor Dell PowerEdge 2950
- postgresql: 9.1.9 (dom0 e domU)
- xen-linux-system: 3.2.0
- xen-hypervisor: 4.1
Obrigado
EDITAR :
Como Krzysztof Księżyk sugeriu, pode ser devido a algum sistema de armazenamento em cache de arquivos. Eu corri o comando dd para testar a velocidade de leitura e gravação.
Aqui está domU:
root@test1:~# dd if=/dev/zero of=/root/dd count=5MB bs=1MB
^C2020+0 records in
2020+0 records out
2020000000 bytes (2.0 GB) copied, 18.8289 s, 107 MB/s
root@test1:~# dd if=/root/dd of=/dev/null count=5MB bs=1MB
2020+0 records in
2020+0 records out
2020000000 bytes (2.0 GB) copied, 15.0549 s, 134 MB/s
E aqui está dom0:
root@debian:~# dd if=/dev/zero of=/root/dd count=5MB bs=1MB
^C1693+0 records in
1693+0 records out
1693000000 bytes (1.7 GB) copied, 8.87281 s, 191 MB/s
root@debian:~# dd if=/root/dd of=/dev/null count=5MB bs=1MB
1693+0 records in
1693+0 records out
1693000000 bytes (1.7 GB) copied, 0.501509 s, 3.4 GB/s
Qual pode ser a causa desse sistema de cache? E como podemos "consertar" isso? Podemos aplicá-lo ao dom0?
EDIT 2 :
Eu mudei meu tipo de disco virtual. Para fazer isso, eu segui este artigo .
Eu fiz um dd if=/dev/vg0/test1-disk of=/mnt/test1-disk.img bs=16M
Então, em /etc/xen/test1.cfg, alterei o parâmetro disk para usar file: em vez de phy:
ele deveria ter removido o cache de arquivos, mas eu ainda recebo os mesmos números (domU sendo muito mais rápido para o Postgres)