Автор Тема: AHCI и IDE  (Прочитано 31823 раз)

Оффлайн klark973

  • Завсегдатай
  • *
  • Сообщений: 662
  • Неспящий саппорт
Re: AHCI и IDE
« Ответ #15 : 15.05.2019 03:28:23 »
Эта штука придумана для оптимизации выполнения параллельно поступающих запросов,
Эта штука придумана для минимизации перемещения БМГ и снижения затрат времени на их перемещение.
Да почитайте Википедию уж хотя бы!  :-\ Я проверял на трёхмерных схемах NVME Samsung Pro по IOPs'ам. Работа в один поток даёт примерно 1/30 от заявляемой производителем скорости. Увеличиваем число параллельных потоков до глубины очереди NCQ (32) и получаем максимальную скорость. То есть, NCQ может влиять и на SSD/NVME, а не только HDD.
To moan or to solve -- that is the question!

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: AHCI и IDE
« Ответ #16 : 15.05.2019 04:16:59 »
Ну и почитайте как в винчестере перемещается БМГ.


Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: AHCI и IDE
« Ответ #18 : 15.05.2019 07:43:38 »
Это пишет одна из ссылок, которую даёт википедия ncq
Прирост тем больше, чем больше расстояние между областями, с которыми одновременно работают приложения.

Глупости она пишет.
Вот идея ncq на шпинделях:
https://shopdelta.eu/ncq-native-command-queuing-nativnaya-ochered-komand_l10_aid885.html

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Re: AHCI и IDE
« Ответ #19 : 15.05.2019 08:35:36 »
Увеличиваем число параллельных потоков до глубины очереди NCQ (32) и получаем максимальную скорость. То есть, NCQ может влиять и на SSD/NVME, а не только HDD.
Нет. Правильно писать " до глубины очереди (32)". И это, наверное, так и есть - должно становиться быстрее. NCQ от этой очереди сбоку и используется для обработки этой очереди только для устройств со шпинделем.

Оффлайн klark973

  • Завсегдатай
  • *
  • Сообщений: 662
  • Неспящий саппорт
Re: AHCI и IDE
« Ответ #20 : 15.05.2019 15:51:05 »
Некоторые статьи упоминают, что в современных NVMe имеются "глубокие очереди" (до 65536 команд). Вместе с тем, многие производители NVMe, тот же Samsung, заявляют о поддержке технологии NCQ в своих EVO и PRO. Неужто для перемещения БМГ?  ;-D К примеру, возьмём https://www.storagereview.com/samsung_ssd_845dc_evo_review : Support NCQ: Up to 32 depth И удивительное совпадение, что именно такая глубина очереди почти линейно пропорционально влияет на число операций В/В в секунду при распараллеливании. Собственно, мой месседж был только об этом. Я не знаю, что такое число seeks в отношении SSD! Профессионально (через fio, например) для высоко нагруженных проектов мерить Latency и IOPs'ы. Пузомеркам, показывающим 30-100% прирост непонятных попугаев, в зависимости от глубины неких программных очередей, я бы доверять не стал.

P.S.: https://composter.com.ua/content/nvme-vs-ahci-obzor-razlichiy-2016-01-31
« Последнее редактирование: 15.05.2019 16:03:45 от klark973 »
To moan or to solve -- that is the question!

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: AHCI и IDE
« Ответ #21 : 16.05.2019 04:33:20 »
Официальная документация:
Intel Corporation and Seagate Technology
Цитировать
Serial ATA Native Command Queuing

