On Mon, Oct 20, 2008 at 12:30:14AM +0300, Michael Shigorin wrote: > On Mon, Oct 20, 2008 at 12:08:30AM +0300, Led wrote: > > > > А что, ahci лучше, чем нативные драйвера? Я что-то пропустил? > > > Оно может уметь NCQ, хотя сейчас домашний характер нагрузок > > > сильно изменился tmpfs и увеличением объёма памяти... > > У меня на 2.6.22 sata_nv с NCQ... > > ata1.00: ATA-8: Hitachi HDP725050GLA360, GM4OA52A, max UDMA/133 > ata1.00: 976771055 sectors, multi 16: LBA48 NCQ (depth 0/32) > ^^^^^^^^ > Гм. Везде пишут, что этот диск NCQ может. depth 0/N означает, что диск умеет NCQ (в противном случае эта часть строки вообще бы не появилась), а вот контроллер (или драйвер) не умеет. С NCQ на nvidia всё как-то очень мутно, не в последнюю очередь из-за совершенно непонятной системы обозначений чипсетов (в драйверах только обозначения типа MCP55, MCP65, таблица с соответствием номеров 4xx/5xx этим MCP мне не попадалась). По драйверу sata_nv ситуация следующая: - В совсем старых чипсетах (NFORCE2, NFORCE3) поддержка NCQ не реализована аппаратно. - В CK804 и MCP04 реализована поддержка NCQ в режиме ADMA, однако с работой этого режима остались проблемы, в результате поддержка ADMA, добавленная в 2.6.20, была выключена в 2.6.26 (при желании её можно включить параметром adma_enabled=1). - В MCP51 и MCP55 для поддержки NCQ используется режим SWNCQ (в котором, судя по коду драйвера, действительно выполняется программное переключение между передачей данных для разных команд в очереди, в отличие от AHCI, где контроллер занимается этим самостоятельно и выставляет запрос прерывания только после полного завершения обработки команды). Поддержка этого режима была добавлена в 2.6.24 (в выключенном по умолчанию состоянии), и включается автоматически в 2.6.26 (в случае проблем можно отключить параметром swncq_enabled=0). - В MCP61 поддержка NCQ не работает (первый патч для SWNCQ включал поддержку и для этого чипа, но потом её отключили, ссылаясь на некую аппаратную ошибку). Более новые версии чипов поддерживаются драйвером ahci - в списке поддерживаемых контроллеров MCP65, MCP67, MCP73, MCP77, MCP79, MCP7B. При этом в 2.6.26 добавили обход ошибки в контроллерах MCP65 - эти контроллеры поддерживают NCQ, но не устанавливают соответствующий бит в HOST_CAP, в результате с предыдущими версиями драйвера NCQ на таких контроллерах не работает. Кроме того, у некоторых аппаратных версий MCP65 (PCI rev 0xa1 и 0xa2) заявляется, но неработоспособен режим MSI; обход этой ошибки тоже добавили в 2.6.26, в предыдущих версиях с такими контроллерами, вероятно, придётся использовать опцию pci=nomsi.