Страница 13 из 42

Re: Latency-test показания на разных материнских платах

Добавлено: 30 ноя 2015, 12:59
SVP
UAVpilot писал(а):Мысль №2: У дешёвых HDD хоть какой-то кэш, но есть, а у дешёвых SSD как правило нет никакого. В итоге обмен идёт небольшими порциями, что приводит к более частым "перезапускам" DMA.
Так из ОЗУ должен браться по идее кеш... для любых устройств.
Кстати... что-то там было же с линуксом и парковкой, как-то на это всё влиять можно было.

Re: Latency-test показания на разных материнских платах

Добавлено: 30 ноя 2015, 13:05
Serg
SVP писал(а):Так из ОЗУ должен браться по идее кеш... для любых устройств.
А данные с диска в ОЗУ разве не надо сначала перенести?.. :) Вот этим DMA и занимается...

Re: Latency-test показания на разных материнских платах

Добавлено: 30 ноя 2015, 22:07
going
Я начал подозревать, что SSD в сон уходит, а когда просыпается - задержка, но не уверен. Не знаю как проверить.

Re: Latency-test показания на разных материнских платах

Добавлено: 01 дек 2015, 01:29
Serg
По собственной инициативе он заснуть не может, только по специальной команде контроллера. Но тогда и HDD засыпал-бы, а это гораздо более заметнее - при этом мотор останавливается.

Re: Latency-test показания на разных материнских платах

Добавлено: 01 дек 2015, 17:43
SVP
А чему у SSD засыпать-то ?
В том смысле, что чтобы это "тормозило" ?
У HDD мотор какое-то время ненулевое раскручивается, у SSD пожалуй только если какая микруха "заснет", но просыпается она условно мгновенно.

Re: Latency-test показания на разных материнских платах

Добавлено: 13 дек 2015, 19:32
glaz
going писал(а):Сегодня сменил SSD на старенький HDD (2003 г.в.) и заметил неожиданный эффект. Латенси тест улучшился, не на много, но улучшился. Был на SSD 13600-14000, а стал 13080. Условия теста одинаковые.

SSD- Silicon Power sata3 S55 60Gb
HDD - Sagate 80Gb

Какие мысли по данному факту ??
SSD это совсем не HDD и требует оптимизации
1) если памяти достаточно - то можно отключить swap, если нет то тем менее изменить агресивность его использования.
2) время отложенной записи на диск
3) если линух не свежий, то обязательно опции монтирования диска в fstab (noatime,discard)
4) подобрать i/o планировщик: https://www.opennet.ru/base/sys/linux_s ... s.txt.html
etc ..


PS: попробуйте разные планировщики и поделитесь результатом.
1) Anticipatory - по умолчанию в ядрах 2.6.0 - 2.6.17
2) CFQ
3) Noop
4) Deadline

посмотреть текущий планировщик:
cat /sys/block/sdX/queue/scheduler
X -ваш диск

например у меня cfq:

Код: Выделить всё

cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq] 
меняем на anticipatory (до первой перезагрузки):

Код: Выделить всё

sudo echo  anticipatory | sudo tee /sys/block/sda/queue/scheduler
тестируем .. и т.д. по порядку и обязательно отписываемся в теме :)

PS:PS: и на hdd тоже стоит попробовать подобрать.

Удачи всем!!!

Re: Latency-test показания на разных материнских платах

Добавлено: 14 дек 2015, 12:41
glaz
Подумал и решил дополнительно для вас написать что бы я сделал будь у меня ssd:

1) делаем резервную копию файла fstab дабы если что некорректно сделаем у нас был оригинальный файл

Код: Выделить всё

sudo cp /etc/fstab /etc/fstab.bak
2) открываем его на редактирование

Код: Выделить всё

gksu gedit /etc/fstab
если убунту и диски именуются в файле
через UUID строки будет выглядеть как:
UUID=xxxx-xxxx-xxxx-xxxx
если у вас дебиан или старый дистрибутив ubuntu
то /dev/sdXY (если диск один то /dev/sda1)


