The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Патчи для ускорения MESA в ситуациях, когда производительность ограничена CPU

29.01.2015 22:20

Кристиан Хогсберг (Kristian Høgsberg), создатель проекта Wayland, также известный своими наработками по обеспечению поддержки GPU, используемых в процессорах Intel семейства Skylake, представил серию патчей, которые могут заметно ускорить работу MESA в ситуациях, когда скорость работы ограничена производительностью CPU.

Изменения в основном сводятся к оптимизации реализации мьютексов. Хотя в pthreads и есть достаточно неплохая реализация, исследование показало, что, в целом, накладные расходы в ряде ситуаций могут оказаться достаточно ощутимыми. В результате разработчик подготовил оптимизированный вариант реализации с мьютексами, избегающий в ряде ситуаций выполнения системных вызовов (syscalls). Любопытным фактом является то, что новая реализация мьютексов основана на описании, фигурирующем в книге Ульриха Дреппера "Futexes Are Tricky". Отмечается, что в ряде случаев, когда CPU является узким местом, увеличение производительности может составить до 10%.

  1. Главная ссылка к новости (http://www.phoronix.com/scan.p...)
Автор новости: Аноним
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/41569-mesa
Ключевые слова: mesa
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (19) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 23:33, 29/01/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Сначала повышают производительность 3D, вытесняя остальные процессы CPU, а теперь идут в обход ограничений. Нет чтобы просто сделать нормально, а не добиваться мнимой производительности путём забирания всех прерываний себе?
     
     
  • 2.2, cmp (ok), 01:27, 30/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Сначала всякие интелы делают непонятное железо, а всякие прочие комплектуют этим железом почти 90% устройств производимых, без оглядки на оси отличные от мс.
     
     
  • 3.7, Аноним (-), 06:39, 30/01/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Сначала всякие интелы делают непонятное железо,

    Для начала, там DMA все обложено как собака блохами. Но о такой мелочи крутому эксперту-студоботу знать не дано.

    Во вторых, в патче с реализацией мьютексов нет вообще ничего по части прерываний. Это вообще железко-независимый кусок кода, чистая системная механика, в которую как оказалось могут упираться некоторые нагрузки.

    В третьих, рыночная доля интелского интеграта далека от 100% :)

     
     
  • 4.19, КЭП (?), 16:17, 31/01/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не DMA а NDA.
    DMA это несколько другая штука.
     
     
  • 5.21, burjui (ok), 13:23, 04/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Может, всё-таки, DMA? В контексте разговоров о прерываниях как-то больше смысла несёт.
     
  • 2.4, Аноним (-), 06:26, 30/01/2015 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > мнимой производительности путём забирания всех прерываний себе?

    Скажи-ка дядя, ведь не даром мозги пропил ты за амбаром?! Внимание, вопрос на миллион: где в патче с реализацией мьютексов ну хоть что-то по части работы с прерываниями? :)

     
  • 2.18, BSA (?), 17:36, 30/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Сразу видно, "профессионал" по ОС.
    Сначала изучи, что такое Mutex и Futex в контексте пользователя, а затем пиши про прерывания.
     

  • 1.6, Аноним (-), 06:35, 30/01/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это для всех или только для интела?
    Хотя в любом случае замечательно
     
     
  • 2.8, Аноним (-), 06:41, 30/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Это для всех или только для интела?

    Судя по коду - вообще для всех. Этот код не специфичен для какого либо железа.

     
  • 2.11, 123 (??), 11:58, 30/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Это специфично для pthreads.
    ЗЫ: Про реализацию многопоточности винда/posix и сообщения/вызовы накопилось тонны флуда.
     

  • 1.9, Аноним (9), 09:25, 30/01/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Очень спорная оптимизация. По сути просто перед системным вызовом futex сделал свой CAS. Конечно, теперь в uncontented-случае ему не надо заходить в ядро, но вот в случае contented... Надо пройти через 2 CAS'а, один в userspace, один в futex и потом зайти еще в ядерный вызов мьютекса.

    Ускорение на 10% будет в случае, если за мьютекс никто не дерётся. Если будут драться, то он будет медленней обычных pthread_mutex:)

     
     
  • 2.12, Crazy Alex (ok), 13:33, 30/01/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну, приличный код так и пишется, чтобы в большинстве случаев за мьютекс не дрались...
     
     
  • 3.15, Аноним (9), 14:31, 30/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    много вы такого софта видели?:)
     
     
  • 4.17, Crazy Alex (ok), 15:57, 30/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Да всякого хватает. Насчет качества кода месы я более-менее уверен. Ну и оптимизация в расчёте на код, написанный прямыми руками - стимул эти руки таки выравнивать.
     
  • 2.14, Аноним (-), 14:11, 30/01/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Если будут драться, то он будет медленней обычных pthread_mutex:)

    Так активная драка за мьютекс - по идее не есть нормальное состояние дел.

     

  • 1.10, iZEN (ok), 11:52, 30/01/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    ///---http://lists.freedesktop.org/archives/mesa-dev/2015-January/075263.html
    Including <linux/futex.h> under __GNUC__ is going to break the build of
    Mesa on everything compiled with clang/gcc that isn't Linux.
    ---///
     
     
  • 2.13, Crazy Alex (ok), 13:34, 30/01/2015 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Как по мне - так бы и надо сделать
     
     
  • 3.20, тигар (ok), 20:50, 01/02/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Как по мне - так бы и надо сделать

    а как по мне - твоей маме следовало бы сделать аборт, а не рожать тебя, например;)

     
  • 2.16, commiethebeastie (ok), 15:56, 30/01/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Быстрый код тоже часто является говнокодом.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру