nixp.ru v3.0

20 октября 2017,
пятница,
10:06:01 MSK

DevOps с компанией «Флант»
Spirtus написал 8 апреля 2008 года в 17:51 (1283 просмотра) Ведет себя как мужчина; открыл 2 темы в форуме, оставил 14 комментариев на сайте.

Система OpenSuSE 10.3 64 бит на nForce4

При hdparm -i /dev/sda получаю

/dev/sda:

Model=WDC WD1600JS-22MHB0 , FwRev=02.01C03, SerialNo= WD-WCANM7737470

Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }

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

BuffType=unknown, BuffSize=8192kB, MaxMultSect=16, MultSect=?16?

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

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

PIO modes: pio0 pio3 pio4

DMA modes: mdma0 mdma1 mdma2

UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5

AdvancedPM=no WriteCache=enabled

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

* signifies the current active mode

(но * нигде не стоит)

Делаем dmesg и видим

scsi0 : pata_amd

scsi1 : pata_amd

ata1: PATA max UDMA/133 cmd 0×000101f0 ctl 0×000103f6 bmdma 0×0001f400 irq 14

ata2: PATA max UDMA/133 cmd 0×00010170 ctl 0×00010376 bmdma 0×0001f408 irq 15

ata2.00: ATAPI: LITE-ON DVDRW SHM-165P6S, MS0P, max UDMA/66

ata2.00: limited to UDMA/33 due to 40-wire cable

ata2.00: configured for UDMA/33

scsi 1:0:0:0: CD-ROM LITE-ON DVDRW SHM-165P6S MS0P PQ: 0 ANSI: 5

sata_nv 0000:00:0e.0: version 3.4

ACPI: PCI Interrupt Link [APSI] enabled at IRQ 23

ACPI: PCI Interrupt 0000:00:0e.0[A] -> Link [APSI] -> GSI 23 (level, low) -> IRQ 16

PCI: Setting latency timer of device 0000:00:0e.0 to 64

scsi2 : sata_nv

scsi3 : sata_nv

ata3: SATA max UDMA/133 cmd 0×000109f0 ctl 0×00010bf2 bmdma 0×0001e000 irq 16

ata4: SATA max UDMA/133 cmd 0×00010970 ctl 0×00010b72 bmdma 0×0001e008 irq 16

ata3: SATA link down (SStatus 0 SControl 300)

ata4: SATA link up 3.0 Gbps (SStatus 123 SControl 300)

ata4.00: ATA-7: WDC WD1600JS-22MHB0, 02.01C03, max UDMA/133

ata4.00: 312581808 sectors, multi 16: LBA48

ata4.00: configured for UDMA/133

scsi 3:0:0:0: Direct-Access ATA WDC WD1600JS-22M 02.0 PQ: 0 ANSI: 5

Но после hdparm /dev/sda получаем

/dev/sda:

IO_support = 0 (default 16-bit)

HDIO_GET_UNMASKINTR failed: Inappropriate ioctl for device

HDIO_GET_DMA failed: Inappropriate ioctl for device

HDIO_GET_KEEPSETTINGS failed: Inappropriate ioctl for device

readonly = 0 (off)

readahead = 256 (on)

geometry = 19457/255/63, sectors = 312581808, start = 0

Пытаемся hdparm -c3 /dev/sda

/dev/sda:

setting 32-bit IO_support flag to 3

HDIO_SET_32BIT failed: Invalid argument

IO_support = 0 (default 16-bit)

а также hdparm -d1 /dev/sda

/dev/sda:

setting using_dma to 1 (on)

HDIO_SET_DMA failed: Inappropriate ioctl for device

HDIO_GET_DMA failed: Inappropriate ioctl for device

Подскажите плз, как заставить лыжи ехать (или просветите на тему моих умственно-физических отклонений)

PS По hdparm -tT /dev/sda выдается

/dev/sda:

Timing cached reads: 592 MB in 2.00 seconds = 295.50 MB/sec

Timing buffered disk reads: 160 MB in 3.01 seconds = 53.09 MB/sec

pol

ну и нормальная адекватная скорость, в чём проблема?

Spirtus
Spirtus
Система OpenSuSE 10.3 64 бит на nForce4

Но после hdparm /dev/sda получаем

/dev/sda:

IO_support = 0 (default 16-bit)

HDIO_GET_UNMASKINTR failed: Inappropriate ioctl for device

HDIO_GET_DMA failed: Inappropriate ioctl for device

HDIO_GET_KEEPSETTINGS failed: Inappropriate ioctl for device

readonly = 0 (off)

readahead = 256 (on)

geometry = 19457/255/63, sectors = 312581808, start = 0

Пытаемся hdparm -c3 /dev/sda

/dev/sda:

setting 32-bit IO_support flag to 3

HDIO_SET_32BIT failed: Invalid argument

IO_support = 0 (default 16-bit)

а также hdparm -d1 /dev/sda

/dev/sda:

setting using_dma to 1 (on)

HDIO_SET_DMA failed: Inappropriate ioctl for device

HDIO_GET_DMA failed: Inappropriate ioctl for device

Меня вот это напрягает, поскольку не доверять информации hdparm оснований нет, а это значит, что комп тормозит, что не есть хорошо(

metal
Spirtus
Меня вот это напрягает, поскольку не доверять информации hdparm оснований нет, а это значит, что комп тормозит, что не есть хорошо(

Насколько помню hdparm не умеет работать с sd* дисками, поищи в google, найдешь ответ на свой вопрос.

Spirtus
metal
Насколько помню hdparm не умеет работать с sd* дисками, поищи в google, найдешь ответ на свой вопрос.

Хех! Гуглил я еще перед тем, как задать вопрос. Проблема в том, что мнения не просто диаметрально противоположны — они рабегаются в стороны как тараканы по кухне))) Кто говорит, что hdparm не работает с /dev/sd*, кто — что ядро 2.6.* криво работает с SATA дисками, кто — что у него все работает на ура и корректно. почему возник вопрос, поясню. Результаты теста hdparm кардинально разошлись с контрольным копированием файла на ext3 партиции. Копирование показало ~ 7-9 Мб/сек на файлах различной длины от 1,2 Гб до 72 Мб.

В общем, сегодня вечерком попробую hdparm с параметром -X* или другие тулзы какие-нибудь… По результатам отпишусь (если систему не убью, конечно)%)))

metal
Spirtus
Копирование показало ~ 7-9 Мб/сек на файлах различной длины от 1,2 Гб до 72 Мб.

Тут ничего удивительно, при копировании происходит не только чтение, но и запись, a hdparm делает тест только чтения.

Spirtus
metal
Тут ничего удивительно…

А вот мне удивительно, ибо чую я, что быстрее должно копирование происходить, хоть режьте меня)))

metal


hdparm /dev/sda
/dev/sda:
 IO_support    =  0 (default)
16-bit)
 HDIO_GET_UNMASKINTR failed: Inappropriate ioctl for device
 HDIO_GET_DMA failed: Inappropriate ioctl for device
 HDIO_GET_KEEPSETTINGS failed: Inappropriate ioctl for device
 readonly      =  0 (off)
 readahead     = 256 (on)
 geometry      = 9729/255/63, sectors = 156301488, start = 0

Все-таки я склоняюсь к тому что hdparm не умеет sd*.

И для сравнения:

/dev/sda:
 Timing cached reads:   1360 MB in  2.00 seconds = 680.12 MB/sec
 Timing buffered disk reads:   72 MB in  3.00 seconds =  23.96 MB/sec
Spirtus

Попробовал поиграться с sdparm — ничего путнего не получилось, надо курить доп. инфу (кроме манов).

sendmoreinfo
metal
Все-таки я склоняюсь к тому что hdparm не умеет sd*.

Читаем http://linux-ata.org/faq.html#io32 и далее по тексту

Why doesn’t libata support 32-bit I/O?

Does libata support HDIO_SET_32BIT ioctl?

First, some background. The vast majority of data transfer takes place via DMA. For newer SATA controllers, DMA is a requirement, even for the so-called PIO taskfile data transfers.

PIO taskfile data transfer, a.k.a. I/O data transfer, is only used for rare, slow-path commands such as IDENTIFY DEVICE or SMART READ. 16-bit I/O was hardcoded into libata because this supports the maximal number of controllers with the least amount of code.

Why does HDIO_SET_DMA fail? I want to use DMA!

Why does HDIO_SET_UNMASKINTR fail?

libata intentionally does not support all the HDIO_xxx ioctls that were supported by the older IDE driver. It is now preferred to use SG_IO as a generalized ATA command submission method, rather than creating a myriad of ioctls for each specific purpose.

The design decision was made only to support the HDIO_xxx ioctls that were heavily used by other programs. Generally the driver always programs the hardware to its maximum capability automatically, completely without user intervention. Therefore, for example, HDIO_SET_DMA is not needed for the vast majority of users because DMA is automatically enabled and used where available.

Spirtus

Свежие вести с полей.

Установлена Убунта 8.04, hdparm отображает инфу по дискам (/dev/sd*) корректно. Пока был один винт — скорость копирования в пределах одного раздела была 10-13 Мб/сек. После установки второго винта при копировании была зафиксированна скорость 27-35 Мб/сек…

«Все чудесатее и чудесатее» (с)

Any_Key

да вроде ничего чудесатого, так и должно быть, с одного (только) читает на максимальной скорости на другой (только) пишет, а в пределах одного раздела чтение запись одновременно, собственно скорость ниже.