3) Отключаем раздел подкачки,
комментируем (#) строку со словом swap (если памяти минимум 4 гига но лучше 8)

Код: Выделить всё

 #UUID=xxxx-xxxx-xxxx-xxxx      none    swap    sw      0       0
 

4) временные, журнальные файлы, тоже помещаем с диска в память, добавляя следующие строки:

Код: Выделить всё

tmpfs /var/log tmpfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/tmp tmpfs defaults 0 0
tmpfs /var/lock tmpfs defaults 0 0
5) Добавляем опции монтирования "discard,noatime,nodiratime" по умолчанию для корневого раздела вашего диска

Код: Выделить всё

/dev/sda1 / ext4 defaults,discard,noatime,nodiratime 0 0
или же

Код: Выделить всё

UUID=xxxx-xxxx-xxxx-xxxx / ext4 defaults,discard,noatime,nodiratime 0 0
за что отвечают эти опции
discard - включает операцию trim необходимую для ssd
noatime,nodiratime - отключает обновление времени последнего доступа к файлам и директориям

6) Cохраняем файл перезагружаемся проверяем что система грузится
если что то пошло не так восстанавливаем содержимое из fstab.bak

можно и без ребута:

Код: Выделить всё

sudo update-initramfs -u -k all



7) меняем планировщика системы ввода вывода всего нашего диска:

Код: Выделить всё

sudo echo deadline > /sys/block/sda/queue/scheduler
(останется и после перезагрузки)

8) ребутаемся, проверяем работу.

Надеюсь что ничего не попутал :)

Re: Latency-test показания на разных материнских платах

Добавлено: 17 дек 2015, 15:56
going
glaz писал(а):3) если линух не свежий, то обязательно опции монтирования диска в fstab (noatime,discard)
"ЛИНУХ" не пахнет, значит свежий.
OpenSUSE 13.2

Код: Выделить всё

:~> df
Файловая система 1K-блоков Использовано Доступно Использовано% Cмонтировано в
/dev/sda3         35923840     13570088 21275076           39% /
devtmpfs           4046260            0  4046260            0% /dev
tmpfs              4052736          148  4052588            1% /dev/shm
tmpfs              4052736         2088  4050648            1% /run
tmpfs              4052736            0  4052736            0% /sys/fs/cgroup
tmpfs              4052736           40  4052696            1% /tmp
/dev/sdc3         25066604      6928592 17072032           29% /usr/src
/dev/sdc8          2030736      1320120   589412           70% /var
tmpfs              4052736       179708  3873028            5% /var/tmp
/dev/sdc7        150191412     68313052 80792936           46% /home

Код: Выделить всё

:~> cat /etc/fstab
UUID=b1cb6cc3-a603-40f8-b224-1b697b432097 /                    ext4       noatime,acl,user_xattr,discard 1 1
UUID=534e7bc5-9aae-48b9-826b-709cad12d443 /usr/src             ext4       noatime,acl,user_xattr 1 2
UUID=2391fa38-b480-41c5-b645-1230302ac184 /home                ext4       noatime,acl,user_xattr 1 2
UUID=812e28f6-97d6-42f9-b643-4ccd3e4ba056 /var                 ext4       acl,user_xattr        1 2
UUID=2cd26810-b8e9-4d1b-ac89-3a4b6615cc2b swap                 swap       defaults              0 0
tmpfs                /tmp                 tmpfs      defaults              0 0
tmpfs                /var/tmp             tmpfs      defaults              0 0

Re: Latency-test показания на разных материнских платах

Добавлено: 17 дек 2015, 16:30
going
glaz писал(а):1) если памяти достаточно - то можно отключить swap, если нет то тем менее изменить агресивность его использования.
2) время отложенной записи на диск
3) если линух не свежий, то обязательно опции монтирования диска в fstab (noatime,discard)
4) подобрать i/o планировщик: https://www.opennet.ru/base/sys/linux_s ... s.txt.html
etc ..
1- Памяти как видите достаточно, но отключать swap не намерен ( мешают религиозные убеждения :hehehe: ) даже при условии, что система его не использует вообще.
2 - Как время отложенной записи на диск может влиять на латенси тест?
3 - Всё сделано по букварю давным давно.
4 - В системе присутствует:

Код: Выделить всё

:~> dmesg | grep scheduler
[    0.770782] io scheduler noop registered (default)
[    0.770784] io scheduler deadline registered
[    0.770820] io scheduler cfq registered
У меня NOOP - наверное для SSD лучшее решение.

PS:

Причина в изменении латенси теста была столь не очевидна, что заметил только рассматривая под "микроскопом".
В командной строке параметров загрузки ядра две команды стояли в разных местах. "...... nomodeset isolcpus=2 ...." , " .... isolcpus=2 nomodeset ....".
Первый вариант показывает лучшие результаты. Поспешил рассказать сообществу, а тут целая статья.
Можно и на эту тему подискутировать.

Re: Latency-test показания на разных материнских платах

Добавлено: 17 дек 2015, 19:06
Serg
going писал(а):В командной строке параметров загрузки ядра две команды стояли в разных местах. "...... nomodeset isolcpus=2 ...." , " .... isolcpus=2 nomodeset ....".
Первый вариант показывает лучшие результаты.
Вообще без разницы. очерёдность аргументов ядра никакой роли не играет.

Re: Latency-test показания на разных материнских платах

Добавлено: 17 дек 2015, 22:31
glaz
Прошу прощения что не написал, речь выше конечно об оперативной памяти, RAM тобишь.
Обычно рекомендации сводятся к тому чтобы пореже обращаться к ssd диску чтобы сберечь его.
Наша же задача сократить операции обращения к дискам(любым).
У вас если sdc жесткий диск, то обращение к нему будет долгим - io операция займет продолжительное время.
и смонтированный на него каталог var/log содержит журнальные файлы, в которые постоянно что то пишется..
если у нас достаточно оперативки и нет нужды в журнальных файлах (вы их часто читаете?)
то переносим их в оперативку.. Если же возникнет потребность все можно вернуть назад.
Swap по обычным рекомендациям тоже переносят на hdd, опять же в нашем случае лучше чтобы его не было вообще.

Удачи!

Re: Latency-test показания на разных материнских платах

Добавлено: 18 дек 2015, 00:42
Serg
glaz писал(а):У вас если sdc жесткий диск, то обращение к нему будет долгим - io операция займет продолжительное время.
С точки зрения RT в системе это время не важно. Нас волнует только время занятости таких ресурсов как память, процессор, шина между ними.
Операция чтения/записи происходит следующим образом независимо от типа диска: SATA контроллеру сообщается какие сектора требуется прочитать/записать, соотв. образом настраивается контроллер прямого доступа к памяти (DMA), далее диск начинает поиск нужного сектора - всё это время вышеперечисленные ресурсы свободны и не мешают RT, далее диск читает нужные сектора в свой кэш и/или кэш контроллера - в это время ресурсы по прежнему свободны, по окончании чтения (или места в кэше) контроллер генерит прерывание, по которому DMA запрашивает захват шины памяти, захватывает шину как только это становится можно и начинается передача данных от контроллера (из кэша) в память - именно на этот момент занимается критичный для RT ресурс (кстати, процессор при этом может заниматься чем-то ещё), т.е. передача данных из кэша в память, т.о. скорость чтения с поверхности диска никак не влияет на RT.
Она может повлиять только в случае серьёзных ошибок чтения из-за особенностей архитектуры PC, но нам это не должно быть интересно... :)

Re: Latency-test показания на разных материнских платах

Добавлено: 18 дек 2015, 10:03
Сергей Саныч
UAVpilot писал(а): DMA запрашивает захват шины памяти, захватывает шину как только это становится можно и начинается передача данных от контроллера (из кэша) в память - именно на этот момент занимается критичный для RT ресурс
То есть впрямую это зависит от размера блоков, передаваемых по DMA?
Опять же, есть зависимость от приоритетов прерываний - если какой-то драйвер начинает обрабатывать свое прерывание на приоритете, высшем, чем прерывание от таймера, синхронизирующего RT, то это может сильно влиять на Latency.

