LINUX.ORG.RU

Почему Java на Linux работает медленнее, чем на Windows ?

 , , , ,


0

2

UPDATE. Проблема с долгим запуском Minecraft в Linux решена здесь. (перенос на ext4 раздел)

Добрый вечер! Возник вопрос по поводу Java. Дело в том, что на линуксе она слегка заторможенная. В Windows все java-программы загружаются и работают шустро, нареканий нет.

Чтобы сразу стало понятно о чем я, приведу пример на игре Minecraft: в Windows игровой клиент MC загружается примерно за 40-50 секунд. Тем временем в линуксе тот же клиент, с теми же модификациями и настройками загружается +-3 минуты. Такое падение производительности распространяется на все java-приложения, запускаемые в Linux.

Я не представляю, в чем может быть проблема… может, к java надо передать какие-то специальные оптимизирующие аргументы, кто знает. Или у линукса какие-то свои особенности выделения ресурсов для программ ?

$ java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)

Дистр, ядро: Arch Linux x86_64 Linux 5.4.23-1-lts
Графический драйвер (хз, может это как-то влияет): nvidia-390xx-lts
Никакие настройки и конфиги java не менялись, все работает с коробки

Изменения:

UPD 1. Проведен тест использования jre 8 241 вместо 172. Результата нет.

UPD 2. Запуск с параметрами -Dsun.java3d.opengl=true Прироста производительности нет.

UPD 3. Покопаюсь в драйверах и, в частности, в OpenGL. Мне кажется именно тут какой-то подвох



Последнее исправление: aleksei2000 (всего исправлений: 4)

А помимо java чем-нибудь производительность тестировал под win и linux? Linux не в виртуалке? Какая FS у linux?

Aber ★★★★★
()

Никакой значимой разницы между Windows и Linux не должно быть

Надо смотреть, чем занимается Minecraft, запускать под профилировщиком (например, Java Visual VM)

Может оказаться, например, что под линуксом медленно работает свободный драйвер на opengl, или у тебя лежит всё на какой дико тормозной файлухе (а там у майнкрафта тысячи файлов), или у тебя скорость SSD сильно зависит от свободного места на SSD и у винды диск свободный а на линуксе - нет, или например под виндой работают какие-то хитрые технологии ускорения SSD а под линуксом их вообще нет, итд итп

stevejobs ★★★★☆
()
Ответ на: комментарий от RedEyedMan666

Не а, жаба на десктопе проиграла, так что теперь жаба это только серверы, а серверы это только linux. Скорее забьют с оптимизациями на винде.

Aber ★★★★★
()
Ответ на: комментарий от Aber

Подтверждаю :) В том же GraalVM (это новое поколение жабы) возможность собрать программу для Windows изначально вообще отсутствовала, теперь припилили - но там баги гуляют табунами. Как пошутил один знакомый разработчик джавы, когда я жаловался на тормоза под виндой: «а ты не пробовал вместо Windows поставить операционную систему?»

Больше верится, что либо майнкрафт написан через жопу, или линукс у ТСа настроен неправильно, или драйвера на видео и SSD - короче, всякая инфраструктура и железо

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 2)

как-то влияет

да

xDShot ★★★★★
()
Ответ на: комментарий от stevejobs

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

xDShot ★★★★★
()

Не должно такого быть. По идее, разница в производительности под двумя системами — не больше 3-5 процентов. Вангую, что дело либо в разных версиях «жабы», либо в специфической версии на «винде». Срочно «выхлопы» в студию!

P.S. Версия Java должна быть свежайшей для тестов. А под 13 «джавой» Minecraft тоже работает.

Korchevatel ★★★★★
()

Почему Java на Linux работает медленнее, чем на Windows ?

Потамушта это линукс) тут все так через пень-колоду работает

А под вайном пробовал запускать майнкрафт?

Deleted
()

На одном и том же сетапе разницы между widowz 7+oracle jdk 1.8 и linux+openjdk 1.8 на одних и тех же сборочках minecraft не заметил. IMHO у TC в консерватории что то неправильно.

Jameson ★★★★★
()

Ребят, спасибо за ваш актив. Сейчас проведу эксперимент, установлю на линуху 1.8.0_241 вместо 172. Посмотрю какой будет результат и будет ли он вообще. отпишусь

aleksei2000
() автор топика
Ответ на: комментарий от aleksei2000

Попробуй openjdk вместо oracle. Во первых оракл 1.8 яву больше не подерживает, а во вторых в тестах майнкрафт серверов openjdk местами быстрее. Но не критично быстрее. Сам майн работает без глюков под ней.

Да, а сколько памяти по верхней границе выделяешь? Если вообще ничего не трогал там может быть 1гиг, а этого мало для серьёзных сборочек, дай ей 4-6 гигов...

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 1)

У меня игра стартует секунд 15. Видеокарта NVIDIA, драйвер тоже NVIDIA. Лаунчер официальный лицензионный. Только сейчас вышла новая версия лаунчера на Electron, а я пользуюсь Legacy-версией лаунчера: https://bugs.mojang.com/browse/MCL-11993

Запускать так:

java -jar launcher.jar

Может у тебя драйвер не встал, как надо? Как ведут себя другие игры? Покажи вывод команд:

glxinfo|grep render[br] glxinfo|grep OpenGL

anonymous
()
Ответ на: комментарий от aleksei2000

Возможно не работает какой-нибудь турбобуст у CPU? Чтоб исключить эту вероятность нужно сравнить производительность на чем-то еще.

