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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
SVP
Мастер
Сообщения: 6140
Зарегистрирован: 19 дек 2012, 15:49
Репутация: 884
Откуда: Москва
Контактная информация:

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

Сообщение SVP »

UAVpilot писал(а):Мысль №2: У дешёвых HDD хоть какой-то кэш, но есть, а у дешёвых SSD как правило нет никакого. В итоге обмен идёт небольшими порциями, что приводит к более частым "перезапускам" DMA.
Так из ОЗУ должен браться по идее кеш... для любых устройств.
Кстати... что-то там было же с линуксом и парковкой, как-то на это всё влиять можно было.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

SVP писал(а):Так из ОЗУ должен браться по идее кеш... для любых устройств.
А данные с диска в ОЗУ разве не надо сначала перенести?.. :) Вот этим DMA и занимается...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

Я начал подозревать, что SSD в сон уходит, а когда просыпается - задержка, но не уверен. Не знаю как проверить.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

По собственной инициативе он заснуть не может, только по специальной команде контроллера. Но тогда и HDD засыпал-бы, а это гораздо более заметнее - при этом мотор останавливается.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
SVP
Мастер
Сообщения: 6140
Зарегистрирован: 19 дек 2012, 15:49
Репутация: 884
Откуда: Москва
Контактная информация:

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

Сообщение SVP »

А чему у SSD засыпать-то ?
В том смысле, что чтобы это "тормозило" ?
У HDD мотор какое-то время ненулевое раскручивается, у SSD пожалуй только если какая микруха "заснет", но просыпается она условно мгновенно.
glaz
Кандидат
Сообщения: 57
Зарегистрирован: 06 фев 2012, 13:02
Репутация: 7
Контактная информация:

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

Сообщение 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 тоже стоит попробовать подобрать.

Удачи всем!!!
glaz
Кандидат
Сообщения: 57
Зарегистрирован: 06 фев 2012, 13:02
Репутация: 7
Контактная информация:

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

Сообщение 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) ребутаемся, проверяем работу.

Надеюсь что ничего не попутал :)
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение 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
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение 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 ....".
Первый вариант показывает лучшие результаты. Поспешил рассказать сообществу, а тут целая статья.
Можно и на эту тему подискутировать.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

going писал(а):В командной строке параметров загрузки ядра две команды стояли в разных местах. "...... nomodeset isolcpus=2 ...." , " .... isolcpus=2 nomodeset ....".
Первый вариант показывает лучшие результаты.
Вообще без разницы. очерёдность аргументов ядра никакой роли не играет.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
glaz
Кандидат
Сообщения: 57
Зарегистрирован: 06 фев 2012, 13:02
Репутация: 7
Контактная информация:

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

Сообщение glaz »

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

Удачи!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

glaz писал(а):У вас если sdc жесткий диск, то обращение к нему будет долгим - io операция займет продолжительное время.
С точки зрения RT в системе это время не важно. Нас волнует только время занятости таких ресурсов как память, процессор, шина между ними.
Операция чтения/записи происходит следующим образом независимо от типа диска: SATA контроллеру сообщается какие сектора требуется прочитать/записать, соотв. образом настраивается контроллер прямого доступа к памяти (DMA), далее диск начинает поиск нужного сектора - всё это время вышеперечисленные ресурсы свободны и не мешают RT, далее диск читает нужные сектора в свой кэш и/или кэш контроллера - в это время ресурсы по прежнему свободны, по окончании чтения (или места в кэше) контроллер генерит прерывание, по которому DMA запрашивает захват шины памяти, захватывает шину как только это становится можно и начинается передача данных от контроллера (из кэша) в память - именно на этот момент занимается критичный для RT ресурс (кстати, процессор при этом может заниматься чем-то ещё), т.е. передача данных из кэша в память, т.о. скорость чтения с поверхности диска никак не влияет на RT.
Она может повлиять только в случае серьёзных ошибок чтения из-за особенностей архитектуры PC, но нам это не должно быть интересно... :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

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

Сообщение Сергей Саныч »

UAVpilot писал(а): DMA запрашивает захват шины памяти, захватывает шину как только это становится можно и начинается передача данных от контроллера (из кэша) в память - именно на этот момент занимается критичный для RT ресурс
То есть впрямую это зависит от размера блоков, передаваемых по DMA?
Опять же, есть зависимость от приоритетов прерываний - если какой-то драйвер начинает обрабатывать свое прерывание на приоритете, высшем, чем прерывание от таймера, синхронизирующего RT, то это может сильно влиять на Latency.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

