Как включить NCQ на Intel® H61 chipset?

Здравствуйте. Проапгрейдился AMD -> Intel.
Установил Leap 15.2. Расстроила тормозная дисковая подсистема. Вспомнил, что обсуждалось здесь:
https://forums.opensuse.org/showthread.php/537001-Leap-15-1-и-старое-железо-(swap-acpi-NVIDIA-usb-mouse)
В BIOS включил AHCI. Стало лучше, но недостаточно. На сейчас имею:

~> dmesg | grep NCQ
    1.792290] ata2.00: 1953525168 sectors, multi 16: LBA48 NCQ (depth 32), AA
~> zgrep AHCI /proc/config.gz 
CONFIG_SATA_AHCI=y
CONFIG_SATA_AHCI_PLATFORM=m
CONFIG_SATA_ACARD_AHCI=m

Как включить NCQ?

Извините, сразу не разобрался. Надо пересобрать ядро.

для использования NCQ потребуется выбрать Noop как планировщик по умолчанию. Аналогично включаем из make menuconfig:
Enable the block layer —> IO Schedulers —> Default I/O scheduler

Для меня на данном этапе проще переустановить Leap.
Тема закрыта.

Ну вы прям скажете.
В пакетных дистрибутивах не пересобирают ядро.

Ну, погорячился по дремучести.

AHCI включился, чипсет и винт поддерживают NCQ, а система об этом не знает.
Верна ли цитата применительно к Leap 15.2 или есть иной способ включить NCQ, помимо make menuconfig?
Похоже, без Svyatko не разобраться. Он вывел меня из благого неведения.

Как вы это определяете?

А может и знает:

~> cat /sys/block/sda/queue/scheduler
mq-deadline kyber [bfq] none

Если none означает отсутствие программной оптимизации доступа. Как вы считаете?

NCQ аппаратная фича и она включена. Так?
Чтобы не толкались, программную оптимизацию логично отключить. Так?
Для этого источники рекомендуют выбрать Noop sheduler:
http://syslinux.ru/node/451
https://forums.opensuse.org/showthread.php/458969-Тормоза-при-копировании

Видите ли, на AMD чипсете выглядело следующим образом:

~> dmesg | grep NCQ
    3.320348] sata_nv 0000:00:0e.0: Using SWNCQ mode
    3.850648] ata1.00: 976773168 sectors, multi 16: LBA48 NCQ (depth 31/32)

Меня смутило отсутствие подобия первой строчки на Intel. Разбираюсь потихоньку.

да

Чтобы не толкались, программную оптимизацию логично отключить. Так?

Может быть. Основная задача современных планировщиков - распределить ограниченные ресурсы В/В между процессами с учетом их приоритетов. Вынося планировщик за пределы ядра вы теряете эту возможность.

Для этого источники рекомендуют выбрать Noop sheduler:

За десять лет много что изменилось. В любом случае, пересобирать ядро для этого не требуется.

Пробуйте, какой вариант больше подходит вам лично.

~> dmesg | grep NCQ
    3.320348] sata_nv 0000:00:0e.0: Using SWNCQ mode
    3.850648] ata1.00: 976773168 sectors, multi 16: LBA48 NCQ (depth 31/32)
Меня смутило отсутствие подобия первой строчки на Intel.

А почему собственно на Intel должны быть сообщения драйвера nForce?

Надеюсь, что тут есть люди более сведущие, чем я.

Leap 15.2 будет снят с поддержки через месяц - два. Пора уже Leap 15.3 ставить.

Наличие NCQ лучше смотреть командой


:~> dmesg | grep -i ncq

, чтобы не путаться с большими - малыми буквами.

Про накопители расскажут команды


:~> dmesg | grep -i ata
:~> dmesg | grep -i ahci

Для включения NCQ пересобирать ядро и менять конфиги точно не надо. Обычно оно “просто работает”.
NCQ может не работать из-за контроллера SATA на плате или из-за глюков у диска или из-за сочетания железа (чипсеты ATI/AMD + Samsung SATA SSD).

В настоящее время накопители SSD стоят достаточно дёшево, чтобы на них ставить ОС (хватит и 64-128 ГБ).
Смысла брать Intel H61 почти нет - только если за бесплатно отдали. Подержаная сборка на AM4 стоит ненамного дороже более древнего старья.

Приведите вывод команды “dmesg | grep -i ncq” и полное название материнской платы.
Возможно, NCQ уже работает. Вспоминая прежнее обсуждение: возможно, на накопителе установлен джампер, включающий SATA I (SATA 150).

Судя по Обзор материнской платы Intel DH61BE на Intel H61 Express GECID.com. у Intel H61 AHCI не поддерживается. Может быть распаян дополнительный контроллер SATA - тогда к нему нужно подключать накопитель.
Если распаянного контроллера нет, то нужно добавлять контроллер SATA на PCIe, или ставить NVME SSD через переходник (если есть свободный разъём), ну а лучше всего поменять сборку на более новую.
На A320/B350/X370 и некоторых других работают процессоры Bristol Ridge, которые сейчас сильно дёшевы.

