Transferência baixa HD sata modo AHCI

Iniciado por PRSC, 17 de Julho de 2011, 00:08

tópico anterior - próximo tópico

PRSC

Olá a todos.

Me deparei com um problema de má configuração dos hds, isso vestigio do windows xp :P
Sempre deixei na bios em modo IDE, e como não mexia com arquivos muito grande nunca me encomodou a transferência.
Mas agora que preciso do poder dos HDS, justo no ubuntu não está funcionando.

Achei que seria mais complicado ter que formatar o win7, mas achei uma solução com os drivers da amd e uma alteração no registro, e incrivelmente a taxa de transferência passou de miseros 25mb para picos de 144mb e minimo de 105mb.

Fiquei feliz da vida, e como ja iria formatar o ubuntu com a bios já em AHCI fiquei tranquilo achando que seria automático, mas não aconteceu isso.

Nos dados com o comando "lspci -vvnn | less" mostra que o driver está correto, mas na prática a taxa está terrivel começando em 25mb e caindo até 16mb.
Testes feitos da mesma forma com os mesmos arquivos em 2 windows 7 "32" e "64" e no ubuntu "32" 11.04 sem unity, no modo clássico.

Citar
SATA controller [0106]: ATI Technologies Inc SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] [1002:4391] (prog-if 01 [AHCI 1.0])
       Subsystem: Elitegroup Computer Systems Device [1019:4390]
       Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
       Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
       Latency: 64, Cache Line Size: 64 bytes
       Interrupt: pin A routed to IRQ 22
       Region 0: I/O ports at b000
       Region 1: I/O ports at a000
       Region 2: I/O ports at 9000
       Region 3: I/O ports at 8000
       Region 4: I/O ports at 7000
       Region 5: Memory at fe7ffc00 (32-bit, non-prefetchable) [size=1K]
       Capabilities: <access denied>
       Kernel driver in use: ahci
       Kernel modules: ahci

Onde devo mexer para que o HD trabalhe em sua potência máxima?

Realmente muchei com o resultado no ubuntu mas espero que alguém tenha uma dica.

Abraço.
Placa Gigabyte 970A-ud3p..16 GB Corsair Vegeance..FX8300..nVidia GTx750Ti.Gabinete Cougar Challenger
Linux user #511

druidaobelix

Olá PRSC,

Essa me parece uma questão muito interessante, realmente digna de especial atenção. Custo a crer que possa ser dessa forma, vou tentar testar.

Um primeiro ponto é que precisamos comparar banana com banana e maçã com maçã, então não faz sentido compararmos, principalmente em atividade de disco, notadamente cópia, que é onde prioritariamente se aplica, sistema de 32bits com sistema de 64 bits.

Depois seria interessante estruturar um benchmark simples de cópia com registro automático dos tempos de início e fim para um arquivo padrão de, digamos, 1GB e montar uma tabela, porque aí sai da subjetividade e vai para o campo da medida propriamente dita. Vou elaborar tão logo possa uma pequena rotina para exemplificar a questão e depois posto aqui.

É de ver que os tempos de 'disk read' e 'cached reads' são significativamente diferentes, então qualquer teste tem que levar isso em consideração.
Só para ilustrar, num HD-SATA simples que tenho aqui (tenho outro melhor, estou pegando o pior), obtenho 66,61 MB/sec e 4082,54 MB/sec respectivamente no hdparm. No outro HD, no mesmo sistema, isso vai para 122,42MB/sec e 4118,73MB/sec.

Esses números foram obtidos aqui na versão 10.10 com o kernel 2.6.35-30-generic - i686.

Penso que seria útil termos mais alguma informação sobre o seu sistema de discos para poder inicialmente compreender melhor a questão e até mesmo para podermos comparar com os resultados de cada qual que se interesse pelo assunto.

Acho que seria de utilidade inicialmente postar os resultados dos comandos:

sudo fdisk -l     ----> para podermos entender a estrutura

sudo blkid   ---> para podermos ver a formatação

E para cada unidade que tiver aí (x, claro, troca pela unidade real):

sudo hdparm -i /dev/sdx

sudo hdparm -t /dev/sdx