Re: Latency-test показания на разных материнских платах

Добавлено: 18 дек 2015, 10:16
going
UAVpilot писал(а):Вообще без разницы. очерёдность аргументов ядра никакой роли не играет.
Я то же так думал, но факт того что очерёдность применения параметров командной строки в этом конкретном случае имеет значение зафиксировал.
Сегодня соберу очередное ядро и при испытаниях опять попробую повторить, правда материнка будет уже другая.
Параметры забиваю вручную при загрузке в консоли GRUB (так быстрее) и никогда не заботился об очерёдности. Но частенько получал не очевидные результаты, что вносило путаницу.
Ждите результатов.

Re: Latency-test показания на разных материнских платах

Добавлено: 18 дек 2015, 10:41
going
Сергей Саныч писал(а):Опять же, есть зависимость от приоритетов прерываний - если какой-то драйвер начинает обрабатывать свое прерывание на приоритете, высшем, чем прерывание от таймера, синхронизирующего RT, то это может сильно влиять на Latency.
А с каким приоритетом работает таймер? Хотелось бы разобраться в этом вопросе. Например если таймер высокого разрешения самой материнки использовать?

Re: Latency-test показания на разных материнских платах

Добавлено: 18 дек 2015, 10:56
Сергей Саныч
going писал(а):А с каким приоритетом работает таймер?
Вот бы узнать! По идее, должен с наивысшим, а как на самом деле - вопрос отдельный.
По крайней мере, у меня был прецедент:
Сергей Саныч писал(а):Материнка была где-то 2000-2002 года, кажется, EPOX, на чипсете вроде бы VIA. Процессор - Athlon XP 1700 или около этого. Видео Radeon 9600 или что-то похожее, но тоже десятилетней давности. Путем научного шаманства - залез в BIOS setup, в разделе PNP/PCI Setting нашел пункт вроде VGA Interrupt Enable и запретил его. После чего Latency упал примерно с 200000 до 12000-15000.

Re: Latency-test показания на разных материнских платах

Добавлено: 18 дек 2015, 20:22
Serg
Сергей Саныч писал(а):То есть впрямую это зависит от размера блоков, передаваемых по DMA?
Да, но RT сиситема и в этот процесс вмешивается - ограничивает максимальный размер блока...
Сергей Саныч писал(а):Опять же, есть зависимость от приоритетов прерываний - если какой-то драйвер начинает обрабатывать свое прерывание на приоритете, высшем, чем прерывание от таймера, синхронизирующего RT, то это может сильно влиять на Latency.
Подобные приёмы работы с прерываниями справедливы для каких-нибудь несложных программ для микроконтроллеров, но не для задач типа "ядро RT ОС". Например как некий драйвер будет обрабатывать своё высокоприоритетное прерывание, если шина доступа к памяти занята и процессор даже не может считать программный код обработчика прерывания?..
going писал(а):Я то же так думал, но факт того что очерёдность применения параметров командной строки в этом конкретном случае имеет значение зафиксировал.
Это "погрешности измерения". Все параметры ядра оказываются в одном общем массиве, в котором каждый компонент ядра ищет свои параметры, которые знает в том порядке, в котором ядро эти компоненты вызывает/запускает.
Туда даже можно своих любимых слов понаписать - на них никто кроме написавшего реагировать не будет.
Это легко проверить рассматривая исходники ядра.

Re: Latency-test показания на разных материнских платах

Добавлено: 19 дек 2015, 00:12
going
UAVpilot писал(а):Это "погрешности измерения". Все параметры ядра оказываются в одном общем массиве, в котором каждый компонент ядра ищет свои параметры, которые знает в том порядке, в котором ядро эти компоненты вызывает/запускает.
У самого ядра есть параметры. У каждого модуля есть свои параметры. Частенько их интересы пересекаются. Как быть ядру в таком случае? Думаю существует внутренняя логика. Наверное от порядка поступления и применения параметров в командной строке что то должно зависеть. К тому же в этот момент ядро и модули с параметрами по дефолту уже загружены. Или я ошибаюсь?

