Значит, разделение клиент-сервер не является узким местом X Window?

В ответе это, в нем упоминалось:

Люди также слышат, что X использует «сеть», и думают, что это будет узким местом в производительности. «Сеть» здесь означает локальный сокет домена UNIX, который в современном Linux имеет незначительные накладные расходы. Вещи, которые могут стать узкими местами в сети, есть X-расширения, которые нужно сделать быстро (растровые изображения разделяемой памяти, DRI и т. Д.). Незавершенные потоки не обязательно будут быстрее, чем сокет X, потому что узкие места больше связаны с внутренней проблемой координации нескольких потоков или процессов, обращающихся к одному и тому же оборудованию, чем с минимальными накладными расходами локальных сокетов.

Я не понимаю. Я всегда думаю, что несколько потоков взаимодействуют через общие переменные должны быть быстрее, чем несколько процессов взаимодействуют через сокет домена Unix. Итак ... я ошибаюсь? Неужели координация нескольких потоков отнимает много времени? И порядок выполнения расписания процессов не влияет на производительность Unix. доменный сокет вообще?

Любая идея? Пожалуйста...


Извините, я не уточнил вопрос. Я хотел спросить об эффективности IPC, а не о системе X Window / Wayland.

Я просто хочу знать, почему сокет домена UNIX может работать быстрее, чем разделяемая память? AFAIK, разделяемая память - это самый примитивный способ связи между процессами и потоками, не так ли? Таким образом, сокет домена UNIX должен быть построен на основе механизма общей памяти (с соответствующей блокировкой). Как получилось, что студент (то есть сокет домена Unix) может превзойти своего учителя (то есть разделяемую память)?


person Justin    schedule 12.05.2013    source источник


Ответы (1)


Для производительности важно самое медленное (узкое место). Если какая-то часть программы может быть быстрее, но это не узкое место, изменение этой части программы вам не поможет.

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

С X люди часто цепляются за легкое понимание того, что что-то через сокет всегда может быть немного быстрее, если в одном процессе. Это правда, но это не обязательно имеет значение для общей производительности. Более важен общий дизайн системы ... это то, что пытается исправить что-то вроде Wayland.

person Havoc P    schedule 08.08.2013
comment
Вот почему улучшение производительности всегда должно начинаться с профилирования. ... ну, но иногда мы можем сначала придумать несколько дизайнов, а затем сравнить, какая реализация дизайна лучше (возможно, путем профилирования, как вы сказали) ... я думаю, это еще один подход к повышению производительности. Я имею в виду, что мы можем улучшить производительность не только за счет улучшения существующего (например, X Window), но и за счет изобретения совершенно нового дизайна (например, Wayland). - person Justin; 01.10.2013
comment
Извините, я не уточнил вопрос. Я хотел спросить об эффективности IPC, а не о системе X Window / Wayland. Я пересмотрел исходный вопрос. - person Justin; 01.10.2013