![Desempenho péssimo de E/S após atualização para 16.04](https://rvso.com/image/885966/Desempenho%20p%C3%A9ssimo%20de%20E%2FS%20ap%C3%B3s%20atualiza%C3%A7%C3%A3o%20para%2016.04.png)
Eu tenho uma tarefa semi-regular que faço na minha estação de trabalho Ubuntu 16.04: ela tem um segundo disco com o Windows 7. Basicamente, é uma instalação simples, que às vezes inicializo e deixo o Windows Update ser executado. A ideia é usá-lo para jogos, mas, bem, raramente tenho tempo. Ainda o mantenho atualizado.
Esta tarefa semirregular é clonar o disco ntfsclone
depois de fazer essa atualização. Veja isso como um instantâneo de "baixa tecnologia", porque - infelizmente - o Windows não pode viver dentro de um volume LVM. (Bem, pode, se estiver sendo virtualizado.) Escrevi um script para fazer isso (e mais algumas coisas), porque sou preguiçoso, mas o comando que leva mais tempo e causa o problema é:
ntfsclone -s -o /home/jorg/Images/$(date +%F).ntfsclone /dev/sdc2
Onde /dev/sdc2
está a partição do Windows e /home/jorg/Images/
é um volume LVM, em um RAID1 composto por /dev/sda
e /dev/sdb
. Todos esses discos são discos rígidos normais, conectados via SATA.
O problema que surge: quando faço isso, minha estação de trabalho fica total e totalmente inutilizável. A capacidade de resposta é simplesmente horrível. Até mesmo alternar e fazer login em um console virtual ( Ctrl
- Alt
- F1
) é insuportavelmente lento.
Isso não é apenas uso ntfsclone
e é por isso que suspeito de E/S de disco. Quando faço isso dd
, uma ferramenta que costumo usar para ajudar pessoas com discos defeituosos, acontece o mesmo. É ainda pior com o dd
, porque isso geralmente passa pelo USB. Dito isto, usei dd
em vez de ntfsclone
um teste com a configuração acima, que é somente SATA, e é igualmente ruim. Sim, utilizo o bs
parâmetro in dd
para que o buffer seja feito corretamente.
O problema é: embora o computador tenha ficado lento em 14.04, ele não ficou inutilizável. Era apenas "um pouco mais lento", mas a navegação, o e-mail e o terminal ainda eram suportáveis.
Até agora, também brinquei com diferentes agendadores de disco. Os agendadores suportados são:
cat /sys/block/sda/queue/scheduler
noop [deadline] cfq
Mudar para cfq
ou noop
não ajudou. ( echo cfq > /sys/block/sda/queue/scheduler
).
Algumas informações sobre minha máquina:
root@tiger:~# uname -a
Linux tiger 4.4.0-34-generic #53-Ubuntu SMP Wed Jul 27 16:06:39 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
root@tiger:~# dmidecode -t baseboard | grep -e Product -e Manufacturer
Manufacturer: ASUSTeK COMPUTER INC.
Product Name: F1A75-V PRO
root@tiger:~# free -mh
total used free shared buff/cache available
Mem: 15G 1,7G 2,9G 154M 11G 13G
Swap: 31G 0B 31G
root@tiger:~# for disk in a b c ; do echo \[ Disk informatoin for \/dev\/sd$disk \] ; hdparm -I /dev/sd$disk | grep -e Model -e Transport ; done
[ Disk informatoin for /dev/sda ]
Model Number: ST1500DL003-9VT16L
Transport: Serial, SATA Rev 3.0
* SMART Command Transport (SCT) feature set
[ Disk informatoin for /dev/sdb ]
Model Number: ST1500DL003-9VT16L
Transport: Serial, SATA Rev 3.0
* SMART Command Transport (SCT) feature set
[ Disk informatoin for /dev/sdc ]
Model Number: WDC WD1002FAEX-00Z3A0
Transport: Serial, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6
* SMART Command Transport (SCT) feature set
Eu percebo que não /dev/sda
sou /dev/sdb
uma potência, mas eles se saíram bem em 14.04.
Alguém também está vendo um desempenho péssimo ao fazer E/S alta? Em caso afirmativo, você encontrou uma solução alternativa?
Responder1
Okernel xanmodpareceu ajudar. Eu estava executando o 16.04 com unidade de inicialização SSD, gnome 3.2. Achei que o agendador de prazos faria isso, mas não pareceu ajudar muito. Isto é o que eu segui: http://www.hecticgeek.com/2016/09/supercharge-ubuntu-16-04-lts-xanmod-kernel/