Короче никаких волшебных ключей для jvm которые могут повысить производительность в 2-3 раза нету. Я считаю проблема где-то в системе.

Графический драйвер (хз, может это как-то влияет): nvidia-390xx-lts

Тоже может влиять. OGL/Vulkan игры компилируют шейдеры перед запускам игры (драйвер видокарты на CPU компилирует бинарый код для GPU), в некоторых играх это занимает довольно много времени, несколько минут запросто, но теперь шейдеры обычно кешируются, так-что ждать приходится только при первом запуске.

Aber ★★★★★
()
Ответ на: комментарий от anonymous

С видеодрайвером все нормально, все работает. Лаунчер так же лицензионный, от mojang. Сейчас запустил minecraft с бинарниками java 1.8.0_241, вместо 172. Разницы в производительности не увидел.

Я, кажется, знаю в чем проблема. Просто мой компьютер какаха. Athlon X2 II 240 и GT 430 на борту. Машины хватает только для работы в Windows 7, поэтому в винде джава шустрее работает. А современные линуксы мой компьютер уже не приветствует. Мне кажется треть проца сжирают всякие systemd и прочие. На Windows 10 аналогичная с линуксом ситуация. Просто компьютер говно, в этом весь секрет. Буду покупать комплектующие.

Ребзя, еще раз спасибо за актив. в этой ситуации уже все ясно

aleksei2000
() автор топика
Последнее исправление: aleksei2000 (всего исправлений: 1)

в Windows игровой клиент MC загружается примерно за 40-50 секунд. Тем временем в линуксе тот же клиент, с теми же модификациями и настройками загружается +-3 минуты

Ну так на винде же есть prefetch.

anonymous
()
Ответ на: комментарий от stasolog

Он же стартует моментально практически.

Зависит от набора модов.

crutch_master ★★★★★
()
Ответ на: комментарий от anonymous

У убунты есть нечто похоже ureadahead, но это только для загрузки, я так понял

über-readahead is used during boot to read files in advance of when
they are needed such that they are already in the page cache,
improving boot performance.

Its data files are regenerated on the first boot after install, and
either monthly thereafter or when packages with init scripts or
configs are installed or updated.

ureadahead requires a kernel patch included in the Ubuntu kernel.
Аналог в других дистрах (то что гуглится) e4rat-preload, но под таким названием его нигде нет в пакетах. За исключением аура арча https://aur.archlinux.org/packages/e4rat/ И еще systemd-readahead.

anonymous
()

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

anonymous
()
Ответ на: комментарий от stevejobs

«а ты не пробовал вместо Windows поставить операционную систему?»

Ну так он прав. Все разработчики на Макоси сидят.

devl547 ★★★★★
()
Ответ на: комментарий от stasolog

Я про что. Нет вменяемых воспроизводимых тестов - тред не нужен.

crutch_master ★★★★★
()

Джава может быть быстрой на до 16.04 версии дистра убунточки либо на модифицированной OS8.0 остальное это срака от профессоров гугла и прочих коней

anonymous
()
Ответ на: комментарий от aleksei2000

Думаете такая разница играет какую-либо роль ?

Действительно, разница 69 выпусков. Херня.

crutch_master ★★★★★
()

Ща выяснится, что у тебя параллельно с майнкрафтом какая-нибудь индексилка файлы перелопачивает. Или что там в бубунтный умолчаьный десктоп пихают ноньче?

r_asian ★☆☆
()
Ответ на: комментарий от devl547

Предлагать хакинтош в качестве решения проблемы производительности — это высшая степень маразма.

te111011010
()
Ответ на: комментарий от r_asian

Я не настолько ламер, чтобы позволять каким-то левым процам шастать в системе во время моей работы/игры.

aleksei2000
() автор топика
Последнее исправление: aleksei2000 (всего исправлений: 1)

обновил тред. Думаю, что стоит покопать в сторону настройки/переустановки OpenGL. там наверн какие-то косяки

aleksei2000
() автор топика
Последнее исправление: aleksei2000 (всего исправлений: 2)
Ответ на: комментарий от te111011010

Так macos не ставят. «Поставить» — это имеется в виду «на имеющееся железо, на котором сейчас стоит другая ОС»

так элементарно. Ну поставил Windows на macBook. не понравилось ставишь обратно macOS.

fornlr ★★★★★
()

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

te111011010
()
Ответ на: комментарий от xDShot

свою жабу, которая не имеет ничего общего с установленной в системе

так и нужно делать - с каждым Java-приложением тащить свою джаву. Считаю это хорошей практикой, всегда так делаю. JDK каждый раз конфигурируется (а возможно, даже компилируется) под конкретное приложение, и на любом другом может даже вообще не работать

stevejobs ★★★★☆
()

Я не представляю, в чем может быть проблема…

Надеюсь, ты проверяешь на одной и той же машине, с одной и той же жабой, одни и те же приложения

DllMain
()

Просто в клиенте Майнкрафта есть код Майкрософт, опрашивающий название ОС, и если это не Windows, то подсовывается цикл с задержками, чтобы работало медленнее.

Как во времена Windows 1.x - 3.x генерировались случайные ошибки если DOS был не MS-DOS.

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от DllMain

Так выяснится, что дело вообще не в жабке, а в работе контроллера hdd или настройке каких-нибудь кэшей или во что он там у него упёрся.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 2)
Ответ на: комментарий от crutch_master

Как будто это и так не понятно, вон в ОП 3x разрыв, лол

DllMain
()
Ответ на: комментарий от Deleted

Потамушта это линукс) у меня все так через пень-колоду работает

fixed

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.