GNU/Linux >> Znalost Linux >  >> Linux

Jak (skutečně) zakázat NCQ v Linuxu

Díky @frostschutz jsem mohl měřit výkon zápisu v Linuxu bez funkce NCQ. Zaváděcí parametr jádra libata.force=noncq úplně deaktivoval NCQ.

Pokud jde o můj problém s výkonem zápisu Seagate 6TB, rychlost se nezměnila. Linux stále dosahuje 180 MiB/s.

Ale pak mě napadl jiný nápad:
Linuxový ovladač nepoužívá přenosy 32 MiB bloků. Vyrovnávací paměť jádra je mnohem menší, zvláště pokud je povoleno NCQ s 32 frontami (32 front * 32 MiB => 1 GiB vyrovnávací paměť AHCI).

Takže jsem testoval svůj SATA řadič s přenosy 256 kB a voilà, je možné dosáhnout 185 MiB/s.

Takže si myslím, že firmware Seagate ST6000AS0002 není schopen zpracovat velké ATA burst přenosy. Standard ATA umožňuje až 65 536 logických bloků, což se rovná 32 MiB.

SMR – Shingled Magnetic Recording

Další možností špatného zápisu by mohla být technika šindľového magnetického záznamu, kterou v těchto archivačních zařízeních používá Seagate. Je zřejmé, že jsem svou implementací FPGA spustil vzácný efekt.


Nastavení hloubky fronty na 1 (/sys/block/sd*/device/queue_depth ) zakáže NCQ, není nutné používat parametr jádra libata.force=noncq (které lze nastavit pouze při bootování).

commit 360f654e7cda850034f3f6252a7a7cff3fa77356

 Date:   Sat Sep 30 19:45:00 2006 +0900

 [PATCH] libata: turn off NCQ if queue depth is adjusted to 1
 
 Turn off NCQ if queue depth is adjusted to 1.

Linux
  1. Jak zakázat výchozí uvítací stránku Apache na Redhat Linuxu

  2. Jak deaktivovat firewall na CentOS 8 Linux

  3. Jak zakázat automatickou konfiguraci na IPv6 v Linuxu?

  1. Jak zakázat příkazy vypnutí a restartu v Linuxu

  2. Jak zablokovat nebo zakázat normální přihlášení uživatele v Linuxu

  3. Jak změnit, odebrat nebo zakázat uživatelské heslo v systému Linux

  1. UNIX / Linux :Jak zamknout nebo zakázat uživatelský účet

  2. Jak zakázat konkrétní příkaz pro konkrétního uživatele v Linuxu

  3. Jak zakázat ipv6 na konkrétním rozhraní v linuxu?