Ну это верно. Вообще RHEL/Centos по ощущениям может быть консервативнее дебиана, я помню ужаснулся когда увидел версию gcc там, зато его админы частенько любят. Чтобы что-то новое там использовать его готовить надо, обязательно epel подключать итд. А вот в OpenSUSE/Ubuntu/Arch все поновее и таких проблем нет.
Проблема со скоростю многопоточности у epoll() действительно была. Но в кокой-то момент она была решена, по-моему даже после EPOLLEXCLUSIVE были косяки, но сейчас я проблем не наблюдаю — треды загружаются равномерно.
Я тоже не особо разбираюсь, но где-то читал исследование, что при достаточно большой температуре нити, даже простой пропилен гликоль распадается на канцерогены. На макс температуре там было 4 канцерогена достаточной концентрации, при низкой толки 1 толи 2. Фейк или нет не знаю, снова быстро вряд ли найду.
Для отлова мультитредных ошибок есть еще хорошая штука — github.com/google/sanitizers/wiki/ThreadSanitizerCppManual
Он есть в последних gcc и clang из коробки, ставить ничего не надо.
Это конечно не во время компиляции проверка, но все равно, помогает очень хорошо.
Про обертки не понял, обертки есть, одна из известных — Boost.Asio. Если говорить про низкий уровень — то скорее у всех узкое место open() и CreateFile().
rsyslog честно не знаю как он оптимизирован, но я вижу проект не такой простой, там и шифрование есть github.com/rsyslog/rsyslog/tree/master/runtime
Я бы первым делом посмотрел strace (или htop + s на треде) и perf питоновского процесса на отсылке и сервера что шлет в сеть. Узкое место наверняка найдется.
Так же вижу вот такие баг репорты bugzilla.redhat.com/show_bug.cgi?id=1047039
там в комментах видно использование select(), что уже недопустимо. Вполне возможно все решается конфигурацией.
Не минусовал, но предположу.
IOCP легко эмулируется через epoll(), есть статья сравнения на хабре habr.com/ru/company/infopulse/blog/415403
т.е. достаточно написать свой небольшой враппер — и удобство точно такое же.
По скорости медленнее тоже врядли будет, в свое время я перепробовал целую кучу методов, включая IOCP, TransmitFile, WSAEnumNetworkEvents… В простом кейсе легкий запрос-ответ, на винде было примерно 60к rps против 110k rps на лине на той же машине.
Я даже пробовал недокументированные извращения с Nt* функциями, но результата это не дало.
А вот основная проблема, что open() и CreateFile() обращаются к метаданным на винте и тоже могут повиснуть — так и остается проблемой, приходится использовать пул потоков.
Дело даже не в том, что не принимают, а заставляют подписать доп соглашение. У них даже бот есть, который во все новые PR отписывает о такой необходимости.
Я один из тех кто пытался придти. Вот основные трудности с чем мы столкнулись при портировании приложения:
1. Приложение пришлось разбить на бэкэнд на С++ и фронтэнд на C# и на бэкэнд были довольно жесткие ограничения по памяти (в зависимости от модели телефона разные).
2. WinAPI для бэкэнда порезанное и частично изменено. В принципе это было и раньше для мобайл версии, но source level несовместимость стала еще больше.
3. Некоторое нужное WinAPI вообще отсутствовало, например GetThreadTimes. Причем оно присутствовало даже вообще в древних win mobile. А студия прекрасно видит загрузку тредов. То-есть оно то есть, но скрыто.
4. Нам надо было компилить ассемблер, но мс придумала свой синтаксис, ни gnu и не apple. Это просто море времени отняло.
5. Слабое коммунити, по тому же асму мы помощи нигде не получили, все пришлось самим.
Да, я несколько раз переустанавливал десятку, чтобы проверить что не испортил другими установками и пробовал разные комбинации, только драйвер nvidia триггерил исправление. Интел и компоненты типа 3D Vision не влияют. Благо десятка привязывается к оборудованию и проблем с активацией не возникло.
Уже пробовал, перебирал все дрова nvidia, и на win8 что была и на win10 после обновления. Интеловские тоже пробовал и до и после.
Это я еще чудом обнаружил что это именно драйвер nvidia, на компе обычно я всегда ставил последний и не парился, а тут надо еще найти какая старая работает.
В инете тоже полно жалоб на это www.servicebox.ru/faq/noutbuki/MSI/gp72m_7rdx/19022-silno-greetsya-noutbuk-msi
но никто толком не понимает от чего, потому решений так не найти.
Как я понял — это в целом optimus такой глючный и на его поддержку быстро забивают, ведь с сайта производителя работает же, какие претензии.
У меня обратная ситуация с nvidia и перегревом, как я понял от технологии optimus. Ноут MSI игровой, видяха GTX870M — работает только пара версий драйверов, с сайта производителя или старые версии с сайта nvidia. Более новые драйвера — все, управление питанием не работает и пользоваться ноутом невозможно (ни в режиме совмещения с интеловской, ни эксклюзивно GPU nvidia). А игры то требуют именно новые драйвера. На лине точно так же не работает noveau, а вот последний бинарный от nvidia — работает.
Из клиентов RDP есть еще remmina, тоже хорошо работает. Добавлю еще что линукс машину можно еще использовать еще и в качестве RDP сервера через xrdp.
Из плюсов по сравнению с виндой еще могу добавить поддержку 8bpp для экономии трафика, в новых виндах куда-то пропала и миниум 16bpp. Так же работает RFX кодек без платного терминального сервера.
Это давняя проблема пакет в оф репозитории vs необновляемая прога с сайта.
Никто не спорит что программа в оф репозитарии — это и надежнее и удобнее.
Проблема тут в том что, что разработчик просто не имеет возможности вот прямо сейчас включить свою прогу во все дистрибутивы, даже самые распространенные.
Потому я считаю идеальный случай — когда прога собирается в обоих вариантах, и однофайловый универсальный пакет, и линкуясь с дистрибутивом. Тогда, если мейнтейнеры подтянутся, — добавят в репу и можно легко пользоваться. Не добавили в данный дистр — ок, можно скачать, но понимать что надо периодически обновлять, если безопасность важна. Так же можно сделать автообновление по типу хрома.
Проприетарный же софт вообще редко добавляют в репу, но иногда добавляют, например, инсталер стима.
Ну разработка драйверов достаточно разная, чтобы можно было разделить (вы же сами привели пример с мысленным разделением). Вот и получается, что пользователи винды заплатят за линукс — только если разработка линукса не окупилась за все продажи. Тогда вы правы. Если таки окупилсь — таки просто разная маржа и тут уже нельзя говорить что пользователи винды оплачивают линукс.
Он есть в последних gcc и clang из коробки, ставить ничего не надо.
Это конечно не во время компиляции проверка, но все равно, помогает очень хорошо.
rsyslog честно не знаю как он оптимизирован, но я вижу проект не такой простой, там и шифрование есть github.com/rsyslog/rsyslog/tree/master/runtime
Я бы первым делом посмотрел strace (или htop + s на треде) и perf питоновского процесса на отсылке и сервера что шлет в сеть. Узкое место наверняка найдется.
Так же вижу вот такие баг репорты bugzilla.redhat.com/show_bug.cgi?id=1047039
там в комментах видно использование select(), что уже недопустимо. Вполне возможно все решается конфигурацией.
IOCP легко эмулируется через epoll(), есть статья сравнения на хабре habr.com/ru/company/infopulse/blog/415403
т.е. достаточно написать свой небольшой враппер — и удобство точно такое же.
По скорости медленнее тоже врядли будет, в свое время я перепробовал целую кучу методов, включая IOCP, TransmitFile, WSAEnumNetworkEvents… В простом кейсе легкий запрос-ответ, на винде было примерно 60к rps против 110k rps на лине на той же машине.
Я даже пробовал недокументированные извращения с Nt* функциями, но результата это не дало.
А вот основная проблема, что open() и CreateFile() обращаются к метаданным на винте и тоже могут повиснуть — так и остается проблемой, приходится использовать пул потоков.
Вот они io_submit.c io_setup.c итд.
Небольшое описание git.kernel.dk/cgit/linux-block/commit/?h=for-next&id=8923ebc04818fcb506829591aa8704baefd661ec
Интерапт вызывался тысячи раз в секунду.
Даже музыка игралась неплохо.
1. Приложение пришлось разбить на бэкэнд на С++ и фронтэнд на C# и на бэкэнд были довольно жесткие ограничения по памяти (в зависимости от модели телефона разные).
2. WinAPI для бэкэнда порезанное и частично изменено. В принципе это было и раньше для мобайл версии, но source level несовместимость стала еще больше.
3. Некоторое нужное WinAPI вообще отсутствовало, например GetThreadTimes. Причем оно присутствовало даже вообще в древних win mobile. А студия прекрасно видит загрузку тредов. То-есть оно то есть, но скрыто.
4. Нам надо было компилить ассемблер, но мс придумала свой синтаксис, ни gnu и не apple. Это просто море времени отняло.
5. Слабое коммунити, по тому же асму мы помощи нигде не получили, все пришлось самим.
Это я еще чудом обнаружил что это именно драйвер nvidia, на компе обычно я всегда ставил последний и не парился, а тут надо еще найти какая старая работает.
В инете тоже полно жалоб на это www.servicebox.ru/faq/noutbuki/MSI/gp72m_7rdx/19022-silno-greetsya-noutbuk-msi
но никто толком не понимает от чего, потому решений так не найти.
Как я понял — это в целом optimus такой глючный и на его поддержку быстро забивают, ведь с сайта производителя работает же, какие претензии.
Из плюсов по сравнению с виндой еще могу добавить поддержку 8bpp для экономии трафика, в новых виндах куда-то пропала и миниум 16bpp. Так же работает RFX кодек без платного терминального сервера.
Никто не спорит что программа в оф репозитарии — это и надежнее и удобнее.
Проблема тут в том что, что разработчик просто не имеет возможности вот прямо сейчас включить свою прогу во все дистрибутивы, даже самые распространенные.
Потому я считаю идеальный случай — когда прога собирается в обоих вариантах, и однофайловый универсальный пакет, и линкуясь с дистрибутивом. Тогда, если мейнтейнеры подтянутся, — добавят в репу и можно легко пользоваться. Не добавили в данный дистр — ок, можно скачать, но понимать что надо периодически обновлять, если безопасность важна. Так же можно сделать автообновление по типу хрома.
Проприетарный же софт вообще редко добавляют в репу, но иногда добавляют, например, инсталер стима.
market.yandex.ru/product--noutbuk-dell-latitude-3480-intel-core-i5-6200u-2300-mhz-14-1366x768-4gb-500gb-hdd-dvd-net-intel-hd-graphics-520-wi-fi-bluetooth-dos/1729076166
В части случаев может и неточность, но обычно реально так и есть, я звонил в магазины.