2Svyatko
Привет.
MSI H61M-E33(B3) с Intel Core i3-2100. У Intel есть прошивка BIOS свежее текущей.

Не покупал, но подоспела вовремя: на предыдущей вспухли электролиты.
Понятное дело, хотелось бы получить максимум приятности без ущерба стабильности.
Эта старая борда круче предыдушей и есть потенциал к апгрейду, а на Али сейчас много подходящиего с тамошних разборок по сходной цене.
На современное железо, признаюсь честно, денег нет. Буду работать с тем что досталось и мучать форум дурацкими вопросами. Про пересборку ядра Lazy_Kent уже деликатно предупредил, что пургу несу.

К теме. По моему, AHCI и NCQ таки работают. Как вы считаете?

~> dmesg | grep -i ncq
    1.454966] ahci 0000:00:1f.2: flags: 64bit ncq sntf pm led clo pio slum part ems apst 
    1.776065] ata2.00: 1953525168 sectors, multi 16: LBA48 NCQ (depth 32), AA

~> dmesg | grep -i ata
    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.3.18-lp152.95-default root=UUID=ca383181-5b2b-4271-9ace-49e696609d8e splash=silent resume=/dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J9EB601355-part7 quiet mitigations=auto
    0.000000] BIOS-e820: [mem 0x00000000bad17000-0x00000000bad1efff] ACPI data
    0.040256] NODE_DATA(0) allocated [mem 0x13fde7000-0x13fdfcfff]
    0.154285] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.3.18-lp152.95-default root=UUID=ca383181-5b2b-4271-9ace-49e696609d8e splash=silent resume=/dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J9EB601355-part7 quiet mitigations=auto
    0.175331] Memory: 3068308K/4104116K available (12291K kernel code, 1474K rwdata, 4244K rodata, 2176K init, 12968K bss, 193636K reserved, 0K cma-reserved)
    0.219550] MDS CPU bug present and SMT on, data leak possible. See https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/mds.html for more details.
    0.261155] libata version 3.00 loaded.
    1.454964] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 4 ports 3 Gbps 0x2 impl SATA mode
    1.455571] ata1: DUMMY
    1.455573] ata2: SATA max UDMA/133 abar m2048@0xfe405000 port 0xfe405180 irq 24
    1.455573] ata3: DUMMY
    1.455574] ata4: DUMMY
    1.770293] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
    1.776062] ata2.00: ATA-8: SAMSUNG HD103SJ, 1AJ10001, max UDMA/133
    1.776065] ata2.00: 1953525168 sectors, multi 16: LBA48 NCQ (depth 32), AA
    1.781904] ata2.00: configured for UDMA/133
    1.782113] scsi 1:0:0:0: Direct-Access     ATA      SAMSUNG HD103SJ  0001 PQ: 0 ANSI: 5
    1.855575] Write protecting the kernel read-only data: 20480k
   11.134665] EXT4-fs (sda6): mounted filesystem with ordered data mode. Opts: data=ordered

~> dmesg | grep -i ahci
    1.454846] ahci 0000:00:1f.2: version 3.0
    1.454964] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 4 ports 3 Gbps 0x2 impl SATA mode
    1.454966] ahci 0000:00:1f.2: flags: 64bit ncq sntf pm led clo pio slum part ems apst 
    1.455271] scsi host0: ahci
    1.455379] scsi host1: ahci
    1.455454] scsi host2: ahci
    1.455532] scsi host3: ahci

Пора открывать сиквел “Leap 15.3 и старое железо”.

Сильно сомнительно. На плате есть место для разъёмов SATA 3,4 - но они не распаяны, видимо, доп. контроллера нет.

https://ata.wiki.kernel.org/index.php/Libata_FAQ

Посмотреть используемую длину очереди команд можно так:

cat /sys/block/sda/device/queue_depth

Вместо sda м.б. sdb, sdc, …

Можно в БИОСе вместо AHCI поставить IDE и посмотреть, изменится ли скорость случайной записи/чтения.

С биос все и началось. Когда выставил AHCI вместо IDE стало ощутимо веселее.

~> cat /sys/block/sda/device/queue_depth
32

На моей распаян вертикально сдвоенный SATA. И в названии присутствует ревизия? (B3).

~> sudo dmidecode -t 2
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.

Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
        Manufacturer: MSI
        Product Name: H61M-E33 (MS-7680)
        Version: 2.0
        Serial Number: To be filled by O.E.M.
        Asset Tag: To be filled by O.E.M.
        Features:
                Board is a hosting board
                Board is replaceable
        Location In Chassis: To be filled by O.E.M.
        Chassis Handle: 0x0003
        Type: Motherboard
        Contained Object Handles: 0

