BG Development


  Reply to this topicStart new topicStart Poll

> Да изхвърлим ли езиците от високо ниво и ОС, За скорост, за родину
SuN
Публикувано на: 17-05-2019, 21:14
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 8597
Регистриран на: 27.01.05



Свърши се времето, когато можехте да спечелите бързодействие като минете от език на високо ниво на език на ниско ниво. Сега тясното място се оказват морално остарелите ОС и тяхната презумпция, че хардуера е бавен. Нещо, което е било вярно през 90-те, но вече не е. Ц-то няма да ви спаси, когато за една елементарна операция трябва да направите 5-10 превключвания между процеса и ядрото.

https://penberg.org/parakernel-hotos19.pdf icon_smile.gif

Сега се сещам, че преди няколко години се пишеше и за някакви unikernels, които също бяха мотивирани от нуждата за скорост и ненуждата за пълна ОС.

Това мнение е било редактирано от SuN на 17-05-2019, 21:15
PMEmail Poster
Top
johnfound
Публикувано на: 17-05-2019, 21:22
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 7373
Регистриран на: 27.05.04



Операция при която се превключва 5..10 пъти между процеса и ядрото по определение не е "елементарна".

Но ако наистина ти трябва да изстискаш максимално бързодействие – KolibriOS е операционната система. Познавам човек, който на нейна база беше писал софтуер за обработка на свръхскоростен видео поток – много хиляди кадъра в секунда.


--------------------
asm32 - Приложно програмиране на асемблер.
Tox: 48C0321ADDB2FE5F644BB5E3D58B0D58C35E5BCBC81D7CD333633FEDF1047914A534256478D9
PMEmail PosterUsers Website
Top
SuN
Публикувано на: 17-05-2019, 21:29
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 8597
Регистриран на: 27.01.05



От мнението ми не се разбира много-много за какво е документа, но ще преведа примера от този цитат:
QUOTE
Furthermore, OSes typically implement POSIX
sockets API as a system call per socket operation, which has
high overheads from context switching and CPU cache pol-
lution. These inefficiencies have led to an influx of a variety
of approaches to optimize the network stack including com-
pletely bypassing the kernel networking stack


QUOTE
Операционните системи, които предлагат сокети базирани на стандарта POSIX, използват по едно извикване на системна функция за всяка операция върху сокета. Това създава голямо натоварнане заради превключването на контекста [между процесите] и замърсяване на кеша на процесора. За да се избегне тази неефикасност има разработени различни техники сред които е прескачане на целия мрежов код на ядрото.


П.П.
Документа е доста дълъг, но общо взето се казва - абстракциите бавят. На ваше място не бих го чел целия.

Това мнение е било редактирано от SuN на 17-05-2019, 21:31
PMEmail Poster
Top
johnfound
Публикувано на: 17-05-2019, 21:49
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 7373
Регистриран на: 27.05.04



Е, то "операция върху сокета" е много размазано понятие. Ако викаш системната функция за всеки байт поотделно, много ясно, че ще е бавно.

Но тук има един аспект, който не е споменат. Всички тези превключвания на контексти и функции на операционната система са нужни за да могат ресурсите на компютъра да се използват от много програми едновременно.

Ако искаме някой от ресурсите да го дадем само на една програма, то много ясно, че операционната система не е нужна и следва програмата да работи директно с устройството.


--------------------
asm32 - Приложно програмиране на асемблер.
Tox: 48C0321ADDB2FE5F644BB5E3D58B0D58C35E5BCBC81D7CD333633FEDF1047914A534256478D9
PMEmail PosterUsers Website
Top
ici
Публикувано на: 17-05-2019, 22:56
Quote Post


Group Icon
Име: Ивайло Илчев ики
Група: VIP
Ранг: Почетен член

Мнения: 16215
Регистриран на: 06.06.04



FreeRTOS + Lwip - буферите на етернет се слагат в различни страници на РАМ. Това са 8 реда в ld файла, но така имаш два ДМА канала за буферите и достъп за процесора едновременно. Все едно шината ти става 96 бита широка, ей така от нищото. icon_smile.gif За флаша и драйверите остават още три канала, ей така да си имат за харчене. icon_smile.gif


--------------------
Reading undefined locations provides undefined data.
PMEmail PosterUsers Website
Top
SuN
Публикувано на: 18-05-2019, 08:58
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 8597
Регистриран на: 27.01.05



QUOTE (johnfound @ 17-05-2019, 21:49)
Но тук има един аспект, който не е споменат. Всички тези превключвания на контексти и функции на операционната система са нужни за да могат ресурсите на компютъра да се използват от много програми едновременно.

Ако искаме някой от ресурсите да го дадем само на една програма, то много ясно, че операционната система не е нужна и следва програмата да работи директно с устройството.

Поне за запомнящите утройства тип nvme се твърдеше, че имат достатъчно опашки за команди за да обслужват много програми паралелно без проблем. Ролята на ОС в този случай ще се смали до това да каже коя програма достъп до коя част от устройството ще има.
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0