LINUX.ORG.RU

Centos 6.3 SSD Itel 330 120GB had low performance

 ssd linux hdd performance


0

1

Комрады выручайте, сломал голову. Имею очень низкую производительность SSD винта. около 130Мб/сек

Попарядку, есть: 1) 1U Dell PowerEdge 1950 2x4 Core Intel Xeon 8gb Ram
2) SSD Itel 330 120GB
3) HDD Seagate ST2000DM001

Поставил Centos 6.3 с последним ядром [root@Apollo /]# uname -a

Linux Apollo 2.6.32-279.11.1.el6.x86_64 #1 SMP Tue Oct 16 15:57:10 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

Находятся и отпределяются диски так
[root@Apollo /]# dmesg
scsi 0:0:0:0: Direct-Access ATA ST2000DM001-1CH1 CC43 PQ: 0 ANSI: 5
mptsas: ioc0: attaching sata device: fw_channel 0, fw_id 1, phy 1, sas_addr 0x1221000001000000
scsi 0:0:1:0: Direct-Access ATA INTEL SSDSC2CT12 300i PQ: 0 ANSI: 5
ata_piix 0000:00:1f.1: version 2.13
ata_piix 0000:00:1f.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16
ata_piix 0000:00:1f.1: setting latency timer to 64
scsi1 : ata_piix
scsi2 : ata_piix
ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0xfc00 irq 14
ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xfc08 irq 15
ata2: port disabled. ignoring.
ata1.00: ATAPI: TEAC DVD-ROM DV28EV, D.AG, max UDMA/33
ata1.00: configured for UDMA/33
scsi 1:0:0:0: CD-ROM TEAC DVD-ROM DV28EV D.AG PQ: 0 ANSI: 5
sd 0:0:0:0: [sda] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB)
sd 0:0:1:0: [sdb] 234441648 512-byte logical blocks: (120 GB/111 GiB)
sd 0:0:1:0: [sdb] Write Protect is off
sd 0:0:1:0: [sdb] Mode Sense: 73 00 00 08
sd 0:0:1:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 73 00 00 08
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sdb: sdb1
sda: sda1 sda2 sda3
sd 0:0:1:0: [sdb] Attached SCSI disk
sd 0:0:0:0: [sda] Attached SCSI disk
sr0: scsi3-mmc drive: 62x/62x cd/rw xa/form2 cdda tray
Uniform CD-ROM driver Revision: 3.20
sr 1:0:0:0: Attached scsi CD-ROM sr0
EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts:
dracut: Mounted root filesystem /dev/sda1

[root@Apollo /]# fdisk -l
Device Boot Start End Blocks Id System
/dev/sda1 * 1 38245 307200000 83 Linux
/dev/sda2 38245 40285 16384000 82 Linux swap / Solaris

Disk /dev/sdb: 120.0 GB, 120034123776 bytes
32 heads, 32 sectors/track, 228946 cylinders
Units = cylinders of 1024 * 512 = 524288 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002c743
Device Boot Start End Blocks Id System
/dev/sdb1 2 228946 117219840 83 Linux

[root@Apollo /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 289G 7.2G 267G 3% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
/dev/sdb1 111G 2.2G 103G 3% /www_sdd
size=3G 3.9G 2.1G 1.9G 53% /RAM

Делал такие тесты: на Intel SDD /dev/sdb
[root@Apollo www_sdd]# echo 3 > /proc/sys/vm/drop_caches
[root@Apollo www_sdd]# dd if=output of=/RAM/output bs=8k count=256k
262144+0 records in
262144+0 records out
2147483648 bytes (2.1 GB) copied, 15.8175 s, 136 MB/s

[root@Apollo www_sdd]# hdparm -tT /dev/sdb
/dev/sdb:
Timing cached reads: 12848 MB in 2.00 seconds = 6434.42 MB/sec
Timing buffered disk reads: 290 MB in 3.02 seconds = 96.11 MB/sec

Такие на HDD Seagate /dev/sda
[root@Apollo www_sdd]# echo 3 > /proc/sys/vm/drop_caches
[root@Apollo www_sdd]# dd if=/output of=/RAM/output bs=8k count=256k
262144+0 records in
262144+0 records out
2147483648 bytes (2.1 GB) copied, 10.545 s, 204 MB/s

[root@Apollo www_sdd]# hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 13114 MB in 2.00 seconds = 6567.87 MB/sec
Timing buffered disk reads: 546 MB in 3.01 seconds = 181.43 MB/sec

HDD быстрее SSD???!!! что я не так делаю?



Последнее исправление: Alex_zp (всего исправлений: 1)

Имею очень низкую производительность SSD винта. около 130Мб/сек

А ты читаешь или пишешь? И оформи все в лор-код.

cipher ★★★★★
()

А сколько ты хочешь получить с 8к блоком? Давай покажи результат с bs=64k, 128 и 256. В один поток тоже сомнительно на ssd получить максимальную пропускную способность.

TuxR ★★★★
()

[root@Apollo www_sdd]# dd if=output of=/RAM/output bs=8k count=256k

А вместо такого теста лучше с блочного устройства читать для большей объективности:

# time dd if=/dev/sdb of=/dev/null bs=1M

И systat поставить, чтобы iostat был.

TuxR ★★★★
()
Ответ на: комментарий от TuxR

[root@Apollo www_sdd]# time dd if=output of=/dev/null bs=4M
512+0 records in
512+0 records out
2147483648 bytes (2.1 GB) copied, 15.8196 s, 136 MB/s

real 0m16.114s
user 0m0.001s
sys 0m2.005s

Запустил два dd паралельно и третим iostat -m 2
1)dd if=output of=/dev/null bs=4M
5512+0 records in
512+0 records out
2147483648 bytes (2.1 GB) copied, 30.2614 s, 71.0 MB/s

2)dd if=output1 of=/dev/null bs=4M
500+0 records in
500+0 records out
2097152000 bytes (2.1 GB) copied, 29.8918 s, 70.2 MB/s

iostat -m 2
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 1.38 17.98 0.00 80.64
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdb 1063.50 132.94 0.00 265 0
sda 0.50 0.00 0.00 0 0
scd0 0.00 0.00 0.00 0 0

Подключал сегодня к Видовс 7 и SATA2на матери, Аида64 тоже показала 120мб рандомное чтение и 170мб/с из буфера.

Жесткий показывает
time dd if=/output of=/dev/null bs=4M
512+0 records in
512+0 records out
2147483648 bytes (2.1 GB) copied, 10.4675 s, 205 MB/s

real 0m10.508s
user 0m0.002s
sys 0m2.029s

Просто какой трындец... Кроме как что диск поломатый ничего в голову не приходит.

Alex_zp
() автор топика
Ответ на: комментарий от Alex_zp

Что такое «if=output» и почему не «if=/dev/sdb»?

mky ★★★★★
()
Ответ на: комментарий от Alex_zp

Если у вас сомнения в состоянии диска, попробуйте «Intel SSD Toolbox», хоть он и под оффтопик, но может что-нибудь полезное сообщит.

mky ★★★★★
()
Ответ на: комментарий от Lindows

где ahci ?


В PowerEdge 1950, в настройках его райд контроллера нет такой опции :(

Что такое «if=output» и почему не «if=/dev/sdb»?


output это файл рандомных данных на примари разделе ssd.

Ставил на домашний тазик только что.... В биосе не нашел AHCI режим, но отключил sata spread... Софтина Intell Tollbxo ssd не смогла опознать его, пишет model unknow :(. Остальные два домашних винта опознал корректно.
Crystal mark тоже показал 127мб/сек. чтения с ssd intel 330. Вот ещё на работе сейчас погоняю на другом тазике.

Alex_zp
() автор топика
Ответ на: комментарий от Alex_zp

Не знаю, почему такая низкая скорость последовательного чтения, но как выше сказали, лучше читать напрямую с устройства, и с iflag / oflag direct.

Так или иначе ahci, по возможности, лучше включить. Фороникс не даст соврать +)

Ну и можно прогнать fio, хотябы с randomread и iodepth=32. Может иопсы хотябы на месте?

Lindows
()
Ответ на: комментарий от Lindows

Пол дня тестировал диск на различных кампах и чипсетах.
В тестах участвовал разнообразный софт но все под виндой 7 и ХР
Больше всех на чипсете с поддерхкой SATA 3 показал ATTO Disk Benchmark 450Mб/с записи на 360Мб/с чтения О_о. Iometer RC1 при самых «шоколадных» настройках: повторяющиеся данные, 2Мб/блок, 4 глубина очереди, показывал в среднем 320-340мб/с при последовательном и рандомном чтении, при рандомном чтении падало немного средняя скорость доступа.
Другие тесты показывали скорость в районе 300 Мб/с.
Iometr при блоке в 512 байт выдал 15000 иопсов.
Intel SSD Tollbox определил нормально диск и сказал что все с ним ок.

Сделал вывод что с диском все нормально.
Значит не нормально или с Dell1950(Perc 6i райд контроллер) или с Centos дровами а точнее режимом работы. Может это SATA 1??? как узнать какой тип SATA применился к устройству?

Alex_zp
() автор топика
Ответ на: комментарий от Alex_zp

На Dell 1950 все тесты показывают примерно 133Мб/сек.
Учитывая лог ниже возможно это UDMA133???
Как это исправить под Centos?

scsi0 : ioc0: LSISAS1068E B3, FwRev=00192f00h, Ports=1, MaxQ=266, IRQ=16
mptsas: ioc0: attaching sata device: fw_channel 0, fw_id 0, phy 0, sas_addr 0x1221000000000000
scsi 0:0:0:0: Direct-Access ATA ST2000DM001-1CH1 CC43 PQ: 0 ANSI: 5
mptsas: ioc0: attaching sata device: fw_channel 0, fw_id 1, phy 1, sas_addr 0x1221000001000000
scsi 0:0:1:0: Direct-Access ATA INTEL SSDSC2CT12 300i PQ: 0 ANSI: 5
ata_piix 0000:00:1f.1: version 2.13
ata_piix 0000:00:1f.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16
ata_piix 0000:00:1f.1: setting latency timer to 64
scsi1 : ata_piix
scsi2 : ata_piix
ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0xfc00 irq 14
ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xfc08 irq 15
alloc irq_desc for 23 on node -1
alloc kstat_irqs on node -1
ata_piix 0000:00:1f.2: PCI INT C -> GSI 23 (level, low) -> IRQ 23
ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ]
ata2: port disabled. ignoring.
ata_piix 0000:00:1f.2: setting latency timer to 64
scsi3 : ata_piix
scsi4 : ata_piix
ata3: SATA max UDMA/133 cmd 0xcc78 ctl 0xcc70 bmdma 0xcc40 irq 23
ata4: SATA max UDMA/133 cmd 0xcc60 ctl 0xcc58 bmdma 0xcc48 irq 23
ata1.00: ATAPI: TEAC DVD-ROM DV28EV, D.AG, max UDMA/33
ata1.00: configured for UDMA/33
scsi 1:0:0:0: CD-ROM TEAC DVD-ROM DV28EV D.AG PQ: 0 ANSI: 5
Initializing USB Mass Storage driver...

PS Как изменить ata_piix на SATA или что там нужно :)

Alex_zp
() автор топика
Ответ на: комментарий от Alex_zp

Вообще странно это, ибо я в гугле не нашел нигде, чтобы эмуляция IDE понижала скорость..

В свое время я переключал чипсет в этот режим на дешевой материнке асуса с ich10, там тоже в биосе не было этой возможности. Вариантов было два: править dsdt в биосе/загружать ее при старте ядра или заюзать патч который переключал контроллер при загрузке драйвера ядром.

патч у меня остался, правда я не уверен в его работе(с тех пор прошло два года) и я не уверен что это весь патч +)

root@minako-x1(0:41)#cat enable_achi_ich.c 
--- linux-2.6.24-rc2.orig/drivers/pci/quirks.c
+++ linux-2.6.24-rc2/drivers/pci/quirks.c
@@ -466,6 +466,38 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH8_2, quirk_ich6_lpc_acpi );
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH8_3, quirk_ich6_lpc_acpi );

+static void __devinit quirk_ich_sata(struct pci_dev *dev)
+{
+ u32 ahci_bar;
+
+ pci_read_config_dword(dev, 0x24, &ahci_bar);
+ if (!ahci_bar) {
+ return;
+ }
+
+ if ((dev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
+ pci_write_config_byte(dev, PCI_CLASS_PROG, 0x01);
+ pci_write_config_byte(dev, PCI_CLASS_DEVICE, 0x06);
+ }
+ dev->class = PCI_CLASS_STORAGE_SATA_AHCI;
+ printk (KERN_INFO "PCI_CLASS_STORAGE_SATA_AHCI set for %s\n",
+ pci_name(dev));
+}
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2652, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2653, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x27c0, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x27c4, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2680, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2820, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2825, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2828, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2920, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2921, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2926, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2928, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x292d, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x292e, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x3a20, quirk_ich_sata);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x3a26, quirk_ich_sata);
+
/*
* VIA ACPI: One IO region pointed to by longword at
* 0x48 or 0x20 (256 bytes of ACPI registers)

Теоретически можно подправить, добавив нужные pci id.

Но вообще это не нормально, что в современном железе нету возможности включить ahci в биосе. Может стоит еще раз посмотреть?

Lindows
()
Ответ на: комментарий от tazhate

/etc/fstab покажи.

fstab пустой, руками монтирую sdd с trim discard-om включаю.

Похоже это глюк контроллера сервака Perc 6/IR

Alex_zp
() автор топика
Ответ на: комментарий от Alex_zp

Чтение с устройства такое.
[root@Apollo dev]# dd if=/dev/sdb of=/dev/zero
^C968775+0 records in
968774+0 records out
496012288 bytes (496 MB) copied, 3.77968 s, 131 MB/s

[root@Apollo dev]# dd if=/dev/sdb of=/dev/zero bs=4k
^C106749+0 records in
106748+0 records out
437239808 bytes (437 MB) copied, 3.32807 s, 131 MB/s

[root@Apollo dev]# dd if=/dev/sdb of=/dev/zero bs=1M
^C500+0 records in
499+0 records out
523239424 bytes (523 MB) copied, 3.9903 s, 131 MB/s

Alex_zp
() автор топика
Ответ на: комментарий от Alex_zp

Linux оказался не причем.
Контроллер SAS 6/IR с этим SSD 330 Intel договаривается на 1,5Gb/s
нашел эту запись в настройка диска на контроллере.
То есть пишет
Maximum Link speed 3.0 Gb/s
Negotiated Link Speed 1,5Gb/s
А с Seagate 2Tb договаривается на 3 Gb/s.
Полный аут.
Читал что соседние на контроллере диски могут понижать производительность SSD но оствшись в шаси один SSD все равно договорился на 1,5 Gb/s.

Alex_zp
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.