Проблемы работы программ в среде mono в linux
Модератор: /dev/random
-
v567
- Сообщения: 92
Проблемы работы программ в среде mono в linux
Здравствуйте.
Под .net 2.0 была разработана мощная программа, использующая как сложные вычисления, так и активно использующая графику (3х мерная не использовалась). В основном применялись карты местности и строились графики с использованием библиотеки zedgraph (т.е. основная программа размером около 1.3 Мб использовала dll). Первоначально комплекс был разработан на Delphi 6.0, затем переведен под .Net. С появлением Mono попробовал поработать с программой в Linux. Выбрал OpenSUSE 11.1, поскольку другие дистрибутивы с Mono работали хуже (медленнее, либо вообще его не имели или Mono работал криво). Результат работы с программой был удручающим. Если в WinXP (с использованием Mono 2.4 под Win) программа отрабатывала за 34 сек, то в Suse (с использованием Mono 2.4 под Linux) программа работала уже 214 сек, т.е. выполнялась в 6 раз медленнее!!! Для справки: с использованием .Net Framework 2.0 под Win программа выполнялась 17 секунд! На мой взгляд в столь печальном состоянии дел виновата графическая подсистема Linux (на сколько мне известно графический сервис X-ов не встроен в ядро как в XP, а работает как обычное приложение). В настоящее время жду появления Ubuntu 9.04, где должен вроде как присутствовать Mono 2.0. Хотя сомневаюсь, что скорость работы в ubunte так уж сильно будет отличаться от результатов в Suse. И теперь вопросы:
1. Что по Вашему мнению может обьяснить столь медленную скорость работы данного приложения в linux в сравнении с win XP?
2. Что Вы посоветуете сделать, чтобы с этой программой можно было поработать в любой из версий linux?
Под .net 2.0 была разработана мощная программа, использующая как сложные вычисления, так и активно использующая графику (3х мерная не использовалась). В основном применялись карты местности и строились графики с использованием библиотеки zedgraph (т.е. основная программа размером около 1.3 Мб использовала dll). Первоначально комплекс был разработан на Delphi 6.0, затем переведен под .Net. С появлением Mono попробовал поработать с программой в Linux. Выбрал OpenSUSE 11.1, поскольку другие дистрибутивы с Mono работали хуже (медленнее, либо вообще его не имели или Mono работал криво). Результат работы с программой был удручающим. Если в WinXP (с использованием Mono 2.4 под Win) программа отрабатывала за 34 сек, то в Suse (с использованием Mono 2.4 под Linux) программа работала уже 214 сек, т.е. выполнялась в 6 раз медленнее!!! Для справки: с использованием .Net Framework 2.0 под Win программа выполнялась 17 секунд! На мой взгляд в столь печальном состоянии дел виновата графическая подсистема Linux (на сколько мне известно графический сервис X-ов не встроен в ядро как в XP, а работает как обычное приложение). В настоящее время жду появления Ubuntu 9.04, где должен вроде как присутствовать Mono 2.0. Хотя сомневаюсь, что скорость работы в ubunte так уж сильно будет отличаться от результатов в Suse. И теперь вопросы:
1. Что по Вашему мнению может обьяснить столь медленную скорость работы данного приложения в linux в сравнении с win XP?
2. Что Вы посоветуете сделать, чтобы с этой программой можно было поработать в любой из версий linux?
-
kamre
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Re: Проблемы работы программ в среде mono в linux
Да известно что: корявая архитектура X-ов (когда все быстрее софтварно рендерить на клиенте и передавать одну картинку на сервер вместо использования команд серверу для отрисовки) и полный фэил с видеодрайверами по сравнению с WinXP.
В линуксе из графики работает быстро только OpenGL на NVIDIA картах (и то не без косяков). 2D тормозит и на NVIDIA.
Я сравнивал Java2D и Qt4: http://trac-hg.assembla.com/jgears В принципе Java2D с OpenGL pipeline не сильно от WinXP отстает. На счет mono не знаю. Скорее всего там для векторной 2D графики должен использоваться Cairo. Тогда можно попытаться включить отрисовку в Cairo через OpenGL.
-
Olegator
- Сообщения: 2493
- ОС: SuseLinux 11.2 KDE 4.3
Re: Проблемы работы программ в среде mono в linux
мне кажется потому что mono, проект ещё сырой и естественно оптимизацией кода пока никто не занимается.
переписать её с использованием нормальной библиотеки
с каких пор клиент-серверная архетектура считается корявой? я думаю с Вашим заявлением многие поспорят.
бред, а что я такой ущёрбный тут с ati сижу и в 3d игры играю?
И с чего Вы вообще взяли что виноваты x? Если учесть что используется mono на котором ещё не написали ни один толковый проект, а то что написано оказалось ужасно требовательным к системным ресурсам.
-
Olegator
- Сообщения: 2493
- ОС: SuseLinux 11.2 KDE 4.3
Re: Проблемы работы программ в среде mono в linux
v567 Вы смотрели что жрёт ресурсы во время работы программы?
-
kamre
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Re: Проблемы работы программ в среде mono в linux
В чем смысл этой клиент-серверной архитектуры в такой реализации как сейчас, если быстрее софтварно рендерить на клиенте и передавать одну картинку на сервер вместо использования команд серверу для отрисовки? Видеокарта и ее ресуры находятся на сервере. Рендерить с помощью ресурсов видео карты должно быть быстрее.
Пример отсюда и еще то, что с новым Qt 4.5 и raster graphics engine графика в линуксе работает быстрее. Это показывает то, что или в Trolltech/Nokia не умеют программировать под X-сервер или то, что Xorg с своей клиент-серверной архитектурой и имеющимися драйверами тормозит.
-
Olegator
- Сообщения: 2493
- ОС: SuseLinux 11.2 KDE 4.3
Re: Проблемы работы программ в среде mono в linux
если смотреть в лоб, то объём передаваемых данных. Вы так уверенно заявляете что проблема в X, ничего не зная о потребляемых ресурсах программы. Вообще предлагаю не раздувать флейм на эту тему.
если оптимизация называется "не умеют программировать", то да. И на каком основании Вы заявляете что Trolltech/Nokia не умеют программировать под X-сервер? Вы их код смотрели до и после qt4.5?
-
kamre
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Re: Проблемы работы программ в среде mono в linux
Вы как-то не правильно меня поняли. Уж они то умеют программировать под X-сервер, и даже они не могут обойти проблемы и сделать эффективную реализацию, потому-то быстрее получается передавать картинку, чем рисовать через протокол X-сервера.
-
Olegator
- Сообщения: 2493
- ОС: SuseLinux 11.2 KDE 4.3
Re: Проблемы работы программ в среде mono в linux
ладно что-то мы и вправду о разном разговаривем, давайте сойдёмся на том, что винить иксы рано, так как мы не знаем что жрёт ресурсы?
-
kamre
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Re: Проблемы работы программ в среде mono в linux
В этом конктреном случае с Mono и вправду рановато еще
Наверное стоило бы запустить приложение с профайлером и посмотреть чтоже жрет ресурсы.
-
v567
- Сообщения: 92
Re: Проблемы работы программ в среде mono в linux
К вопросу об использовании ресурсов.
Если верить системному монитору гнома, то работает 34 процесса (включая сам монитор и программу). Ненулевая загрузка процессора у процессов mono и gnome-system-monitor. Программа своего отдельного процесса не имеет. Загрузки процессора указанными процессами меняются со временем в сторону уменьшения, однако скорость работы программы не увеличивается. Mono грузит процессор от 45 до 15%, gnome-system-monitor от 10 до 3%. Все другие процессы 0%. Однако на своих графиках монитор гнома сразу же после запуска программы непрерывно в процессе её работы показывает, что процессор загружен на 100%, загрузка файла подкачки 40% и не меняется со временем, сеть не используется - нулевая процентная загрузка загрузка.
Для эксперимента создал простенькую WinForm-программку c одной формой с надписью по всей форме, запустил под mono и стал мышкой не отпуская таскать по экрану. Монитор сразу стал показывать 100% загрузку процессора. Получилось, что 2D графика жестоко съедает процессорное время.
Заторможенность в работе с графикой чувствуется не только при использовании mono. Визуально любое приложение работает медленнее, чем в XP. Просто сравнить не с чем было пока вот с программой не столкнулся. До того как стал с этой программой в linux возиться был уверен на 100%, что linux с графикой работает шустрее, чем перегруженный всяким мусором windows. Теперь вот пребываю в недоумении.
Покопался в инете. Как оказалось проблема отнюдь не нова. Народ уже давно жалуется на производительность 2D графической подсистемы linux. 3D вроде шустрее работает, т.к. openGL используется. Вот ссылка на жалобы:
http://www.linux.org.ru/view-message.jsp?msgid=1844062
Кстати mono 2.4 уже вполне устойчивый продукт. По крайней мере программа ни разу не вылетела, хотя чего в ней только нет (исходники к слову содержат около 42 тыс непустых строк). С помощью mono удалось выловить около 10 ошибок синхронизации при работе с потоками, которые в .NET Framework не вылавливались.
Может есть какой-нибудь нормальный кроссплатформенный тест типа geekbench только для графики, чтоб и в linux и в XP шел? Тогда возможно вопросы отпали бы сами собой.
Если верить системному монитору гнома, то работает 34 процесса (включая сам монитор и программу). Ненулевая загрузка процессора у процессов mono и gnome-system-monitor. Программа своего отдельного процесса не имеет. Загрузки процессора указанными процессами меняются со временем в сторону уменьшения, однако скорость работы программы не увеличивается. Mono грузит процессор от 45 до 15%, gnome-system-monitor от 10 до 3%. Все другие процессы 0%. Однако на своих графиках монитор гнома сразу же после запуска программы непрерывно в процессе её работы показывает, что процессор загружен на 100%, загрузка файла подкачки 40% и не меняется со временем, сеть не используется - нулевая процентная загрузка загрузка.
Для эксперимента создал простенькую WinForm-программку c одной формой с надписью по всей форме, запустил под mono и стал мышкой не отпуская таскать по экрану. Монитор сразу стал показывать 100% загрузку процессора. Получилось, что 2D графика жестоко съедает процессорное время.
Заторможенность в работе с графикой чувствуется не только при использовании mono. Визуально любое приложение работает медленнее, чем в XP. Просто сравнить не с чем было пока вот с программой не столкнулся. До того как стал с этой программой в linux возиться был уверен на 100%, что linux с графикой работает шустрее, чем перегруженный всяким мусором windows. Теперь вот пребываю в недоумении.
Покопался в инете. Как оказалось проблема отнюдь не нова. Народ уже давно жалуется на производительность 2D графической подсистемы linux. 3D вроде шустрее работает, т.к. openGL используется. Вот ссылка на жалобы:
http://www.linux.org.ru/view-message.jsp?msgid=1844062
Кстати mono 2.4 уже вполне устойчивый продукт. По крайней мере программа ни разу не вылетела, хотя чего в ней только нет (исходники к слову содержат около 42 тыс непустых строк). С помощью mono удалось выловить около 10 ошибок синхронизации при работе с потоками, которые в .NET Framework не вылавливались.
Может есть какой-нибудь нормальный кроссплатформенный тест типа geekbench только для графики, чтоб и в linux и в XP шел? Тогда возможно вопросы отпали бы сами собой.
-
Ism
- Сообщения: 1261
- Статус: Никто, по сути быдло
Re: Проблемы работы программ в среде mono в linux
glxgears плавно крутятся ?. Возможно изза настроек видеокарты и есть тормоза.
-
v567
- Сообщения: 92
Re: Проблемы работы программ в среде mono в linux
glxgears в стандартном окне показывает около 2100 fps, если развернуть на весь экран - 300 fps. Однако насколько я понимаю эта программа предназначена прежде всего для тестирования openGL в 3D, а речь как раз таки ведется о 2D графической подсистеме linux.
У меня дома устаревший msi m510a (1.7 pentim-m, 2 ГГц озу, ati radion 9700 64 Мб - дрова ati не встали). Однако большую часть времени с программой я провел на рабочем месте на более мощных машинах (2х, 4х ядерных с видеокартами 256 Мб, 521 Мб например nvidia geforce 7600 на которых к тому же ставил проприетарные дрова) - результат практически не менялся.
Об этом как раз и говорится в материале по ссылке указанной мною ранее. Там сказано что все-равно какое железо и какие настройки linux. Результат одинаков - производительность 2d графической подсистемы linux в несколько раз ниже чем в windows.
Поэтому правильнее было бы сравнить производительность 2d граф. подсистем linux'а и windows.
У меня дома устаревший msi m510a (1.7 pentim-m, 2 ГГц озу, ati radion 9700 64 Мб - дрова ati не встали). Однако большую часть времени с программой я провел на рабочем месте на более мощных машинах (2х, 4х ядерных с видеокартами 256 Мб, 521 Мб например nvidia geforce 7600 на которых к тому же ставил проприетарные дрова) - результат практически не менялся.
Об этом как раз и говорится в материале по ссылке указанной мною ранее. Там сказано что все-равно какое железо и какие настройки linux. Результат одинаков - производительность 2d графической подсистемы linux в несколько раз ниже чем в windows.
Поэтому правильнее было бы сравнить производительность 2d граф. подсистем linux'а и windows.
-
Warlornhor
- Сообщения: 428
- ОС: openSUSE 12.3
Re: Проблемы работы программ в среде mono в linux
Наверное скажу сейчас глупость и не в тему, но меня тоже немного достают тормоза хотя бы при перемещении окон по столу, но если включить Compiz, то вроде как все тормоза пропадают, т.к. начинает прорисовывать все это видео карта, может и в данном случае поможет?.
-
kamre
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Re: Проблемы работы программ в среде mono в linux
Warlornhor писал(а): ↑14.04.2009 11:16Наверное скажу сейчас глупость и не в тему, но меня тоже немного достают тормоза хотя бы при перемещении окон по столу, но если включить Compiz, то вроде как все тормоза пропадают, т.к. начинает прорисовывать все это видео карта, может и в данном случае поможет?.
Ага, окна передвигаются нормально, а вот ресайз и скорость отрисовки внутри окон сразу начинают томозить еще больше. Вы хотя бы в браузере прокрутку страницы попоробуйте с компиз и без него.
glxgears вообще не в тему при разговоре о 2D. Можно использовать gtkperf, только вот есть ли он собранный под винду, чтобы замерять в разных ос на одном компе?
-
v567
- Сообщения: 92
Re: Проблемы работы программ в среде mono в linux
compiz 0.7.8 предустановлен в suse 11.1. Только насколько я понял композиты работают через проприетарные драйвера. Этому счастью в linux могут радоваться обладатели карточек nvidia. Для ati нужно сделать 33 танца с бубном чтоб радоваться композитам.
Как бы там ни было включил композит на нвидии. Теперь окна анимированные, но появилось другое горе. Уже отлаженная под моно программа стала работать как попало - окошки некоторых диалоговых форм не вылезают. Поэтому беру тайм-аут дабы понять что к чему и подстроить программу под работу в композитах.
Результат напишу позже.
Как бы там ни было включил композит на нвидии. Теперь окна анимированные, но появилось другое горе. Уже отлаженная под моно программа стала работать как попало - окошки некоторых диалоговых форм не вылезают. Поэтому беру тайм-аут дабы понять что к чему и подстроить программу под работу в композитах.
Результат напишу позже.
-
Warlornhor
- Сообщения: 428
- ОС: openSUSE 12.3
Re: Проблемы работы программ в среде mono в linux
Возможно она и не заработает, потому что, например, некоторые Java(GUI AWT) приложения не работают по нормальному, т.е. постоянно есть какие либо глюки с интерфейсом.
-
v567
- Сообщения: 92
Re: Проблемы работы программ в среде mono в linux
Программу поправил, чтоб с compiz'ом в nVidia заработала (битва с драйверами для домашней ATI продолжается). Только бестолку - быстродействие программы под mono 2.4 после включения компиза не улучшилось. Конечно окошки в гноме перемещаются быстрее. Программка с надписью на форме (о которой сказано ранее) при перемещении процессор на 100% уже не грузит, как это имело место ранее. В целом работа с окошками больше радует глаз, чем без компиза. Однако прорисовка внутри окон по-прежнему замедлена.
Программа раскрывается на всё окно без заголовка (MDI-контейнер), поэтому ее по экрану не потаскаешь. Дочерние MDI-окна (карты местности, графики в 2-х проекциях, расчетные формы и т.д.) можно из баловства таскать по основной форме однако скорость отрисовки их содержимого медленная.
gtkperf -a -c 500 дает время выполнения около 76 сек. Его собирать надо, так что под Win'XP его точно нет. Пока я не встречал кроссплатформенного теста 2-х мерной графики для Linux и Win'XP.
Программа раскрывается на всё окно без заголовка (MDI-контейнер), поэтому ее по экрану не потаскаешь. Дочерние MDI-окна (карты местности, графики в 2-х проекциях, расчетные формы и т.д.) можно из баловства таскать по основной форме однако скорость отрисовки их содержимого медленная.
gtkperf -a -c 500 дает время выполнения около 76 сек. Его собирать надо, так что под Win'XP его точно нет. Пока я не встречал кроссплатформенного теста 2-х мерной графики для Linux и Win'XP.
-
v567
- Сообщения: 92
Re: Проблемы работы программ в среде mono в linux
Установил драйвера 9.3 на домашнюю ATI, включил компиз. Результат не изменился. Скорости работы программы под mono 2.4 в opensuse 11.1 и xp составляют 214 сек и 34 сек соответственно, т.е. скорость работы программы в xp prof в 6 раз выше, чем opensuse 11.1 В связи с этим вопросы не изменились: 1). Почему так происходит? 2). Что нужно сделать, чтоб с программой можно было работать в любом линуксе (неважно каком лишь бы работал mono не ниже 2 версии)? 3). Есть ли какой-нибудь кроссплатформенный тест для тестирования и сравнения 2D графических подсистем linux и windows?
-
Kido
- Сообщения: 949
- Статус: Космический Засланец
- ОС: ArchLinux x86_64 Current
Re: Проблемы работы программ в среде mono в linux
v567 писал(а): ↑16.04.2009 17:14Установил драйвера 9.3 на домашнюю ATI, включил компиз. Результат не изменился. Скорости работы программы под mono 2.4 в opensuse 11.1 и xp составляют 214 сек и 34 сек соответственно, т.е. скорость работы программы в xp prof в 6 раз выше, чем opensuse 11.1 В связи с этим вопросы не изменились: 1). Почему так происходит? 2). Что нужно сделать, чтоб с программой можно было работать в любом линуксе (неважно каком лишь бы работал mono не ниже 2 версии)? 3). Есть ли какой-нибудь кроссплатформенный тест для тестирования и сравнения 2D графических подсистем linux и windows?
Тут несколькими постави выше уже сказали, что проблема не в графике, а в самом моно, который несколько тормознутый. И предложили решение, хоть и довольно кардинальное - переписать программу под нормальную кросплатформенную библиотеку. К примеру - тот же Qt.
-
v567
- Сообщения: 92
Re: Проблемы работы программ в среде mono в linux
Почитайте материал по ссылке, которую указана мною ранее:
http://www.linux.org.ru/view-message.jsp?msgid=1844062
Там говорится следующее:
Производительность 2D граф. системы в Linux и Windows
Добрый день! Столкнулся с проблемой - Qt приложения в Linux работают в 3-4 раза медленнее чем в Windows. Причем не важно какая видеокарта. какой проц... пробовал на встроенных intel'овских видеокартах и на GeForce FX5700, FX7600GT. Результат примерно одинаков.
Как пример: в поставке Qt идет программа qtdemo, там в ней есть подразлел Demonstration->Affine Transformations - там пингвин крутиться и картинка с морем - в винде тормозов вообще нет, а в Linux (Ubuntu 6.06/6.10, Kubuntu 6.10, Slackware 11, Zenwalk 4.2.1) кадров 5 в секундуВообщем кадр за кадром...
Впрочем смотреть можно на любой пример связанный с 2D графикой... Результат везде одинков. Хотя 3D работает наверное побыстрее чем в винде (сужу сугубо по Quake и Unreal![]()
Вот как съедается проц когда запущена демка с крутящейся фотографией океана (qtdemo->demonstration->Affine Transformations)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4657 puh 16 0 32228 19m 8404 R 55.4 1.9 2:17.50 affine
3949 root 25 0 39100 26m 8296 R 39.6 2.6 2:25.70 Xorg
Подскажите, может есть какие "секретные" настройки позволяющие вывести производительность 2D в Linux на уровень Windows?
Поэтому очевидно дело не в тормознутости проекта mono. Команда там собралась неплохая. Проблема в тормознутости самого linuxa, как не прискорбно это констатировать. Если быть точнее, его графической подсистемы, отвечающей за отображение 2-х мерной графики.
-
Olegator
- Сообщения: 2493
- ОС: SuseLinux 11.2 KDE 4.3
Re: Проблемы работы программ в среде mono в linux
v567 писал(а): ↑16.04.2009 21:54Почитайте материал по ссылке, которую указана мною ранее:
http://www.linux.org.ru/view-message.jsp?msgid=1844062
зачем такие старые ссылки, действуете по методу "кто ищет тот всегда найдёт", думаете за 2 года никаких оптимизаций не проводилось. В qt 4.5 была нехило переработана графическая подсистемма, что повысило производительность в несколько раз.
Performance Improvements
The introduction of the QtBenchLib performance benchmarking library enables performance benchmarking and regression testing. Core parts of Qt itself have undergone focused re-engineering for improved graphics performance, including paint engine and text rendering improvements, Graphics View and style sheet performance improvements.
The X11 paint engine now uses XSHM (the X shared memory extension), resulting in reduced overhead for painting operations.
A new OpenGL ES 2.0-based paint engine complements the existing OpenGL paint engine, but with a focus on embedded devices.
Qt now features a pluggable graphics system, making it possible for users and developers to select raster, OpenGL or native graphics systems to take into account the specific needs of their applications and get the best performance out of them.
Да проблема с 2d есть, но она не столь страшная как Вы описываете. Беру значит я окно от qt приложения(kopete) и таскаю с максимально возможной скоростью по экрану процессор загружается не более чем на 30%. Да вообще у Вас есть конкретная программа, у которой надо проверить производительность, а Вы окошки таскаете. И учтите что у дров nvidia была как-то нехилая проблема с 2d, возможно она до сих пор осталась
-
TuxWare
- Сообщения: 637
- ОС: Windows 7
Re: Проблемы работы программ в среде mono в linux
Не ребята тут тормоза в другом месте. Вы задействуйте видеокарту сначала, а потом меряйте чего то. Вы запускаете приложение оно вообще использует opengl или рисует через X-ы. И позвольте поинтерисоваться, что Вам сообщила такая интересная вещь как NVIDIA PerfKit. Вы даже сказать не можете, не задействуете ли Вы случайно софтварную эммуляцию вместо аппаратной обработки.
-
v567
- Сообщения: 92
Re: Проблемы работы программ в среде mono в linux
Действую по принципу не наступать на чужие грабли.
Olegator писал(а): ↑16.04.2009 23:46Да проблема с 2d есть, но она не столь страшная как Вы описываете. Беру значит я окно от qt приложения(kopete) и таскаю с максимально возможной скоростью по экрану процессор загружается не более чем на 30%. Да вообще у Вас есть конкретная программа, у которой надо проверить производительность, а Вы окошки таскаете. И учтите что у дров nvidia была как-то нехилая проблема с 2d, возможно она до сих пор осталась
Программа разработана в VS 2008 на C#. Содержит около 40 тыс строк. Переводилась с Delphi 6.0
около года. Каким же образом Вы предлагаете её переписать, чтоб использовалась Qt?
Qt - кроссплатформенная библиотека C++ классов для создания QUI. Есть конечно "привязки" и для других языков. Mono - платформа .NET в linux. В настоящее время проект Mono использует набор
элементов интерфейса Gtk+ для X Window System, но мог бы использовать и Qt. Выбор на Gtk+ пал
поскольку Мигель (идеолог проекта mono) по совместительству участник проекта gnome. Поскольку KDE использует Qt, а Gnome использует Gtk+ (то бишь GTK + GDK). Отвечает за вывод на экран GDK, которая начиная с версии 2.8 почти полностью заменена на систему отрисовки векторной графики Cairo. Cairo же является библиотекой, предназначенной для рендеринга векторной графики с API, который не зависит от оборудования.
К чему это все? А к тому, что мы с Вами, Olegator, таскаем окошки как бы в совершенно разных средах рабочего окружения, которые в свою очередь используют совершенно разные библиотеки оконных элементов системы X Window. Но даже достигнутый Вами результат "не более 30%" при таскании окна (примитивной по своей сути графической операции) говорит о печальном положении дел в 2D у linux. Вдохновленный Вашими успехами попробовал вчера поработать с основной программой в KDE. Так как программа используют GTK+ результат разумеется не изменился. Никакой разницы с Gnome.
Судить о Qt не могу, поскольку напрямую не использовал данную библиотеку (впрочем как не использовал напрямую и библиотеку Gtk+). Однако сам факт того, что исходный код необходимо компилить под каждую ось отдельно заставляет думать о слегка натянутом определении кроссплатформенности. Кроссплатформенность на уровне выполнения и кроссплатформенность на уровне компиляции как бы не однои тоже. Вот когда Qt Software со своим продуктом Qt позволит делать то, что делает .Net или Java, тогда и можно будет всерьез говорить об её супер-пупер кроссплатформенности.
Насчет nVidia и Ati у меня отличное от Вас мнение. Почему то драйвера на нвидиу у меня вставали с первого раза, а вот на ати смог поставить драйвера только версии 9.3 (предыдущие версии не вставали).
Вся эта вышеуказанная лирика честно говоря меня мало тревожит. Мне бы хотелось решить основную задачу, чтоб уже готовая и отлаженная программа заработала в linux на том же уровне, то и в XP Какая версия linux и какое окружением рабочего стола при этом используется мне без разницы. Для этого как раз и хотелось бы получить ответы на свои вопросы.
TuxWare писал(а): ↑17.04.2009 16:30Не ребята тут тормоза в другом месте. Вы задействуйте видеокарту сначала, а потом меряйте чего то. Вы запускаете приложение оно вообще использует opengl или рисует через X-ы. И позвольте поинтерисоваться, что Вам сообщила такая интересная вещь как NVIDIA PerfKit. Вы даже сказать не можете, не задействуете ли Вы случайно софтварную эммуляцию вместо аппаратной обработки.
Сейчас сижу на домашней ATI. Того что ниже достаточно?
Код: Выделить всё
glxinfo
name of display: :0.0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: ATI
server glx version string: 1.2
server glx extensions:
GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_OML_swap_method,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_visual_select_group
client glx vendor string: ATI
client glx version string: 1.4
client glx extensions:
GLX_ARB_create_context, GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_import_context, GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_MESA_allocate_memory, GLX_MESA_swap_control,
GLX_MESA_swap_frame_usage, GLX_NV_swap_group, GLX_OML_swap_method,
GLX_OML_sync_control, GLX_SGI_make_current_read, GLX_SGI_swap_control,
GLX_SGI_video_sync, GLX_SGIS_multisample, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SGIX_swap_barrier, GLX_SGIX_swap_group,
GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap
GLX extensions:
GLX_ARB_create_context, GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_import_context, GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_MESA_swap_control, GLX_NV_swap_group, GLX_OML_swap_method,
GLX_SGI_video_sync, GLX_SGIS_multisample, GLX_SGIX_fbconfig,
GLX_SGIX_swap_barrier, GLX_SGIX_swap_group, GLX_SGIX_visual_select_group
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: ATI MOBILITY RADEON 9600/9700 Series
OpenGL version string: 2.1.8543 Release
OpenGL extensions:
GL_AMD_performance_monitor, GL_ARB_depth_texture, GL_ARB_draw_buffers,
GL_ARB_fragment_program, GL_ARB_fragment_program_shadow,
GL_ARB_fragment_shader, GL_ARB_framebuffer_object,
GL_ARB_half_float_pixel, GL_ARB_half_float_vertex,
GL_ARB_map_buffer_range, GL_ARB_multisample, GL_ARB_multitexture,
GL_ARB_occlusion_query, GL_ARB_pixel_buffer_object,
GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_shader_objects,
GL_ARB_shading_language_100, GL_ARB_shadow, GL_ARB_shadow_ambient,
GL_ARB_texture_border_clamp, GL_ARB_texture_compression,
GL_ARB_texture_cube_map, GL_ARB_texture_env_add,
GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar,
GL_ARB_texture_env_dot3, GL_ARB_texture_float,
GL_ARB_texture_mirrored_repeat, GL_ARB_texture_non_power_of_two,
GL_ARB_texture_rectangle, GL_ARB_transpose_matrix,
GL_ARB_vertex_array_object, GL_ARB_vertex_buffer_object,
GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_ARB_window_pos,
GL_ATI_draw_buffers, GL_ATI_envmap_bumpmap, GL_ATI_fragment_shader,
GL_ATI_meminfo, GL_ATI_separate_stencil, GL_ATI_texture_env_combine3,
GL_ATI_texture_float, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color,
GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array,
GL_EXT_copy_texture, GL_EXT_draw_range_elements, GL_EXT_fog_coord,
GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample,
GL_EXT_framebuffer_object, GL_EXT_gpu_program_parameters,
GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil,
GL_EXT_packed_pixels, GL_EXT_point_parameters, GL_EXT_rescale_normal,
GL_EXT_secondary_color, GL_EXT_separate_specular_color,
GL_EXT_shadow_funcs, GL_EXT_stencil_wrap, GL_EXT_subtexture,
GL_EXT_texgen_reflection, GL_EXT_texture3D,
GL_EXT_texture_compression_s3tc, GL_EXT_texture_cube_map,
GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add,
GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod_bias,
GL_EXT_texture_mirror_clamp, GL_EXT_texture_object,
GL_EXT_texture_rectangle, GL_EXT_texture_sRGB, GL_EXT_texture_swizzle,
GL_EXT_vertex_array, GL_KTX_buffer_region, GL_NV_blend_square,
GL_NV_texgen_reflection, GL_SGIS_generate_mipmap,
GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_WIN_swap_hint,
WGL_EXT_swap_control
glu version: 1.3
glu extensions:
GLU_EXT_nurbs_tessellator, GLU_EXT_object_space_tess
visual x bf lv rg d st colorbuffer ax dp st accumbuffer ms cav
id dep cl sp sz l ci b ro r g b a bf th cl r g b a ns b eat
----------------------------------------------------------------------
0x23 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x24 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x25 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x26 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x27 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0x28 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0x29 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 0 0 None
0x2a 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 0 0 None
0x2b 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x2c 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x2d 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x2e 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x2f 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 2 1 None
0x30 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 2 1 None
0x31 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 2 1 None
0x32 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 2 1 None
0x33 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x34 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x35 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x36 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x37 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 4 1 None
0x38 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 4 1 None
0x39 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 4 1 None
0x3a 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 4 1 None
0x3b 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x3c 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x3d 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x3e 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x3f 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 6 1 None
0x40 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 6 1 None
0x41 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 6 1 None
0x42 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 6 1 None
0x43 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x44 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x45 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x46 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x47 24 tc 1 0 0 c . . 0 0 0 0 0 0 0 0 0 0 0 0 0 None
0x48 24 tc 1 0 0 c . . 0 0 0 0 0 0 0 0 0 0 0 0 0 None
0x49 24 tc 1 0 0 c . . 0 0 0 0 0 0 0 0 0 0 0 0 0 None
0x4a 24 tc 1 0 0 c . . 0 0 0 0 0 0 0 0 0 0 0 0 0 None
0x4b 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x4c 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x4d 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x4e 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x4f 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0x50 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0x51 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 0 0 None
0x52 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 0 0 None
0x53 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x54 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x55 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x56 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x57 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 2 1 None
0x58 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 2 1 None
0x59 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 2 1 None
0x5a 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 2 1 None
0x5b 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x5c 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x5d 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x5e 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x5f 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 4 1 None
0x60 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 4 1 None
0x61 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 4 1 None
0x62 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 4 1 None
0x63 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x64 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x65 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x66 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x67 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 6 1 None
0x68 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 6 1 None
0x69 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 6 1 None
0x6a 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 6 1 None
0x6b 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x6c 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 0 0 None
0x6d 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x6e 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 0 0 None
0x6f 24 dc 1 0 0 c . . 0 0 0 0 0 0 0 0 0 0 0 0 0 None
0x70 24 dc 1 0 0 c . . 0 0 0 0 0 0 0 0 0 0 0 0 0 None
0x71 24 dc 1 0 0 c . . 0 0 0 0 0 0 0 0 0 0 0 0 0 None
0x72 24 dc 1 0 0 c . . 0 0 0 0 0 0 0 0 0 0 0 0 0 None
0x86 32 tc 0 32 0 r . . 8 8 8 8 0 0 0 0 0 0 0 4 1 NconКод: Выделить всё
листинг xorg.conf
# /.../
# SaX generated X11 config file
# Created on: 2009-04-25T16:22:07+0400.
#
# Version: 8.1
# Contact: Marcus Schaefer <sax@suse.de>, 2005
# Contact: SaX-User list <https://lists.berlios.de/mailman/listinfo/sax-users>
#
# Automatically generated by [ISaX] (8.1)
# PLEASE DO NOT EDIT THIS FILE!
#
Section "Files"
FontPath "/usr/share/fonts/misc:unscaled"
FontPath "/usr/share/fonts/local"
FontPath "/usr/share/fonts/75dpi:unscaled"
FontPath "/usr/share/fonts/100dpi:unscaled"
FontPath "/usr/share/fonts/Type1"
FontPath "/usr/share/fonts/URW"
FontPath "/usr/share/fonts/Speedo"
FontPath "/usr/share/fonts/PEX"
FontPath "/usr/share/fonts/cyrillic"
FontPath "/usr/share/fonts/latin2/misc:unscaled"
FontPath "/usr/share/fonts/latin2/75dpi:unscaled"
FontPath "/usr/share/fonts/latin2/100dpi:unscaled"
FontPath "/usr/share/fonts/latin2/Type1"
FontPath "/usr/share/fonts/latin7/75dpi:unscaled"
FontPath "/usr/share/fonts/baekmuk:unscaled"
FontPath "/usr/share/fonts/japanese:unscaled"
FontPath "/usr/share/fonts/kwintv"
FontPath "/usr/share/fonts/truetype"
FontPath "/usr/share/fonts/uni:unscaled"
FontPath "/usr/share/fonts/CID"
FontPath "/usr/share/fonts/ucs/misc:unscaled"
FontPath "/usr/share/fonts/ucs/75dpi:unscaled"
FontPath "/usr/share/fonts/ucs/100dpi:unscaled"
FontPath "/usr/share/fonts/hellas/misc:unscaled"
FontPath "/usr/share/fonts/hellas/75dpi:unscaled"
FontPath "/usr/share/fonts/hellas/100dpi:unscaled"
FontPath "/usr/share/fonts/hellas/Type1"
FontPath "/usr/share/fonts/misc/sgi:unscaled"
FontPath "/usr/share/fonts/xtest"
FontPath "/opt/kde3/share/fonts"
InputDevices "/dev/gpmdata"
InputDevices "/dev/input/mice"
EndSection
Section "ServerFlags"
Option "AIGLX" "on"
Option "AllowMouseOpenFail" "on"
Option "IgnoreABI" "on"
Option "ZapWarning" "on"
EndSection
Section "Module"
Load "freetype"
Load "glx"
Load "dbe"
Load "extmod"
Load "dri"
EndSection
Section "InputDevice"
Driver "kbd"
Identifier "Keyboard[0]"
Option "Protocol" "Standard"
Option "XkbLayout" "us,ru"
Option "XkbModel" "microsoftpro"
Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll"
Option "XkbRules" "xfree86"
Option "XkbVariant" ",winkeys"
EndSection
Section "InputDevice"
Driver "mouse"
Identifier "Mouse[1]"
Option "Buttons" "7"
Option "Device" "/dev/input/mice"
Option "Name" "Sunplus USB Wheel Mouse"
Option "Protocol" "explorerps/2"
Option "Vendor" "Sysp"
Option "ZAxisMapping" "4 5"
EndSection
Section "Monitor"
Option "CalcAlgorithm" "XServerPool"
DisplaySize 305 230
HorizSync 31-60
Identifier "Monitor[0]"
ModelName "1024X768@60HZ"
Option "DPMS"
Option "PreferredMode" "1152x864"
VendorName "--> LCD"
VertRefresh 30-60
UseModes "Modes[0]"
EndSection
Section "Modes"
Identifier "Modes[0]"
EndSection
Section "Screen"
DefaultDepth 24
SubSection "Display"
Depth 15
Modes "1152x864" "1024x768" "1024x600" "800x600" "768x576" "640x480"
EndSubSection
SubSection "Display"
Depth 16
Modes "1152x864" "1024x768" "1024x600" "800x600" "768x576" "640x480"
EndSubSection
SubSection "Display"
Depth 24
Modes "1152x864" "1024x768" "1024x600" "800x600" "768x576" "640x480"
EndSubSection
SubSection "Display"
Depth 8
Modes "1152x864" "1024x768" "1024x600" "800x600" "768x576" "640x480"
EndSubSection
Device "Device[0]"
Identifier "Screen[0]"
Monitor "Monitor[0]"
EndSection
Section "Device"
BoardName "RV350 NP"
Driver "fglrx"
Identifier "Device[0]"
Option "XAANoOffscreenPixmaps" "true"
Option "Capabilities" "0x00000000"
Option "OpenGLOverlay" "off"
Option "FSAAScale" "0"
Option "FSAAEnable" "off"
Option "VideoOverlay" "on"
Screen 0
VendorName "ATI"
EndSection
Section "ServerLayout"
Identifier "Layout[all]"
InputDevice "Keyboard[0]" "CoreKeyboard"
InputDevice "Mouse[1]" "CorePointer"
Option "Clone" "off"
Option "Xinerama" "off"
Screen "Screen[0]"
EndSection
Section "DRI"
Group "video"
Mode 0660
EndSection
Section "Extensions"
Option "Composite" "on"
EndSection-
TuxWare
- Сообщения: 637
- ОС: Windows 7
Re: Проблемы работы программ в среде mono в linux
Нет, это говорит только о том, что Ваша видеокарта поддерживает opengl 2.1 (а моя opengl 3.1 который еще вообще никто не использует). А задействована в программе эта возможность или нет - вот в чем вопрос. Я не в курсе самого mono, но в Qt в компоненте QGraphicsView (2D графика) пока Вы лично не укажите что то типа setViewport(new QGLWidget) вся графика будет обрабатываться через иксы (медленно и криво) и тогда какая у Вас видяха не будет иметь никакого значения и процессор будет грузится на все 525.5%. Я о том, что дефолтная обработка графики в линукс через X.
-
v567
- Сообщения: 92
Re: Проблемы работы программ в среде mono в linux
TuxWare писал(а): ↑18.04.2009 12:12Нет, это говорит только о том, что Ваша видеокарта поддерживает opengl 2.1 (а моя opengl 3.1 который еще вообще никто не использует). А задействована в программе эта возможность или нет - вот в чем вопрос. Я не в курсе самого mono, но в Qt в компоненте QGraphicsView (2D графика) пока Вы лично не укажите что то типа setViewport(new QGLWidget) вся графика будет обрабатываться через иксы (медленно и криво) и тогда какая у Вас видяха не будет иметь никакого значения и процессор будет грузится на все 525.5%. Я о том, что дефолтная обработка графики в линукс через X.
Если внимательно почитать эту тему, то станет ясно, что программа работает в среде mono, которая в свою очередь использует средства GTK+ и т.д. В программе использован стандартный набор компонентов .net 2.0. Стандартные средства отображения графических компонентов в VS 2008, использующие библиотеку OpenGL, в .net 2.0 отсутствуют. Их можно реализовать нестандартно, но это вызовет проблемы несовместимости со средой mono.
К тому же в XP никаких проблем с производительностью нет.
Поэтому в linux очевидны проблемы графической подсистемы в 2D. Вопрос не в этом. Вопрос в том как решить эти проблемы: может использовать другой дистрибутив или как-то хитро настроить имеющуюся систему. Возможно есть другие разумные решения ускорения работы программы в linux (говорю сразу, что переписать программу другими средствами к ним не относится).
-
TuxWare
- Сообщения: 637
- ОС: Windows 7
Re: Проблемы работы программ в среде mono в linux
Вы вообще пошли не в ту степь. Остановитесь и еще раз внимательно прочтите чего я нацарапал. Пример
Код:
~> ldd /usr/bin/klines
linux-vdso.so.1 => (0x00007fff2e1fe000)
/usr/lib64/libv4l/v4l2convert.so (0x00007fd325cc7000)
libkdeui.so.5 => /usr/lib64/libkdeui.so.5 (0x00007fd3256e8000)
libkdegames.so.5 => /usr/lib64/libkdegames.so.5 (0x00007fd3253e4000)
libQtXml.so.4 => /usr/lib64/libQtXml.so.4 (0x00007fd32519d000)
libQtNetwork.so.4 => /usr/lib64/libQtNetwork.so.4 (0x00007fd324e7e000)
libkdecore.so.5 => /usr/lib64/libkdecore.so.5 (0x00007fd324a26000)
libQtDBus.so.4 => /usr/lib64/libQtDBus.so.4 (0x00007fd3247b6000)
libQtCore.so.4 => /usr/lib64/libQtCore.so.4 (0x00007fd324379000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd32415d000)
libQtSvg.so.4 => /usr/lib64/libQtSvg.so.4 (0x00007fd323f04000)
libQtGui.so.4 => /usr/lib64/libQtGui.so.4 (0x00007fd32332a000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fd32301b000)
libm.so.6 => /lib64/libm.so.6 (0x00007fd322dc5000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fd322bae000)
libc.so.6 => /lib64/libc.so.6 (0x00007fd322855000)
libv4l2.so.0 => /usr/lib64/libv4l2.so.0 (0x00007fd32264b000)
libSM.so.6 => /usr/lib64/libSM.so.6 (0x00007fd322442000)
libICE.so.6 => /usr/lib64/libICE.so.6 (0x00007fd322225000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007fd321ee8000)
libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007fd321cd6000)
libXft.so.2 => /usr/lib64/libXft.so.2 (0x00007fd321ac1000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007fd3218bd000)
libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00007fd3216b7000)
libXpm.so.4 => /usr/lib64/libXpm.so.4 (0x00007fd3214a5000)
libXtst.so.6 => /usr/lib64/libXtst.so.6 (0x00007fd32129e000)
libXcursor.so.1 => /usr/lib64/libXcursor.so.1 (0x00007fd321093000)
libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x00007fd320e8d000)
libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x00007fd320c83000)
libkio.so.5 => /usr/lib64/libkio.so.5 (0x00007fd3207ef000)
libkdnssd.so.4 => /usr/lib64/libkdnssd.so.4 (0x00007fd3205c9000)
libknewstuff2.so.4 => /usr/lib64/libknewstuff2.so.4 (0x00007fd320366000)
libz.so.1 => /lib64/libz.so.1 (0x00007fd320150000)
libgthread-2.0.so.0 => /usr/lib64/libgthread-2.0.so.0 (0x00007fd31ff4b000)
librt.so.1 => /lib64/librt.so.1 (0x00007fd31fd42000)
libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007fd31fa7d000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fd31f879000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x00007fd31f66a000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fd31f453000)
libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00007fd31f215000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd325eca000)
libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x00007fd31efed000)
libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007fd31ed66000)
libXrandr.so.2 => /usr/lib64/libXrandr.so.2 (0x00007fd31eb5e000)
libXinerama.so.1 => /usr/lib64/libXinerama.so.1 (0x00007fd31e95b000)
libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00007fd31e729000)
libv4lconvert.so.0 => /usr/lib64/libv4lconvert.so.0 (0x00007fd31e4c5000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007fd31e2c0000)
libxcb-xlib.so.0 => /usr/lib64/libxcb-xlib.so.0 (0x00007fd31e0be000)
libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007fd31dea2000)
libstreamanalyzer.so.0 => /usr/lib64/libstreamanalyzer.so.0 (0x00007fd31dc2d000)
libstreams.so.0 => /usr/lib64/libstreams.so.0 (0x00007fd31d9f5000)
libsolid.so.4 => /usr/lib64/libsolid.so.4 (0x00007fd31d76d000)
libfam.so.0 => /usr/lib64/libfam.so.0 (0x00007fd31d564000)
libacl.so.1 => /lib64/libacl.so.1 (0x00007fd31d35c000)
libattr.so.1 => /lib64/libattr.so.1 (0x00007fd31d157000)
libpcre.so.0 => /usr/lib64/libpcre.so.0 (0x00007fd31cf27000)
libexpat.so.1 => /lib64/libexpat.so.1 (0x00007fd31ccfd000)
libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007fd31c99f000) И мы видим, что klines выводит через svg и иксы. OpenGL не используется вообще. То есть о аппаратном ускорении графики в klines не может быть и речи. А теперь посмотрим kwin.
Код:
~> ldd /usr/bin/kwin
linux-vdso.so.1 => (0x00007fffa9fff000)
/usr/lib64/libv4l/v4l2convert.so (0x00007f49a1b2a000)
libkdeinit4_kwin.so => /usr/lib64/libkdeinit4_kwin.so (0x00007f49a1873000)
libkdecorations.so.4 => /usr/lib64/libkdecorations.so.4 (0x00007f49a1657000)
libkwineffects.so.1 => /usr/lib64/libkwineffects.so.1 (0x00007f49a1431000)
libkdeui.so.5 => /usr/lib64/libkdeui.so.5 (0x00007f49a0e52000)
libkdecore.so.5 => /usr/lib64/libkdecore.so.5 (0x00007f49a09fa000)
libQtSvg.so.4 => /usr/lib64/libQtSvg.so.4 (0x00007f49a07a1000)
libkephal.so.4 => /usr/lib64/libkephal.so.4 (0x00007f49a0576000)
libQtGui.so.4 => /usr/lib64/libQtGui.so.4 (0x00007f499f99c000)
libQtDBus.so.4 => /usr/lib64/libQtDBus.so.4 (0x00007f499f72c000)
libQtCore.so.4 => /usr/lib64/libQtCore.so.4 (0x00007f499f2ef000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f499f0d3000)
libSM.so.6 => /usr/lib64/libSM.so.6 (0x00007f499eeca000)
libICE.so.6 => /usr/lib64/libICE.so.6 (0x00007f499ecad000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f499e970000)
libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f499e75e000)
libXft.so.2 => /usr/lib64/libXft.so.2 (0x00007f499e549000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f499e345000)
libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00007f499e13f000)
libXpm.so.4 => /usr/lib64/libXpm.so.4 (0x00007f499df2d000)
libGL.so.1 => /usr/lib64/libGL.so.1 (0x00007f499dd3b000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f499db37000)
libkwinnvidiahack.so.4 => /usr/lib64/libkwinnvidiahack.so.4 (0x00007f499d935000)
libXrandr.so.2 => /usr/lib64/libXrandr.so.2 (0x00007f499d72d000)
libXcomposite.so.1 => /usr/lib64/libXcomposite.so.1 (0x00007f499d52a000)
libXdamage.so.1 => /usr/lib64/libXdamage.so.1 (0x00007f499d327000)
libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x00007f499d11d000)
libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x00007f499cf17000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f499cc08000)
libm.so.6 => /lib64/libm.so.6 (0x00007f499c9b2000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f499c79b000)
libc.so.6 => /lib64/libc.so.6 (0x00007f499c442000)
libv4l2.so.0 => /usr/lib64/libv4l2.so.0 (0x00007f499c238000)
libQtXml.so.4 => /usr/lib64/libQtXml.so.4 (0x00007f499bff1000)
libXtst.so.6 => /usr/lib64/libXtst.so.6 (0x00007f499bdea000)
libXcursor.so.1 => /usr/lib64/libXcursor.so.1 (0x00007f499bbdf000)
libQtNetwork.so.4 => /usr/lib64/libQtNetwork.so.4 (0x00007f499b8c0000)
libz.so.1 => /lib64/libz.so.1 (0x00007f499b6aa000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f499b49b000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f499b284000)
libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x00007f499b05c000)
libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007f499add5000)
libXinerama.so.1 => /usr/lib64/libXinerama.so.1 (0x00007f499abd2000)
libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00007f499a9a0000)
libgthread-2.0.so.0 => /usr/lib64/libgthread-2.0.so.0 (0x00007f499a79b000)
librt.so.1 => /lib64/librt.so.1 (0x00007f499a592000)
libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007f499a2cd000)
libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00007f499a08f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f49a1d2d000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f4999e8a000)
libxcb-xlib.so.0 => /usr/lib64/libxcb-xlib.so.0 (0x00007f4999c88000)
libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f4999a6c000)
libGLcore.so.1 => /usr/lib64/libGLcore.so.1 (0x00007f4998782000)
libnvidia-tls.so.1 => /usr/lib64/tls/libnvidia-tls.so.1 (0x00007f49a1e0c000)
libv4lconvert.so.0 => /usr/lib64/libv4lconvert.so.0 (0x00007f499851e000)
libexpat.so.1 => /lib64/libexpat.so.1 (0x00007f49982f4000)
libpcre.so.0 => /usr/lib64/libpcre.so.0 (0x00007f49980c4000)
А здесь мы наблюдаем, что графика задействует libGL.so, libGLcore.so и libnvidia-tls.so. Т.е. мы уже можем константировать, что видеокарта хоть как то будет задействована. Ну далее можно выполнять анализ, а насколько плотно она задействована и т.д.
А теперь о cairo
Теперь расскажем о различных типах поверхностей в cairo. В cairo существует несколько видов поверхностей, привязанных к целевому формату вывода для данного рисунка. Поверхность в cairo — это то, на чем создается рисунок. В частности, имеются поверхности для изображений (в буфере в оперативной памяти), для OpenGL (через поверхность glitz), для PDF и PostScript поверхности — для вывода документов, для платформенно-зависимого рисования — через Win32 и XLib. Каждая из этих поверхностей выводится из основного типа поверхности — cairo_surface_t.
Какую Вы используете поверхность для рисования XLib-ную или OpenGL-ую.
-
TuxWare
- Сообщения: 637
- ОС: Windows 7
Re: Проблемы работы программ в среде mono в linux
И еще одна мысль
eclipse написан на яве, привязан к gtk, gtk осуществляет вывод через cairo. В каталоге eclipse валяется соответствующий файлец привязки
libcairo-swt.so.
Заметили здесь хотя бы намек на GL.
eclipse написан на яве, привязан к gtk, gtk осуществляет вывод через cairo. В каталоге eclipse валяется соответствующий файлец привязки
libcairo-swt.so.
Код:
~> ldd /opt/eclipse/libcairo-swt.so
linux-vdso.so.1 => (0x00007fff661fe000)
/usr/lib64/libv4l/v4l2convert.so (0x00007ff05ddc1000)
libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x00007ff05dbb7000)
libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007ff05d9a5000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007ff05d668000)
libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00007ff05d435000)
libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007ff05d1ae000)
libm.so.6 => /lib64/libm.so.6 (0x00007ff05cf31000)
libc.so.6 => /lib64/libc.so.6 (0x00007ff05cbd7000)
libv4l2.so.0 => /usr/lib64/libv4l2.so.0 (0x00007ff05c9cd000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007ff05c7c9000)
libxcb-xlib.so.0 => /usr/lib64/libxcb-xlib.so.0 (0x00007ff05c5c6000)
libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007ff05c3aa000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007ff05c1a6000)
libz.so.1 => /lib64/libz.so.1 (0x00007ff05bf8f000)
libexpat.so.1 => /lib64/libexpat.so.1 (0x00007ff05bd65000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff05e118000)
libv4lconvert.so.0 => /usr/lib64/libv4lconvert.so.0 (0x00007ff05bb01000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ff05b8e4000)
Заметили здесь хотя бы намек на GL.
-
v567
- Сообщения: 92
Re: Проблемы работы программ в среде mono в linux
Как уже было сказано цепочка программа-> mono -> gtk+ -> gdi+ не используют OpenGL. Для того чтобы это определить достаточно открыть в редакторе файл libgdiplus0-2.4-19.1.i586.rpm, который лежит в репозитарии mono 2.4
В нем пишется:
В нем пишется:
libgdiplus0 2.4 19.1 Open Source Implementation of the GDI+ API This is part of the Mono project. It is required when using Window.Forms.
.........................
libX11.so.6
libXau.so.6
libXrender.so.6
-
v567
- Сообщения: 92
Re: Проблемы работы программ в среде mono в linux
Кстати совсем забыл спросить каким же образом Вы предлагаете "задействовать видеокарту"? Переписать mono, gtk или X-Window? 
-
TuxWare
- Сообщения: 637
- ОС: Windows 7
Re: Проблемы работы программ в среде mono в linux
Libgdiplus is the Mono library that provide a GDI+ comptible API on non-Windows operating systems. Our implementation uses Cairo to do most of the heavy lifting.
Как уже было сказано цепочка "программа-> mono -> gtk+ -> gdi+ -> Cairo" может рисовать на OpenGL поверхности без проблем. А из-за того, что кто то эту цепочку "программа-> mono -> gtk+ -> gdi+ -> Cairo -> OpenGL" превратил в цепочку "программа-> mono -> gtk+ -> gdi+ -> Cairo -> (Xlib + процессор)" Вы делаете вывод, что 2D графика в Linux очень медленная. А GDI в виндовсе через DirectX жарит (c полной поддержкой видеокарты) или как?