LINUX.ORG.RU

Избранные сообщения mamboo

Нужно чинить иксы

 , , , ,

X11 robustness: DRI3 без аппаратного ускорения (комментарий)

Сабж

Судя по всему последний раз проблема поднималась в 2018, потом все как-то забыли - да и решения там были весьма сомнительные предлагались - копмозитинг предлагается вынести в иксы, тем самым прибив модульность

В общем, без композитинга всё работает как надо, present через damage вызывает fbCopyNtoN на экранную поверхность, present отрабатывает, пусть и с тирингом.

С композитингом же всё сильно хуже - present делает такое же копирование, но в поверхность окна, для которой работает composite redirect.

Без изменений в композиторе ничего сделать не выйдет - сейчас в протоколе composite композитор получает пиксмапу окна и ожидает что после damage event в ней будут актуальные данные. Это совершенно несовместимос с подходом dri3/present, который привязвает несколько пиксмап к окну и требует лишнего копирования.

Изначальная идея в present предполагала отправлять Notify в композитор. Вероятно от неё отказались т.к это неэффективно - иксы здесь занимаются перессылкой событий и fence между процессами.

В здесь целом напрашивается получение дескриптора для отправки событий композитору напрямую, но это тоже выглядит как какой-то костыль. Но в принципе, dri3 передаёт файловые дескрипторы текстур - почему он не может так же передавать дескрипторы некоего канала с композитором? Звучит как вполне разумное решение, которое будет полезно и для xwayland т.к можно будет передать контроль wayland-композитору напрямую, минуя процесс Xwayland

VK_KHR_swapchain помимо fence оперирует с семафорами. Может можно вообще timeline semaphore задействовать? Но в любом случае надо как-то передавать индекс буфера. Расширение протокола позволит задействовать все возможности Vulkan при условии поддержки композитором. Так же vulkan’овые объекты доступны и в opengl

В общем интересно, остались ли тут разбирающиеся в устройстве иксов и vulkan люди, может кто-нибудь может подкинуть идеи

Возможная идея, что можно пересылать в композитор: https://github.com/notpeelz/monado/blob/main/src/xrt/ipc/client/ipc_client_compositor.c#L737 (freedesktop gitlab опять лежит) Здесь есть 2 варианта функции - с семафорой (включая timeline) и просто с fence. Причём создаётся семафора довольно просто - в vulkan queue отправляется пустой Submit с семафорой, которая ожидается уже другим процессом. То есть даже какая-то дополнительная поддержка со стороны приложения не нужна - дальше вся синхронизация присходит прямо в gpu.

P.S дополнение, всем фанатам и просто пользователям Вяленного, набежавишим в тред. Современный графический стек, предполагающий на каждый чих использовать opengl на клиенте немного несовместим с современными GPU, которые могут потерять все контексты в любой момент на любой чих в шейдере в любом приоложении. И даже если сделать перезапуск композитора с переподключением - это нифига не поможет от падения всего десктопного софта, который вынужден рисоваться через opengl. Почему-то на windows есть GDI и там нет этой проблемы. В иксах же есть свой аналог GDI и потенциальная возможность свести все эти отказы к единой точке, которую устранить. Достаточно избавиться от glamor в сервере, можно даже попытаться переписать его на vulkan, добавив обработку потери контекста. Я сейчас категорически не могу рассматривать рендеринг всех десктопных приложений на клиентах через opengl т.к это создаёт огромные неудобства при gpu reset. Да, можно сделать софтовый wayland композитор и нечто похожее на мой костыльный патч в modesetting, но нормально решить проблему потери контекстов просто нельзя - в архитектуре это просто не предусмотренно. Так что можно хвалить wayland, он прекрасно справляется с медиазадачами вроде 3д десктопа в виртуальной реальности, но превращается в тыкву, когда GPU не может работать

mittorn
()

Отстал от жизни

 ,