sudo hdparm -T /dev/sdx

Como certamente v. sabe, e apenas para conhecimento de eventuais leitores, a carga de módulo de disco para a montagem da initramfs, quando não padrão (por exemplo raid), é feita em /etc/initramfs-tools/modules, é o caso de estudar se algo pode ser feito aí.

[]'s
www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

PRSC

#2
Obrigado druidaobelix por responder.

Vamos lá descobrir o que está de errado.

Abaixo todos os dados pedidos.

Sudo fdisk -l


Disco /dev/sda: 320.1 GB, 320072933376 bytes

255 heads, 63 sectors/track, 38913 cylinders

Unidades = cilindros de 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Identificador do disco: 0x8e60e4dd



Dispositivo Boot Início Fim Blocos Id Sistema

/dev/sda1   *           1        7238    58139203+   7  HPFS ou NTFS

/dev/sda2            7239       14403    57548800    7  HPFS ou NTFS

/dev/sda3           14403       18446    32470017    5  Estendida

/dev/sda4           18446       38914   164410368    7  HPFS ou NTFS

/dev/sda5           18373       18446      584704   82  Linux swap / Solaris

/dev/sda6           14403       18373    31884288   83  Linux



Partições lógicas fora da ordem do disco



Disco /dev/sdb: 2000.4 GB, 2000398934016 bytes

255 heads, 63 sectors/track, 243201 cylinders

Unidades = cilindros de 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Identificador do disco: 0x0003419c



Dispositivo Boot Início Fim Blocos Id Sistema

/dev/sdb1               1      243202  1953513472    7  HPFS ou NTFS



Disco /dev/sdc: 1500.3 GB, 1500301910016 bytes

255 heads, 63 sectors/track, 182401 cylinders

Unidades = cilindros de 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Identificador do disco: 0x3a1ffabd



Dispositivo Boot Início Fim Blocos Id Sistema

/dev/sdc1               1      182402  1465136128    7  HPFS ou NTFS



Disco /dev/sdd: 1000.2 GB, 1000204886016 bytes

255 heads, 63 sectors/track, 121601 cylinders

Unidades = cilindros de 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Identificador do disco: 0x0c634c8d



Dispositivo Boot Início Fim Blocos Id Sistema

/dev/sdd1               1      121602   976760832    7  HPFS ou NTFS



sudo blkid


/dev/sda1: LABEL="WIN 7 32" UUID="685C972C5C96F3D2" TYPE="ntfs"

/dev/sda2: LABEL="WIN 7 64" UUID="BAF8E67BF8E634F3" TYPE="ntfs"

/dev/sda4: LABEL="HD-SISTEMA" UUID="747A44B50322679F" TYPE="ntfs"

/dev/sda5: UUID="e7023abf-54cf-42ca-9fac-7f33510732cc" TYPE="swap"

/dev/sda6: UUID="97aac026-8013-44bb-89d2-6238ae1b8801" TYPE="ext4"

/dev/sdb1: LABEL="HD 2 também" UUID="4E5C565E2979924A" TYPE="ntfs"

/dev/sdc1: LABEL="HD 1.5 também" UUID="8E8CDB238CDB049D" TYPE="ntfs"

/dev/sdd1: LABEL="HD 1 também" UUID="6C89594876909ECB" TYPE="ntfs"



sudo hdparm -i /dev/sda

Model=SAMSUNG HD322HJ, FwRev=1AC01113, SerialNo=S1RLJ50S366575

Config={ Fixed }

RawCHS=16383/16/63, TrkSize=34902, SectSize=554, ECCbytes=4

BuffType=DualPortCache, BuffSize=16384kB, MaxMultSect=16, MultSect=16

CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=625142448

IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}

PIO modes:  pio0 pio1 pio2 pio3 pio4

DMA modes:  mdma0 mdma1 mdma2

UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6

AdvancedPM=yes: unknown setting WriteCache=enabled

Drive conforms to: unknown:  ATA/ATAPI-3,4,5,6,7



signifies the current active mode




sudo hdparm -i /dev/sdb

Model=SAMSUNG HD204UI, FwRev=1AQ10001, SerialNo=S2N6J50B502649