Выкладываю результаты. Смотрите. Попробуйте повторить. Может на другом железе по другому?
Первые два на Debian c rtai ядром. В командной строке меняются местами nomodeset и isolcpus=1
загрузка процессора 1-ядро 0%, 2-ядро 100%, glxgears - 13 штук. Тест по 10 минут.
Снимок экрана - 18.12.2015 - 7.png (4515 просмотров) <a class='original' href='./download/file.php?id=66487&mode=view' target=_blank>Загрузить оригинал (150.1 КБ)</a>
Снимок экрана - 18.12.2015 - 8.png (4515 просмотров) <a class='original' href='./download/file.php?id=66488&mode=view' target=_blank>Загрузить оригинал (131.36 КБ)</a>
Следующая пара на openSUSE-13.2 c RT ядром. В командной строке меняются местами nomodeset и isolcpus=1
загрузка процессора 1-ядро 0%, 2-ядро 100%, glxgears - 13 штук. Тест по 10 минут.
Снимок экрана - 18.12.2015 - 11.png (4514 просмотров) <a class='original' href='./download/file.php?id=66517&mode=view' target=_blank>Загрузить оригинал (176.72 КБ)</a>
Снимок экрана - 18.12.2015 - 12.png (4514 просмотров) <a class='original' href='./download/file.php?id=66518&mode=view' target=_blank>Загрузить оригинал (163.92 КБ)</a>
Здесь выставляю параметры толко i915
Снимок экрана - 18.12.2015 - 15.png (4514 просмотров) <a class='original' href='./download/file.php?id=66519&mode=view' target=_blank>Загрузить оригинал (212.14 КБ)</a>
Почти догнал rtai ядро :hehehe:

Re: Latency-test показания на разных материнских платах

Добавлено: 19 дек 2015, 02:27
Serg
Разница в 10% для джиттера - это и есть "в пределах погрешности измерений".
going писал(а):У самого ядра есть параметры. У каждого модуля есть свои параметры. Частенько их интересы пересекаются. Как быть ядру в таком случае? Думаю существует внутренняя логика. Наверное от порядка поступления и применения параметров в командной строке что то должно зависеть. К тому же в этот момент ядро и модули с параметрами по дефолту уже загружены. Или я ошибаюсь?
Их интересы пересекаться не могут т.к. ядро в Linux "монолитное".

Вот, даже исходники изучать не надо:
https://git.kernel.org/cgit/linux/kerne ... s/v3.4.110
The following is a consolidated list of the kernel parameters as implemented
(mostly) by the __setup() macro and sorted into English Dictionary order
(defined as ignoring all punctuation and sorting digits before letters in a
case insensitive manner), and with descriptions where known.

Re: Latency-test показания на разных материнских платах

Добавлено: 19 дек 2015, 17:00
going
UAVpilot писал(а):Вот, даже исходники изучать не надо:
https://git.kernel.org/cgit/linux/kerne ... s/v3.4.110
Описание синтаксиса применения параметров не более. Описания как они сочетаются друг с другом очень мало.
Много связей учитывается на этапе конфигурации ядра, но не все. Это и понятно их много и постоянно прибывает.
Т.е. сконфигурировали ядро, удачно собрали, без ошибок, а работает оно как то криво, не так как ожидалось.
UAVpilot писал(а):Их интересы пересекаться не могут т.к. ядро в Linux "монолитное".
Правильно не могут. Поэтому ядро при возникновении такой ситуации просто игнорирует какой то из параметров. Вопрос какой? По какому критерию?
Например:
Установили "CPUFreq governor 'performance' as default", а для модуля ядра i915.powersave:1 (true) - что будет происходить?
Не всё так однозначно, как описано в документации.