Стали часто появляться темы как многие пользуются результатами всяких ChatGPT, но почему-то мне ни разу не попала даже реклама подобного сервиса :( ...

Где вы берёте эти ChatGPT и что сейчас мощнее?

superuser
()

Меня огорчает Remote Desktop в Linux

 , , ,

Нет, правда, это какое-то проклятье.

Есть KDE 6.3. В нем есть только RDP. В целом ок, почему нет. В RDP есть h264. ffmpeg умеет его кодировать/декодировать через GPU. FreeRDP (основная клиентская библиотека для клиентов в Linux) умеет ffmpeg. Казалось бы, все хорошо. НО НЕТ. Сервер, судя по всему, делает кодирование аппаратно, а вот клиент, несмотря на опциальную поддержку VAAPI, все равно скатывается в CPU и тормозит как полумертвая героиновая шлюха со сгнившим мозгом. Причем любой клиент, потому что все они по сути врапперы над libfreerdp-client.so.

С гномом примерно та же история, потому что FreeRDP.

Тем временем у аутистов из тусовки вокруг wlroots все прекрасно работает через VNC. Есть wayvnc, есть wlvncc, и используя эту парочку и sway/labwc можно наслаждаться 4k@60Hz через аппаратный h264 с низким задержками, достаточными чтобы даже в игрушки играться. Да, надо обмазаться скриптами и руками надрочить разницу в скалировании, разрешениях и так далее, но в итоге оно работает.

Как так вышло-то?

gaylord
()

X11 robustness: DRI3 без аппаратного ускорения

 , , ,

X11 robustness: DRI3 без аппаратного ускорения

Уже больше 5 лет как использую разные GPU от AMD и сталкиваюсь с разнообразными проблемами, приводящими к его зависанию. К сожалению, в современном линуксовом десктопе, особенно на AMD зависание GPU зачастую не получается обработать прозрачно для софта. В лучшем случае могут попортиться данные, связанные с активными задачами, в худшем - gpu вообще становится неработоспособен до снятия питания (этим грешили некоторые APU на gfx9)

Успешный GPU Reset

Если в случае с неработоспособным GPU другого выхода, кроме как отказ от него нет, дискретные GPU обычно могут успешно пройти сброс.

На моём опыте, с rx580 это приводило к превращению всего содержимого VRAM в шум, на котором слегка можно было различить контуры ранее находившихся там текстур.

На rdna2 же обычно содержимое vram остаётся целым, однако не всегда. С некоторой вероятностью обнаруживается периодический мусор после сброса, обычно в этом случае попытка использовать работающие с GPU приложениями приведёт к повторному зависанию. В общем, никаких гарантий нет и по хорошему все GPU клиенты должны пересоздать все контексты с нуля

( читать дальше... )

mittorn
()

Huawei D14 не видит порты СОВСЕМ

 

Достался ноут Nbl-WAQ9R D14 без SSD и радиатора. Купил и установил, а USB порты в биосе молчат! 2 USB порта совершенно не видит, а эзернета нет. Вопрос знатокам - может это железная болезнь серийная этих моделей? С уважением, =GrafBorisfen=

grafborisfen
()

Заработает ли Linux на Lenovo Thinkbook 14+ 2024 с процессором Intel Core Ultra 7 155H?

 , ,

Здравствуйте. Решил что копить всё таки буду на Lenovo Thinkbook 14+ 2024 года с процессором Intel Core Ultra 7 155H со встройкой. Что на этом ноутбуке будет работать под Linux, а что нет, и запустится ли на нём Linux вообще? Вот ссылка на этот ноутбук с Aliexpress(это ни в коем случае не реклама, продавец мне не платил). https://aliexpress.ru/store/1100157084

ivanbrash
()

Ликбез по OpenID Connect

 ,

Материалы по OpenID в интернете или слишком глубоки и объёмны, или чересчур узки и охватывают какой-то один случай применения. Иногда и то и другое сразу.

Вопрос: какие существуют способы авторизации без пароля?

На серверах работают 2 программы, которые обмениваются информацией через REST. Чтобы злоумышленники не вклинились, сделали авторизацию через OAuth 2.0. В настройках каждого сервера есть «configuration URL» (чтобы обращаться на «configuration URL»/.well-known/openid-configuration), «client ID» и «client secret». Как называется такой способ?

Далее. Для управления этими программами есть гуёвый клиент. Ему требуются только URL и client ID. Как называется такой способ?

И как они сочетаются?

question4
()

Wayland VS Xorg

 ,

Судя по графикам, которые я нашёл в интернете, FPS в играх примерно одинаковый в Wayland и Xorg. При этом в KDE могут наблюдаться проблемы и резкое снижение производительности на обоих.

И в целом никакой особой разницы при использовании нет. Зато есть баги в новом Wayland’е и драйверах, и их следствия.

Я помню, что разработчик Wayland говорил, что Xorg был медленным и перегруженным и всё такое, так в чём конкретно это заключается?

Какой тогда был смысл переходить с проверенной технологии на новую, что реально хорошего она дала? Время, силы, деньги ушли. Или это всё просто подковёрные игры Бигтеха?

И ещё по FPS. В Xorg для поднятия FPS в былые времена запускали игры в новом сеансе X-сервера. (Это была довольно известная фишка среди проюзеров) https://help.ubuntu.ru/fullcircle/25/ускорение_игр_под_х

Как с этим дело обстоит сегодня на Wayland?

NeoX
()

Как подключиться к виндовой рабочей группе с линукса

 

Здравствуйте. Помогите решить задачу? Дано: Сисадмин (стаж 4 года) & начинающий линуксоид / Комп с Windows / ноутбук с Linux / 20-летний коммутатор, на котором несколько портов уже сгорело . Задача: подключить ноутбук с Linux к РАБОЧЕЙ ГРУППЕ, созданной Windows.

Предыстория. На работе есть директорский комп с Win7 и динамическим айпишником, он ошибочно женщинами называется «сервером». И ежедневно выключается. По факту на нём просто расшарена сетевая папка, которая называется «сервер». На этом компе используется рабочая группа, которая называется NETTD. На win7 или 10-ке нет проблем с присоединением компьютеров к рабочей группе и расшаренной сетевой папке. Но я захотел попробовать со своего рабочего ноутбука подключиться к шаре, используя Astra Linux в качестве второй системы.

Короче, что я делал:

  1. обновил индексы пакетов: sudo apt update.
  2. Установил клиент Samba: sudo apt install fly-admin-samba. В панели управления появился пункт «обшие сетевые папки».
  3. отредактировал название рабочей группы: "sudo nano /etc/samba/smb.conf и где workgroup = workgroup написал NETTD. Перезагружаю samba командой, которую нашёл в инете (сейчас уже не помню).
  4. захожу в любую папку и пишу: smb://192.168.0. / и так как ip динамический и я не знаю, какой он сейчас, расшарил на другом компьютере со статичным ip сетевую папку «журнал», которую видят другие компы с виндой.

И у меня ничего не получилось в Astr(e)

Есть возможность ввода пароля. Я ввожу имя пользователя, в графе «домен» название «рабочей группы» и оставляю пустым поле пароль, так как его нет. Потом создал, думая, может линуха думает, что он обязательно должен быть

Название ошибки просто не удалось подключиться.

Дома я попробовал сделать тоже самое. Расшарил папку на Win10, изменил название рабочей группы на тот же NETTD, настроил общий доступ к файлам и принтерам. Пытаюсь подключиться по Ip адресу своего компьютера, но тоже ничего не выходит. Пробовал на Linux Mint, ubuntu, Astr(е) и Rosa Linux. Всё одно и то же. Не удалось подключиться. Неделю бьюсь. Может видео какое есть в интернете? В основном встречается, как из виндуса подключиться к линуксу. Но мне это вообще не нужно. Хочу наоборот.

На основной работе «домен» с Win Server 2012. Там всё хорошо. sudo apt install fly-admin-ad-client. Ввожу имя администратора домена, пароль, контроллер домена и всё Прекрасно работает! Подключение через ip адрес работает: smb://192.168.0.168/ и видны все расшаренные папки.

Перемещено hobbit из general

dimentijj
()

Как организовать автовыгрузку из свопа?

 

Ситуация следующая. Запускается программа А, которая занимает какую-то часть памяти. Запускается программа Б, которой не хватает оставшейся свободной памяти, поэтому программа А отправляется в своп. После закрытия программы Б, программа А остаётся в свопе и из-за этого люто тормозит. Приходится делать swapoff -a и swapon -a чтоб вернуть прежнюю отзывчивость.

Вопрос: есть ли способы настроить поведение таким образом, чтоб при освобождении памяти система автоматически доставала данные из свопа не дожидаясь момента, когда они понадобятся?

u5er
()

При обновлении пакетов из репозитория fedora40-update Discover требует прокси

 ,

Всем привет, из-за проблем с YouTube поставил spoofdpi, запускается как прокси. Но теперь при обновлении пакетов с fedora40-upate c помощью Discover выдает ошибку что CURL не находит прокси(когда spoofdpi не запущен) остальное работает нормально и устанавливает новые пакеты и родных репозиториев fedora, все flatpack (и fedora-flatpack, и flatpack.org) и обновляется и устанавливает. Если обновляться через yum или dnf то всё в норме. Пытался найти в файлах настройки прокси, но их нет. Подскажите как можно исправить. Удалил Discover, yum remove и установил вновь. Не помогло. Может кто знает как решить проблему.

Stazot
()

Как писать программы для esp32?

 ,

Как-то так сложилось, что в руки попала esp-wroom-32 и попросили для неё написать программы.

Есть небольшой опыт программирования на ассемблере для avr: работа с прерываниями по таймеру и взаимодействие по UART. Для этого достаточно:

  • текстового редактора
  • avr-gcc
  • avrdude
  • make (опционально)

Для stm32 на LOR’е опубликован шикарнейший цикл статей. Спасибо, @vbr! На практике, признаюсь, пока не пробовал.

А как быть с esp32? В официальной инструкции рекомендуется использовать ESP-IDF (integrated development framework, если правильно помню). Я попробовал загрузить базовые примеры («Привет, Мир!» и помигать диодиком) и пришёл в ужас от того, как эта Python поделка секунд >10 это дело загружает.

Также попробовал это дело через Arduino IDE, только базовые примеры сам уже написал. Гораздо быстрее всё грузится, но всё равно – такое себе.

Какой необходимый минимум программ, чтобы работать с esp32?

Jullyfish
()

LLama на 4 гигах

 

Какую из версий/моделей ламы реально запустить на n3710 и 4 гигах оперы?

skidphysic
()

Хороший мануал по потребительской цифровой схемотехнике

 ,

Коллеги, мой друг делает ремонт видеокарт, цепи питания в ноутбуках, bga-пайку и т.д. и т.п..

Он ищет для развития:

  1. и/или чувака, или мануал уровня «цифровая пользовательская схемотехника для чайников», чтобы понимать, почему тут стоит MOSFET, и почему тут генератор тактов и т.д. и т.п.;
  2. можно и видео уроки на английском .

Заранее благодарю.

pinachet
()

Есть ли альтернатива Emacs?

 , ,

JB требует VPN.
VS требует Windows.
VSCode сливает всё на сервер дополнениями.

Что выбрать, чтобы надолго и минимум зависимости проекта от компаний?

Vim с плагинами - инородная хрень. Голый Vim для front/back -> (‿|‿)

Eulenspiegel
()

Разобраться с Самбой прошу.

 ,

Fedora 41. Делаю по букварю https://docs.fedoraproject.org/en-US/quick-docs/samba/ . Пытаюсь расшарить каталог на отдельном разделе, примонтированном в /mnt/Disk. На шару не заходит с другого компа, как и с телефона. Пишет нет прав доступа к папке. Если локально заходить, файл или папка smb://fedora.local/share не существует. Права

drwsrwsr-x.  2 igorka share    4096 дек 10 21:09  share

Но если сделать каталог в домашней директории и поменять в конфиге самбы путь, то все работает. Как так то? Сильно не пинайте. Я только учусь.

igorka82
()

Пилю генератор кода для компилятора

 , , ,

Здравствуйте, теребятки! С вами наша непостоянная рубрика ненормальное программирование.

В качестве пет-проекта я потихоньку пилю собственный Ada-подобный ЯП. Планов на фичи языка очень много, но пока он по фичам не далеко ушел от ранних вариантов сишечки. Однако сегодня не об этом. Сегодня я вам хочу рассказать о генерации кода.

Генерация кода в настоящее время реализована из синтаксического дерева, без трансляции в отдельное представление для оптимизации. Обычно так не делают, так делать неправильно. Но реализовывать полноценную систему анализа графа управления в мои задачи не входило, поэтому я постарался выжать эффективность насколько возможно из трансляции, управляемой синтаксическим деревом.

Сегодня мы посмотрим, что получается, если решать задачу заведомо неподходящим способом.

Некоторые используемые приёмы оптимизации:

  1. Отслеживание, какие константы или значения выражений загружены в регистры и устранение избыточных загрузок.
  2. Переупорядочивание вычисления операндов выражения.
  3. Устранение выдачи неиспользованных меток. (Помогает лучше отслеживать состояние регистров в п.1.)
  4. Устранение избыточных цепочек jmp-ов. (Когда jmp делается на следующий jmp.)

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

Пример 1.

Генератор кода устранил 4 инструкции mov EAX, dword [EBP+8], так как увидел, что значение переменной Index уже загружено в регистр.

Функция:

char @DictGetFullyQualifiedName(word D)
	when D >= nDict:
		StopInternal(__FILE__, __LINE__);

	word Index = Dict[D].FullyQualifiedName;
	when Index != 0:
		return @Char[Index];

	char Buff[nBUFF];
	strbuf buf;
	strbuf_init(@buf, @Buff, nBUFF);
	Dict_MakeFullyQualifiedName(@buf, D);

	Index = SaveString0(@Buff);
	Dict[D].FullyQualifiedName = Index;
	return @Char[Index];
end

Сгенерированный код:

@10342:                                  ; ## DictGetFullyQualifiedName ##
        push    EBP
        mov     EBP,  ESP
        sub     ESP,  144
                                         ; #line compiler_dict.ctxi:84
        mov     EAX,  dword [EBP+8]
        cmp     EAX,  dword [@@DATA+8476676]
        jb      @10343
                                         ; #line compiler_dict.ctxi:85
        push    dword 85
        push    dword @@ROLITERALS+7329
        call    @10235                   ; StopInternal
@10343: 
                                         ; #line compiler_dict.ctxi:87
        mov     EAX,  dword [EBP+8]
        imul    EAX,  77
        mov     EAX,  dword [@@DATA+EAX+776684]
        mov     dword [EBP-4], EAX
                                         ; #line compiler_dict.ctxi:88
                                         ; Node link reuse in CodePrimaryWrapped
        ; Переиспользуется значение Index в регистре EAX
        test    EAX,  EAX
        je      @10346
                                         ; #line compiler_dict.ctxi:89
                                         ; Node link reuse in CodePrimaryWrapped
        ; Переиспользуется значение Index в регистре EAX
        add     EAX,  @@DATA+49288
        leave
        ret     4
@10346: 
                                         ; #line compiler_dict.ctxi:91
                                         ; #line compiler_dict.ctxi:92
                                         ; #line compiler_dict.ctxi:93
        push    dword 128
        lea     EAX,  [EBP-132]
        push    EAX
        lea     EAX,  [EBP-144]
        push    EAX
        call    @10126                   ; strbuf_init
                                         ; #line compiler_dict.ctxi:94
        push    dword [EBP+8]
        lea     EAX,  [EBP-144]
        push    EAX
        call    @10335                   ; Dict_MakeFullyQualifiedName
                                         ; #line compiler_dict.ctxi:96
        lea     EAX,  [EBP-132]
        push    EAX
        call    @10272                   ; SaveString0
        mov     dword [EBP-4], EAX
                                         ; #line compiler_dict.ctxi:97
                                         ; Node link reuse in Code_ASSIGN (1)
        ; Переиспользуется значение Index в регистре EAX
        mov     EBX,  dword [EBP+8]
        imul    EBX,  77
        mov     dword [@@DATA+EBX+776684], EAX
                                         ; #line compiler_dict.ctxi:98
                                         ; Node link reuse in CodePrimaryWrapped
        ; Переиспользуется значение Index в регистре EAX
        add     EAX,  @@DATA+49288
        leave
        ret     4

В этом примере есть интересный фрагмент:

        mov     EAX,  dword [EBP+8]
        cmp     EAX,  dword [@@DATA+8476676]
        jb      @10343
                                         ; #line compiler_dict.ctxi:85
        push    dword 85
        push    dword @@ROLITERALS+7329
        call    @10235                   ; StopInternal
@10343: 
                                         ; #line compiler_dict.ctxi:87
        mov     EAX,  dword [EBP+8]

Здесь также можно было бы устранить повторную загрузку mov EAX, dword [EBP+8], но это пока не реализовано.

  1. Компилятор знает, что StopInternal не возвращает управление.
  2. Единственный переход по метке @10343 выполняется из места, в котором EAX уже содержит нужное значение.
  3. Таким образом вторая загрузка регистра избыточна.
  4. Но чтобы отследить это, необходим продвинутый анализ перехода по меткам, делать который в мои планы пока не входит.

Пример 2.

Вот еще пример устранения загрузок локальной переменной. Генератор кода дважды переиспользует значение переменой L в регистре EAX:

	word L = strlen(@Dst);
	if L > 1 then
		if str_has_char(@fpath_p_dir_separators, Dst[L - 1]) == 0 then
			strn_cat(@Dst, @fpath_p_dir_separator, Size);
		end:if
	end:if
                                         ; #line include/fpath.ctxi:131
        push    dword [EBP+8]
        call    @10013                   ; strlen
        mov     dword [EBP-4], EAX
                                         ; #line include/fpath.ctxi:132
                                         ; Node link reuse in CodePrimaryWrapped
        cmp     EAX,  1
        jbe     @10179
                                         ; #line include/fpath.ctxi:133
                                         ; Node link reuse in CodePrimaryWrapped
        dec     EAX
        add     EAX,  dword [EBP+8]
        mov      AL,  byte  [EAX]
        push    EAX
        push    dword [@@DATA+44]
        call    @10106                   ; str_has_char

Пример 3.

В этом примере генератор кода понимает, что можно повторно использовать константу в EAX, но не понимает, что можно повторно использовать указатель в EBX.

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

        mov     EAX,  100000
        mov     EBX,  dword [EBP-8]
        mov     dword [EBX+44], EAX
                                         ; #line compiler_dict.ctxi:117
                                         ; Node link reuse in Code_ASSIGN (1)
        mov     EBX,  dword [EBP-8]
        mov     dword [EBX+32], EAX
                                         ; #line compiler_dict.ctxi:118
                                         ; Node link reuse in Code_ASSIGN (1)
        mov     EBX,  dword [EBP-8]
        mov     dword [EBX+36], EAX
                                         ; #line compiler_dict.ctxi:119
                                         ; Node link reuse in Code_ASSIGN (1)
        mov     EBX,  dword [EBP-8]
        mov     dword [EBX+40], EAX
                                         ; #line compiler_dict.ctxi:120
                                         ; Node link reuse in Code_ASSIGN (1)
        mov     EBX,  dword [EBP-8]
        mov     dword [EBX+12], EAX
                                         ; #line compiler_dict.ctxi:121
                                         ; Node link reuse in Code_ASSIGN (1)
        mov     EBX,  dword [EBP-8]
        mov     dword [EBX+16], EAX
                                         ; #line compiler_dict.ctxi:122
                                         ; Node link reuse in Code_ASSIGN (1)
        mov     EBX,  dword [EBP-8]
        mov     dword [EBX+20], EAX
                                         ; #line compiler_dict.ctxi:123
                                         ; Node link reuse in Code_ASSIGN (1)
        mov     EBX,  dword [EBP-8]
        mov     dword [EBX+24], EAX

Примеры 4, 5, 6.

Устранение загрузок в условных выражениях:

	if rs >= BRACKET_LEX_SIZE | rs < 1 then
		StopInternal(__FILE__, __LINE__);
	end
        mov     EAX,  dword [EBP-8]
        cmp     EAX,  3
        jae     @11156
                                         ; Node link reuse in CodePrimaryWrapped
        cmp     EAX,  1
        jae     @11155
@11156: 
                                         ; #line frontend_syn_brackets.ctxi:40
        push    dword 40
        push    dword @@ROLITERALS+7664
        call    @10235                   ; StopInternal
@11155: 

В теле цикла после проверки условия цикла:

	while i < nOperator do
		word j = i + 1;
		...
        mov     EAX,  dword [EBP-4]
        cmp     EAX,  dword [@@DATA+12180364]
        jae     @11180
                                         ; #line frontend_syn_operators.ctxi:66
                                         ; Node link reuse in CodePrimaryWrapped
        inc     EAX
        mov     dword [EBP-8], EAX
	while i < nOperator do
		if Operator[i].Prio > Prio then
		...
        mov     EAX,  dword [EBP-8]
        cmp     EAX,  dword [@@DATA+12180364]
        jae     @11197
                                         ; #line frontend_syn_operators.ctxi:120
                                         ; Node link reuse in CodePrimaryWrapped
        imul    EAX,  36
        mov     EAX,  dword [@@DATA+EAX+12178080]
        cmp     EAX,  dword [EBP+12]
        jbe     @11198
wandrien
()

Wayland GBM (А знали ли вы?)

 ,

Постоянно встречаются вэйланд-нигилисты, которые его собсно, отрицают, ога.

Мне кажется пришло время пояснить за слона в комнате – GBM.

Знали ли вы, что в вейланде всю основную работу выполняет GBM???

Тоесть, представьте, все окна спавнятся сразу в видеопамяти, минуя процессор, если это игры под вайном/SDL, либо программы с современными тулкитами.

И композитинг тоже выполняется в ЖБМ, сразу в видеокарте, тоесть – отрендеренные окна не возвращаются в операривную память…

И даже (ПРЕДСТАВЬТЕ) все программы, даже в оконном режиме, могут использовать все преимущества DRI3.

Подумайте над этим.

Set440
()

Крайне медленный CIFS через OpenConnect

 , ,

Всем привет,

Имеется сервер OpenConnect который слушает на порту 443/tcp. VPN работает относительно нормально, SSH вполне себе юзабельно.

В sysctl записано:

net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

Вывод iperf:

Connecting to host lenin.corp.example.com, port 5201
[  5] local 10.66.78.212 port 41586 connected to 192.168.35.251 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  3.38 MBytes  28.3 Mbits/sec    0    277 KBytes
[  5]   1.00-2.00   sec  5.62 MBytes  47.2 Mbits/sec    0    516 KBytes
[  5]   2.00-3.00   sec  7.88 MBytes  66.0 Mbits/sec    0    904 KBytes
[  5]   3.00-4.00   sec  10.9 MBytes  91.2 Mbits/sec    0   1.41 MBytes
[  5]   4.00-5.00   sec  9.88 MBytes  82.8 Mbits/sec    0   1.89 MBytes
[  5]   5.00-6.00   sec  14.0 MBytes   117 Mbits/sec    0   2.60 MBytes
[  5]   6.00-7.00   sec  8.25 MBytes  69.2 Mbits/sec  344   2.11 MBytes
[  5]   7.00-8.00   sec  9.88 MBytes  82.8 Mbits/sec  450   1.53 MBytes
[  5]   8.00-9.00   sec  10.9 MBytes  91.2 Mbits/sec    0   1.62 MBytes
[  5]   9.00-10.00  sec  9.88 MBytes  82.8 Mbits/sec    0   1.69 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  90.5 MBytes  75.9 Mbits/sec  794             sender
[  5]   0.00-10.18  sec  89.0 MBytes  73.4 Mbits/sec                  receiver

iperf Done.

Немного смущают 794 пересланных пакета, игры с mtu к улучшению не привели.

Проблема заключается в том что samba работает крайне медленно, для того чтобы сделать mount требуется несколько минут, также для ls -la.

Подскажите, пожалуйста, в какую сторону смотреть? Использовать UDP не вариант, ибо блокирует РКН.

UPD: На андроиде все нормально, проблема наблюдается только на Arch Linux.

alex07
()

KDE X11 несколько графический сессий одновременно и VNC

 

Я тут узнал, что можно одновременно на нескольких tty запускать графические сессии.
И тут закралась мысль, а можно ли не только запустить, а использовать одновременно две графические сессии?
Одной я буду пользоваться, как обычно, а на другой запущу vnc-сервер и к нему подключусь с другого устройства.

Таким образом, я буду просто использовать систему, как всегда, а на другом tty через vnc-сервер кто-то другой будет работать.

Но это не совсем работает, как надо.
2 графические сессии запустил, одна запустилась автоматом при запуске системы, вторую на другом tty вручную запустил через startx.
vnc-сервер запустил, подключился к vnc-серверу с другого устройства. Но как только я переключаюсь с того tty на котором запущен vnc-сервер на другой tty, vnc-клиент перестаёт получать изображение. Если вернуться обратно, то изображение появляется.

Может ли такое вообще работать? Не получается нагуглить, возможно ли такое вообще, и как это настроить.
У меня KDE 5 X11.

vvvv
()