Вроде как очередь не должна быть = 32, пределом должен быть 31.
Можно померить IOPS-ы, сравнить IDE - AHCI - отдельный контроллер с NCQ.
С NCQ IOPS-ы должны быть в разы больше, чем без этого.

Можно посмотреть SMART накопителя с помощью GSmartControl.

Эвона как все повернулось. Действительно, в спецификации Intel H61 об AHCI ни слова. Цитата с Q&A community.intel.com:

…of all the SKUs of the 6 Series chipset, the H61 is the only one that doesn’t support AHCI.
А по всему он есть. В H61 USB 3.0 тоже нет. А на борту, судя по руководству, есть.

В биос выбор SATA mode: Disabled/IDE/AHCI. C IDE в Leap 15.3 выглядит так:

# dmesg | grep -i ncq
    2.630864] ata2.00: 1953525168 sectors, multi 16: LBA48 NCQ (depth 0/32)

# dmesg | grep -i ata
    0.000000] BIOS-e820: [mem 0x00000000bad1a000-0x00000000bad21fff] ACPI data
    0.040006] NODE_DATA(0) allocated [mem 0x13fdd2000-0x13fdfcfff]
    0.172287] Memory: 3063436K/4104132K available (12291K kernel code, 2236K rwdata, 4592K rodata, 2632K init, 13908K bss, 198680K reserved, 0K cma-reserved)
    0.217725] MDS CPU bug present and SMT on, data leak possible. See https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/mds.html for more details.
    1.563700] Write protecting the kernel read-only data: 20480k
    2.272393] libata version 3.00 loaded.
    2.301521] ata_piix 0000:00:1f.2: version 2.13
    2.301646] ata_piix 0000:00:1f.2: MAP  P0 P2 P1 P3 ]
    2.459682] ata_piix 0000:00:1f.2: SCR access via SIDPR is available but doesn't work
    2.460793] scsi host0: ata_piix
    2.461044] scsi host1: ata_piix
    2.461105] ata1: SATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0xf0d0 irq 14
    2.461107] ata2: SATA max UDMA/133 cmd 0x170 ctl 0x376 bmdma 0xf0d8 irq 15
    2.461214] ata_piix 0000:00:1f.5: MAP  P0 -- P1 -- ]
    2.620817] ata_piix 0000:00:1f.5: SCR access via SIDPR is available but doesn't work
    2.621889] scsi host2: ata_piix
    2.621986] scsi host3: ata_piix
    2.622044] ata3: SATA max UDMA/133 cmd 0xf0b0 ctl 0xf0a0 bmdma 0xf070 irq 19
    2.622046] ata4: SATA max UDMA/133 cmd 0xf090 ctl 0xf080 bmdma 0xf078 irq 19
    2.630862] ata2.00: ATA-8: SAMSUNG HD103SJ, 1AJ10001, max UDMA/133
    2.630864] ata2.00: 1953525168 sectors, multi 16: LBA48 NCQ (depth 0/32)
    2.652189] scsi 1:0:0:0: Direct-Access     ATA      SAMSUNG HD103SJ  0001 PQ: 0 ANSI: 5
    3.981173] EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts: (null)
    8.046609] systemd[1]: Condition check resulted in Rebuild Hardware Database being skipped.
    8.788674] EXT4-fs (sda6): mounted filesystem with ordered data mode. Opts: (null)

# dmesg | grep -i ahci
# cat /sys/block/sda/device/queue_depth
1

Интересный ресурс; https://smarthdd.com/rus/ (там и результаты тестирования всевозможных моделей дисков).
Цитата оттуда:

…необходимо выполнение трех требований:

  • Поддержка жестким диском NCQ.
  • Для обеспечения операций “First Party DMA” и оперативного завершения работы с каждой командой контроллер материнской платы должен поддерживать установки “DMA Setup FIS” и “Set Device Bits FIS”.
  • Драйвер системы должен определять наличие поддержки NCQ и использовать команды “FPDMA Queued”.

Первый пункт - в наличии. Второй - ну, допустим c AHCI поддерживает. Третий - ?

Из вашего источника:

Linux NCQ (SATA native command queueing) support is enabled automatically, if your SATA drive supports it. At boot, you will see a line in dmesg (or kernel log) like
ata2.00: ATA-7, max UDMA/133, 321672960 sectors: LBA48 NCQ (depth 31/32)

Имею:

~> sudo dmesg | grep -i ncq
    2.271450] ahci 0000:00:1f.2: flags: 64bit **ncq** sntf pm led clo pio slum part em
s apst  
    2.639619] ata2.00: 1953525168 sectors, multi 16: LBA48 **NCQ** (depth 32), AA

Значит третий - да.