Config={ Fixed }

RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4

BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=off

CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=3907029168

IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}

PIO modes:  pio0 pio1 pio2 pio3 pio4

DMA modes:  mdma0 mdma1 mdma2

UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6

AdvancedPM=yes: unknown setting WriteCache=enabled

Drive conforms to: unknown:  ATA/ATAPI-0,1,2,3,4,5,6,7



signifies the current active mode



sudo hdparm -i /dev/sdc

Model=SAMSUNG HD154UI, FwRev=1AG01118, SerialNo=S240J50ZA00702

Config={ Fixed }

RawCHS=16383/16/63, TrkSize=34902, SectSize=554, ECCbytes=4

BuffType=DualPortCache, BuffSize=unknown, MaxMultSect=16, MultSect=16

CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=2930277168

IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}

PIO modes:  pio0 pio1 pio2 pio3 pio4

DMA modes:  mdma0 mdma1 mdma2

UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6

AdvancedPM=yes: unknown setting WriteCache=enabled

Drive conforms to: unknown:  ATA/ATAPI-3,4,5,6,7



signifies the current active mode





sudo hdparm -i /dev/sdd


Model=SAMSUNG HD103UJ, FwRev=1AA01118, SerialNo=S13PJDWS628673

Config={ Fixed }

RawCHS=16383/16/63, TrkSize=34902, SectSize=554, ECCbytes=4

BuffType=DualPortCache, BuffSize=unknown, MaxMultSect=16, MultSect=16

CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=1953525168

IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}

PIO modes:  pio0 pio1 pio2 pio3 pio4

DMA modes:  mdma0 mdma1 mdma2

UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6

AdvancedPM=yes: unknown setting WriteCache=enabled

Drive conforms to: unknown:  ATA/ATAPI-3,4,5,6,7



signifies the current active mode





sudo hdparm -t /dev/sda

Citar
/dev/sda:

Timing buffered disk reads: 338 MB in  3.01 seconds = 112.46 MB/sec


sudo hdparm -t /dev/sdb

Citar
/dev/sdb:

Timing buffered disk reads: 400 MB in  3.01 seconds = 133.00 MB/sec


sudo hdparm -t /dev/sdc

Citar
/dev/sdc:

Timing buffered disk reads: 192 MB in  3.01 seconds =  63.68 MB/sec



sudo hdparm -t /dev/sdd

Citar
/dev/sdd:

Timing buffered disk reads: 288 MB in  3.01 seconds =  95.74 MB/sec



sudo hdparm -T /dev/sda

Citar
/dev/sda:

Timing cached reads:   7316 MB in  2.00 seconds = 3660.36 MB/sec


sudo hdparm -T /dev/sdb

Citar
/dev/sdb:

Timing cached reads:   7266 MB in  2.00 seconds = 3634.91 MB/sec


sudo hdparm -T /dev/sdc

Citar
/dev/sdc:

Timing cached reads:   7378 MB in  2.00 seconds = 3690.99 MB/sec


sudo hdparm -T /dev/sdd

Citar
/dev/sdd:

Timing cached reads:   7150 MB in  2.00 seconds = 3576.62 MB/sec



Estão ai todos os dados pedidos, são 4 hds 320, 1 também, 1,5 também e 2 também.

No 7 fiz o teste passando um arquivo de 4,5 gb do hd de 1,5 também para o de 1 também e depois recortei e sobrescrevi do hd de 1 também e colei no de 1,5 também, isso nos dois 7, 32 e 64 bits.
E o mesmo teste foi feito aqui no ubuntu.

Abraço.

Edit:

Voltei a versão do ubuntu para o 10.04, não tem como usar a 11.04 nem no modo clássico, mas mesmo assim a transferência continua baixa.
Placa Gigabyte 970A-ud3p..16 GB Corsair Vegeance..FX8300..nVidia GTx750Ti.Gabinete Cougar Challenger
Linux user #511

PRSC

Pessoal, ainda não consegui resolver esse caso da transferência.
Gostaria muito que funciona-se aqui como deveria, sendo que é o sistema principal e uso tudo nele.

