Кристиан Хогсберг (Kristian Høgsberg), создатель проекта Wayland, также известный своими наработками по обеспечению поддержки GPU, используемых в процессорах Intel семейства Skylake, представил (http://lists.freedesktop.org/archives/mesa-dev/2015-January/...) серию патчей, которые могут заметно ускорить работу MESA в ситуациях, когда скорость работы ограничена производительностью CPU.
Изменения в основном сводятся к оптимизации реализации мьютексов. Хотя в pthreads и есть достаточно неплохая реализация, исследование показало, что, в целом, накладные расходы в ряде ситуаций могут оказаться достаточно ощутимыми. В результате разработчик подготовил оптимизированный вариант реализации с мьютексами, избегающий в ряде ситуаций выполнения системных вызовов (syscalls). Любопытным фактом является то, что новая реализация мьютексов основана на описании, фигурирующем в книге Ульриха Дреппера "Futexes Are Tricky" (http://www.akkadia.org/drepper/futex.pdf). Отмечается, что в ряде случаев, когда CPU является узким местом, увеличение производительности может составить до 10%.URL: http://www.phoronix.com/scan.php?page=news_item&px=Kristian-...
Новость: http://www.opennet.ru/opennews/art.shtml?num=41569
Сначала повышают производительность 3D, вытесняя остальные процессы CPU, а теперь идут в обход ограничений. Нет чтобы просто сделать нормально, а не добиваться мнимой производительности путём забирания всех прерываний себе?
Сначала всякие интелы делают непонятное железо, а всякие прочие комплектуют этим железом почти 90% устройств производимых, без оглядки на оси отличные от мс.
> Сначала всякие интелы делают непонятное железо,Для начала, там DMA все обложено как собака блохами. Но о такой мелочи крутому эксперту-студоботу знать не дано.
Во вторых, в патче с реализацией мьютексов нет вообще ничего по части прерываний. Это вообще железко-независимый кусок кода, чистая системная механика, в которую как оказалось могут упираться некоторые нагрузки.
В третьих, рыночная доля интелского интеграта далека от 100% :)
Не DMA а NDA.
DMA это несколько другая штука.
Может, всё-таки, DMA? В контексте разговоров о прерываниях как-то больше смысла несёт.
> мнимой производительности путём забирания всех прерываний себе?Скажи-ка дядя, ведь не даром мозги пропил ты за амбаром?! Внимание, вопрос на миллион: где в патче с реализацией мьютексов ну хоть что-то по части работы с прерываниями? :)
Сразу видно, "профессионал" по ОС.
Сначала изучи, что такое Mutex и Futex в контексте пользователя, а затем пиши про прерывания.
Это для всех или только для интела?
Хотя в любом случае замечательно
> Это для всех или только для интела?Судя по коду - вообще для всех. Этот код не специфичен для какого либо железа.
Это специфично для pthreads.
ЗЫ: Про реализацию многопоточности винда/posix и сообщения/вызовы накопилось тонны флуда.
Очень спорная оптимизация. По сути просто перед системным вызовом futex сделал свой CAS. Конечно, теперь в uncontented-случае ему не надо заходить в ядро, но вот в случае contented... Надо пройти через 2 CAS'а, один в userspace, один в futex и потом зайти еще в ядерный вызов мьютекса.Ускорение на 10% будет в случае, если за мьютекс никто не дерётся. Если будут драться, то он будет медленней обычных pthread_mutex:)
Ну, приличный код так и пишется, чтобы в большинстве случаев за мьютекс не дрались...
много вы такого софта видели?:)
Да всякого хватает. Насчет качества кода месы я более-менее уверен. Ну и оптимизация в расчёте на код, написанный прямыми руками - стимул эти руки таки выравнивать.
> Если будут драться, то он будет медленней обычных pthread_mutex:)Так активная драка за мьютекс - по идее не есть нормальное состояние дел.
///---http://lists.freedesktop.org/archives/mesa-dev/2015-January/...
Including <linux/futex.h> under __GNUC__ is going to break the build of
Mesa on everything compiled with clang/gcc that isn't Linux.
---///
Как по мне - так бы и надо сделать
> Как по мне - так бы и надо сделатьа как по мне - твоей маме следовало бы сделать аборт, а не рожать тебя, например;)
Быстрый код тоже часто является говнокодом.