UAVpilot писал(а):Вообще без разницы. очерёдность аргументов ядра никакой роли не играет.
Я то же так думал, но факт того что очерёдность применения параметров командной строки в этом конкретном случае имеет значение зафиксировал.
Сегодня соберу очередное ядро и при испытаниях опять попробую повторить, правда материнка будет уже другая.
Параметры забиваю вручную при загрузке в консоли GRUB (так быстрее) и никогда не заботился об очерёдности. Но частенько получал не очевидные результаты, что вносило путаницу.
Ждите результатов.
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

Сергей Саныч писал(а):Опять же, есть зависимость от приоритетов прерываний - если какой-то драйвер начинает обрабатывать свое прерывание на приоритете, высшем, чем прерывание от таймера, синхронизирующего RT, то это может сильно влиять на Latency.
А с каким приоритетом работает таймер? Хотелось бы разобраться в этом вопросе. Например если таймер высокого разрешения самой материнки использовать?
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

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

Сообщение Сергей Саныч »

going писал(а):А с каким приоритетом работает таймер?
Вот бы узнать! По идее, должен с наивысшим, а как на самом деле - вопрос отдельный.
По крайней мере, у меня был прецедент:
Сергей Саныч писал(а):Материнка была где-то 2000-2002 года, кажется, EPOX, на чипсете вроде бы VIA. Процессор - Athlon XP 1700 или около этого. Видео Radeon 9600 или что-то похожее, но тоже десятилетней давности. Путем научного шаманства - залез в BIOS setup, в разделе PNP/PCI Setting нашел пункт вроде VGA Interrupt Enable и запретил его. После чего Latency упал примерно с 200000 до 12000-15000.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Сергей Саныч писал(а):То есть впрямую это зависит от размера блоков, передаваемых по DMA?
Да, но RT сиситема и в этот процесс вмешивается - ограничивает максимальный размер блока...
Сергей Саныч писал(а):Опять же, есть зависимость от приоритетов прерываний - если какой-то драйвер начинает обрабатывать свое прерывание на приоритете, высшем, чем прерывание от таймера, синхронизирующего RT, то это может сильно влиять на Latency.
Подобные приёмы работы с прерываниями справедливы для каких-нибудь несложных программ для микроконтроллеров, но не для задач типа "ядро RT ОС". Например как некий драйвер будет обрабатывать своё высокоприоритетное прерывание, если шина доступа к памяти занята и процессор даже не может считать программный код обработчика прерывания?..
going писал(а):Я то же так думал, но факт того что очерёдность применения параметров командной строки в этом конкретном случае имеет значение зафиксировал.
Это "погрешности измерения". Все параметры ядра оказываются в одном общем массиве, в котором каждый компонент ядра ищет свои параметры, которые знает в том порядке, в котором ядро эти компоненты вызывает/запускает.
Туда даже можно своих любимых слов понаписать - на них никто кроме написавшего реагировать не будет.
Это легко проверить рассматривая исходники ядра.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

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

Выкладываю результаты. Смотрите. Попробуйте повторить. Может на другом железе по другому?
Первые два на Debian c rtai ядром. В командной строке меняются местами nomodeset и isolcpus=1
загрузка процессора 1-ядро 0%, 2-ядро 100%, glxgears - 13 штук. Тест по 10 минут.
Снимок экрана - 18.12.2015 - 7.png (4430 просмотров) <a class='original' href='./download/file.php?id=66487&mode=view' target=_blank>Загрузить оригинал (150.1 КБ)</a>
Снимок экрана - 18.12.2015 - 8.png (4430 просмотров) <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 (4429 просмотров) <a class='original' href='./download/file.php?id=66517&mode=view' target=_blank>Загрузить оригинал (176.72 КБ)</a>
Снимок экрана - 18.12.2015 - 12.png (4429 просмотров) <a class='original' href='./download/file.php?id=66518&mode=view' target=_blank>Загрузить оригинал (163.92 КБ)</a>
Здесь выставляю параметры толко i915
Снимок экрана - 18.12.2015 - 15.png (4429 просмотров) <a class='original' href='./download/file.php?id=66519&mode=view' target=_blank>Загрузить оригинал (212.14 КБ)</a>
Почти догнал rtai ядро :hehehe:
Платы: BPI-M3, BPI-A64, OPI-PC2
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение 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.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
going
Мастер
Сообщения: 523
Зарегистрирован: 29 сен 2013, 20:55
Репутация: 129
Настоящее имя: Леонид
Откуда: г.Киров
Контактная информация:

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

Сообщение going »

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

Вернуться в «LinuxCNC»