Alguma sugestão ou configuração para que eu possa testar?

Abraço.
Placa Gigabyte 970A-ud3p..16 GB Corsair Vegeance..FX8300..nVidia GTx750Ti.Gabinete Cougar Challenger
Linux user #511

Tota


Tota

Para agregar:

Citar
Some operating systems, notably Windows Vista and Windows 7, do not configure themselves to load the AHCI driver upon boot if the drive controller was not in AHCI mode at the time of installation. This can cause failure to boot with an error message if the SATA controller is later switched to AHCI mode. For this reason, Intel recommends changing the drive controller to AHCI or RAID before installing an operating system.[1] On Windows Vista and Windows 7, this can be fixed by booting in legacy mode and changing the registry.[3] A similar problem can occur on Linux systems if the AHCI driver is built as a module, rather than included in the kernel, as it may not be loaded into the initrd (initial RAM disk) created when in legacy mode; the workaround is to build a new initrd containing the AHCI module.[4][5]

http://en.wikipedia.org/wiki/Advanced_Host_Controller_Interface

Então dê uma pesquisada, se é melhor acionar o ahci editando o registro do windows ou acertando o kernel do Ubuntu

[]'s

PRSC

Opá Tota.

Eu já tinha visto o tuto, mas acredito que não se encaixa no meu caso.
Fiz mais um teste para ter certeza se seria o caso de mexer na parte do sistema como no tutorial, mexer na parte da segurança dos arquivos.
Transferi o mesmo arquivo nos testes do hd de 2 também para minha home  que é ext4 e veio a 100 mb, taxa muito boa, mas ao contrário da home para o hd 2 também cai para 20 mb.

Então percebi que o problema está entre as partições ntfs, ali é onde o ubuntu fica travado com taxa muito baixa.
Será que tem onde mexer apenas nesta parte, onde ele gerencia o ntfs?

Até fiz um teste com um comando passado pelo galactus.
#hdparm -W1 -M254  /dev/sdX

Modifiquei o hd de 1 também e de 2 também, mas não tive nenhum aumento na transferência.

No teste pelo terminal mostrava a taxa ótima, mas na prática terrível.

Abraço.
Placa Gigabyte 970A-ud3p..16 GB Corsair Vegeance..FX8300..nVidia GTx750Ti.Gabinete Cougar Challenger
Linux user #511

galactus

Olha só, eu já tinha lido este tópico mas não tinha respondido nada pois nunca usei o suporte AHCI das minhas placas com chipset Intel!

Do pouco que eu pesquisei, o modo AHCI vai ficar lento mesmo no Linux! A maioria acaba mudando para o modo IDE ou legacy! Achei uma possível "gambiarra" para minimizar o problema, o cara fala para mudar na BIOS do modo AHCI para SCSI! Não sei se sua placa suporta isso!

Olha o tópico aqui: http://www.tomshardware.com/forum/266215-32-transfer-rates-internal-drives-slow

Ele usa Ubuntu num Laptop!  A "gambiarra" está no fim do tópico, ele colocou como resolvido!

Outra coisa, essas baixas taxas de transferências acontecem em todas as partições ou só nas com NTFS?

BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

PRSC

Olá galactus

Minha mobo não tem esse modo citado no link que vc passou, as únicas configurações são IDE, RAID, AHCI.

A situação de transferência é a seguinte, fiz mais testes.

De todas as partições NTFS para home em ext4 vem com taxas boas, acima de 90mb.
Já da home para NTFS, 21mb para baixo.
Entre NTFS para NTFS mesma coisa, 21mb para baixo.
Copiando o arquivo da home para uma pasta que está na home a taxa fica em 39mb.

Usado o mesmo arquivo como referência sempre, até mesmo eu sobrescrevendo um arquivo existente puxado do NTFS para um arquivo que já existe na home a taxa é alta, mas inverso já cai demais usando a partição  NTFS para ser sobrescrita.

Se precisar de mais informações é só pedir.

Abraço
Placa Gigabyte 970A-ud3p..16 GB Corsair Vegeance..FX8300..nVidia GTx750Ti.Gabinete Cougar Challenger
Linux user #511