...
Introduction
...
Native Command Queuing is a command protocol in Serial ATA that allows multiple commands
to be outstanding within a drive at the same time. Drives that support NCQ have an internal
queue where outstanding commands can be dynamically rescheduled or re-ordered, along with
the necessary tracking mechanisms for outstanding and completed portions of the workload.
NCQ also has a mechanism that allows the host to issue additional commands to the drive while
the drive is seeking for data for another command.
Operating systems such as Microsoft Windows* and Linux* are increasingly taking advantage of
multi-threaded software or processor-based Hyper-Threading Technology. These features have
a high potential to create workloads where multiple commands are outstanding to the drive at the
same time. By utilizing NCQ, the potential disk performance is increased significantly for these
workloads.
...
Building a Queue
...
One interesting field is the TAG field in the Sector Count register. Each queued command issued
has a tag associated with it. The tag is a shorthand mechanism used between the host and the
device to identify a particular outstanding command. Tag values can be between 0 and 31,
although the drive can report support for a queue depth less than 32.
...
Transferring Data
NCQ takes advantage of a feature called First Party DMA to transfer data between the drive and
the host. First Party DMA allows the drive to have control over programming the DMA engine for
a data transfer. This is an important enhancement since only the drive knows the current angular
and rotational position of the drive head. The drive can then select the next data transfer to
minimize both seek and rotational latencies. The First Party DMA mechanism is effectively what
allows the drive to re-order commands in the most optimal way.
As an additional optimization, the drive can also return data out-of-order to further minimize the
rotational latency. First Party DMA allows the drive to return partial data for a command, send
partial data for another command, and then finish sending the data for the first command if this is
the most efficient means for completing the data transfers.
...
How Applications Take Advantage of Queuing
The advantages of queuing are only realized if a queue of requests is built to the drive. One
major issue in current desktop workloads is that many applications ask for one piece of data at a
time, and often only ask for the next piece of data once the previous piece of data has been
received. In this type of scenario, the drive is only receiving one outstanding command at a time.
When only one command is outstanding at a time, the drive can perform no re-ordering and all
the benefit of queuing is lost.
Note that with the advent of Hyper-Threading Technology, it is possible to build a queue even if
applications issue one request at a time. Hyper-Threading Technology allows significantly higher
amounts of multi-threading to occur such that multiple applications are more likely to have I/O
requests pending at the same time. However, the best performance improvement can only be
achieved if applications are slightly modified to take advantage of queuing.
The modifications to take advantage of queuing are actually fairly minor. Today most applications
are written to use synchronous I/O, also called blocking I/O. In synchronous I/O, the function call
to read from or write to a file does not return until the actual read or write is complete. In the
future, applications should be written to use asynchronous I/O. Asynchronous I/O is non-
blocking, meaning that the function call to read from or write to a file will actually return before the
request is complete. The application determines whether the I/O has completed by checking for
an event to be signaled or by receiving a callback. Since the call returns immediately, the
application can continue to do useful work, including issuing more read or write file functions.
The preferred method for writing an application that needs to make several different file accesses
is to issue all of the file accesses using non-blocking I/O calls. Then the application can use
events or callbacks to determine when individual calls have completed. If there are a large
number of I/Os, on the order of four to eight, by issuing all of the I/Os at the same time the total
time to retrieve all of the data can be cut in half.
...
« Последнее редактирование: 16.05.2019 06:06:13 от Speccyfighter »

Оффлайн klark973

  • Завсегдатай
  • *
  • Сообщений: 662
  • Неспящий саппорт
Re: AHCI и IDE
« Ответ #22 : 17.05.2019 01:47:19 »
Speccyfighter, что Вы хотели этим сказать? Первые два абзаца полностью подтверждают мой месседж про важность NCQ для SSD/NVMe. Какое отношение к этому имеет приводимый далее пример про DMA и прочие рассуждения про преимущества асинхронного в/в, я так и не понял.
To moan or to solve -- that is the question!

Оффлайн klark973

  • Завсегдатай
  • *
  • Сообщений: 662
  • Неспящий саппорт
Re: AHCI и IDE
« Ответ #23 : 17.05.2019 02:12:20 »
1 Сильно ли отличается производительность HDD AHCI от IDE?
Сравнение двух сферических коней в вакууме ни к чему полезному не приводит, надо сравнивать конкретные модели дисков. А потенциально интерфейс AHCI конечно новее и перспективнее, но опять же, если выполнять единственную команду в консоли, типа dd на одном ядре, едва ли вы добьётесь существенной разницы, если же нагрузка будет параллельной, преимущества AHCI окажутся более очевидными.

2 Есть ли различия для SSD?
Необязательно, но желательно под SSD систему дополнительно тюнинговать. Такой тюнинг для SSD для обычных HDD лучше не делать, поскольку для них это может отрицательно сказаться на производительности. Кроме того, рекомендуется планировать разметку с учётом SSD или HDD по-разному, на SSD всегда важно резервировать дополнительно свободное место. Так что ДА, различия желательно учитывать. Причём, некоторые новые модели SSD и NVMe реализуют TRIM настолько прозрачно, что их монтирование с опцией discard тоже бессмысленно и даже вредно. То есть, ещё и от конкретной модели SSD зависит. Опять же, тюнинг зависит от целеполагания. Можно выжать максимальный средний индекс производительности системы, а можно напротив -- любой ценой максимально продлить срок жизни SSD.

3 Если Альт установлен с IDE, то с AHCI он не стартанет?
Вопрос не совсем понятно сформулирован. Если система установлена на одно железо и потом перенесена на другое железо, для привязки к новому железу достаточно запустить в чруте всего одну команду: make-initrd. Драйвер может быть тот же, тогда не требуется, но вообще-то старые IDE-only драйверы в Альте тоже есть, просто они давно не используются.

# find /lib/modules/$(uname -r)/kernel/drivers/ata -name 'pata*' | wc -l
42
# modinfo pata_legacy ata_piix ahci |grep description:
description:    low-level driver for legacy ATA
description:    SCSI low-level driver for Intel PIIX/ICH ATA controllers
description:    AHCI SATA low-level driver

4 Если Альт установлен на USB флешку с IDE, влиляют ли переключения режимов AHCI и IDE?
Вот так лучше никогда не делать. На худой конец запишите на флэшку ISO-образ альта и запускайтесь с неё в режиме Live с сохранением сеанса.
« Последнее редактирование: 17.05.2019 02:42:40 от klark973 »
To moan or to solve -- that is the question!

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: AHCI и IDE
« Ответ #24 : 17.05.2019 05:50:15 »
1 Сильно ли отличается производительность HDD AHCI от IDE?
Сравнение двух сферических коней в вакууме ни к чему полезному не приводит,

Вы не понимаете о чём спросил пользователь.

3 Если Альт установлен с IDE, то с AHCI он не стартанет?
Вопрос не совсем понятно сформулирован.

Вопрос сформулирован понятно.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: AHCI и IDE
« Ответ #25 : 17.05.2019 06:02:20 »
3 Если Альт установлен с IDE, то с AHCI он не стартанет?

Не стартанёт.

1 Сильно ли отличается производительность HDD AHCI от IDE?

Посмотрите тесты которые отображают в разных режимах контроллера.
Эти древние:
https://forums.tomshardware.com/threads/ide-to-ahci-doubled-performance.673848/
https://archive.techplayboy.com/index.php?option=com_content&task=view&id=505&Itemid=38&limit=1&limitstart=1

Этот тоже не новый, но он по крайней мере четырёхлетней давности, а не восьми-девяти
https://www.youtube.com/watch?v=u5k4A5JOtp0

Оффлайн Yasno

  • Завсегдатай
  • *
  • Сообщений: 203
Re: AHCI и IDE
« Ответ #26 : 17.05.2019 18:55:24 »
HDD AHCI от IDE
я так понял разница заметна когда много мелких файлов и тут HDD AHCI выигрывает
а на видео удивительная разница с SSD

Оффлайн Yasno

  • Завсегдатай
  • *
  • Сообщений: 203
Re: AHCI и IDE
« Ответ #27 : 17.05.2019 19:23:01 »
запускайтесь с неё в режиме Live с сохранением сеанса
А вот тут поподробнее можно и куда оно сохраняться будет
Встречал как то дистр с сохранением но потерял, как работает тоже не ясно)

Оффлайн klark973

  • Завсегдатай
  • *
  • Сообщений: 662
  • Неспящий саппорт
Re: AHCI и IDE
« Ответ #28 : 17.05.2019 19:33:20 »
А вот тут поподробнее можно и куда оно сохраняться будет
https://www.altlinux.org/QuickStart/Install#/media/File:Ws8.1-boot.png Копируете дистрибутив на флэшку, загружаетесь с него, в первом меню выбираете "LiveCD с поддержкой сеансов", настраиваете под свои нужды всё необходимое, повторяете этот выбор при каждой перезагрузке. Все изменения записываются в созданный при первом таком запуске раздел на всё свободное место. Он создаётся только на качественных быстрых флэшках и имеет в своём названии префикс "alt". С плохими флэшками и с режимом UEFI это работать не будет. Точнее, под UEFI не выведено соответствующего пункта в загрузочном меню.
To moan or to solve -- that is the question!

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Re: AHCI и IDE
« Ответ #29 : 04.11.2019 11:36:17 »
3 Если Альт установлен с IDE, то с AHCI он не стартанет?
Не стартанёт.
Стартанёт. Надо только заранее написать в /etc/initrd.mk
MODULES_ADD += ahci ata_piixИ, может, какие-то другие контроллеры перечислить, если надо вдруг. Тогда, после очередного обновления ядра, в initrd попадут перечисленные драйверы контроллеров, и hdd вполне можно будет переносить туда-сюда. Или можно перегенерировать initrd для текущего ядра сразу.
« Последнее редактирование: 04.11.2019 11:39:01 от asy »