Jump to content
  • Sign Up

Playing Guild Wars 2 on Linux - Performance optimizations and more.


Recommended Posts

@"kalel.6129" said:

Dumb question but how does one do the "update"? Is it merely re-downloading and running /.setup again or what all do I need to do? Sorry for such a dumb question.

A typical update goes like this:

  • Download the new package.
  • Extract it and run the ./setup.sh file and wait for it to finish.
  • Go into your old installation and move the contents of "data/drive_c/GW2" in the new one.
  • Run ./play.sh as normally.
Link to comment
Share on other sites

@"Turin.6921" said:Hello,

I seem to have crashes when ever i try to load into cities. I am on an R71700, RX470 with the Oibaf mesa drivers.This is the game crash report:https://paste.ubuntu.com/p/2JqMgD57ky/And this is the debug output:https://pastebin.ubuntu.com/p/NQQNBtNJ3n/

Try sudo setcap cap_sys_nice+ep wineserverOr commenting out STAGING_RT_PRIORITY_SERVER in the launcher script.

Link to comment
Share on other sites

@xylef.8307 said:

@Turin.6921 said:Hello,

I seem to have crashes when ever i try to load into cities. I am on an R71700, RX470 with the Oibaf mesa drivers.This is the game crash report:
And this is the debug output:

Try sudo setcap cap_sys_nice+ep wineserverOr commenting out STAGING_RT_PRIORITY_SERVER in the launcher script.

I have the same problem as @Turin.6921 and first tried with commenting out STAGING_RT_PRIORITY_SERVER in user_debug inside the bin folder, as this is what I assumed you mean by the launcher script (I run the game with the debug.sh file). However, nothing changed.

Then I run the command you have provided - sudo setcap cap_sys_nice+ep wineserver. This now leads to the following error when I run debug.sh

ERROR: ld.so: object 'libpthread.so.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.ERROR: ld.so: object 'libGL.so.1' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored./home/username/Guild Wars 2 wine 3.15/bin/wineserver: error while loading shared libraries: libwine.so.1: cannot open shared object file: No such file or directory

Not sure what is happening

EDIT: I am on an Intel/NVIDIA system

Link to comment
Share on other sites

@"ThunderBiggi.4651" said:ERROR: ld.so: object 'libpthread.so.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.ERROR: ld.so: object 'libGL.so.1' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored./home/username/Guild Wars 2 wine 3.15/bin/wineserver: error while loading shared libraries: libwine.so.1: cannot open shared object file: No such file or directory

Not sure what is happening

EDIT: I am on an Intel/NVIDIA system

This is usually caused by missing libraries. Did you enable 32bit library support in your system? While the game is 64bit, it also uses some 32bit components. The 'libpthread.so.0' library can be found by installing the package named "libc6-i386" (any 32bit software ran on 64bit Linux will fail to run without this package).

Link to comment
Share on other sites

@ArmoredVehicle.2849 said:

@"ThunderBiggi.4651" said:ERROR: ld.so: object 'libpthread.so.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.ERROR: ld.so: object 'libGL.so.1' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored./home/username/Guild Wars 2 wine 3.15/bin/wineserver: error while loading shared libraries: libwine.so.1: cannot open shared object file: No such file or directory

Not sure what is happening

EDIT: I am on an Intel/NVIDIA system

This is usually caused by missing libraries. Did you enable 32bit library support in your system? While the game is 64bit, it also uses some 32bit components. The 'libpthread.so.0' library can be found by installing the package named "libc6-i386" (any 32bit software ran on 64bit Linux will fail to run without this package).

I do have this library.

I should probably mention that I was playing GW2 for a few months on Linux with your version 1.2 (28th June update). I just wanted to update to get better performance.

Link to comment
Share on other sites

@ArmoredVehicle.2849 said:@"Turin.6921" said:Hello,

I seem to have crashes when ever i try to load into cities. I am on an R71700, RX470 with the Oibaf mesa drivers.This is the game crash report:https://paste.ubuntu.com/p/2JqMgD57ky/And this is the debug output:https://pastebin.ubuntu.com/p/NQQNBtNJ3n/

Too many open files is something esync would cause, to solve it do the following:

As sudo (in a text editor) open "/etc/security/limits.conf" and at the end you'll find 2 entries named:

  • hard nofile (number)
  • soft nofile (number)

Set that number to something higher, in my case it's 1048576 and the game works fine that way. Save it and reboot your system.

Link to comment
Share on other sites

@ArmoredVehicle.2849 said:I'm happy to announce that a new release is now ready for download.

No doubt the highlight of this update is the addition of esync which improves performance dramatically (again, thanks xylef), I've also cleaned up my scripts to be better understood for who wants to tinker with environment variables, and lastly I noticed some Mesa users mentioning the use of mesa_glthread, I added this in the form of a switch in the 'bin/user_run' file.

The full details can be found on the first page, I also tidied that up a bit.

Thank you everyone for the suggestions and comments :-)

@EagleDelta.4726 said:@ArmoredVehicle.2849 I'm getting a Network Error when attempting to download the latest update

I made a few minor last minute tweaks before posting, it should work now. Sorry about that :-)

Thanks again for your efforts.

I am going to give this new setup a try later once I have time. I want to now do comparisons from the gallium nine setup I have been testing to this and see which does better. I am curious to see how esync changes this on my old hardware.

Link to comment
Share on other sites

@jbrother.1340 said:Thanks again for your efforts.

I am going to give this new setup a try later once I have time. I want to now do comparisons from the gallium nine setup I have been testing to this and see which does better. I am curious to see how esync changes this on my old hardware.

When you get to it, can you please tell me if the mesa_glthread variable makes any effect on AMD GPU? I lack the hardware to test it.

@ThunderBiggi.4651 said:I do have this library.

I should probably mention that I was playing GW2 for a few months on Linux with your version 1.2 (28th June update). I just wanted to update to get better performance.

It looks like something with the drivers is at play, yesterday I received a dual graphics laptop at work and I had a similar error, it wasn't GW2 specific and even trying out glxgears produced an error like yours.

Are you perhaps running a laptop with optimus/primusrun?


As a general note, prior to uploading these new builds I tested them on 3 different systems: Mint 18.1 (aka Ubuntu 16.04) with Nvidia GPU, Ubuntu 18.04 (with Mesa 18.0 / Intel HD) and Debian 9 (with Mesa 13 / Intel HD). Aside from slow performance on the Intel HD's, all 3 checked out correctly.

Link to comment
Share on other sites

@ArmoredVehicle.2849 said:

@"kalel.6129" said:

Dumb question but how does one do the "update"? Is it merely re-downloading and running /.setup again or what all do I need to do? Sorry for such a dumb question.

A typical update goes like this:
  • Download the new package.
  • Extract it and run the ./setup.sh file and wait for it to finish.
  • Go into your
    old
    installation and move the contents of "data/drive_c/
    GW2
    " in the new one.
  • Run ./play.sh as normally.

You rock! Thank you!

Link to comment
Share on other sites

@ArmoredVehicle.2849 said:

@jbrother.1340 said:Thanks again for your efforts.

I am going to give this new setup a try later once I have time. I want to now do comparisons from the gallium nine setup I have been testing to this and see which does better. I am curious to see how esync changes this on my old hardware.

When you get to it, can you please tell me if the mesa_glthread variable makes any effect on AMD GPU? I lack the hardware to test it.

@"ThunderBiggi.4651" said:I do have this library.

I should probably mention that I was playing GW2 for a few months on Linux with your version 1.2 (28th June update). I just wanted to update to get better performance.

It looks like something with the drivers is at play, yesterday I received a dual graphics laptop at work and I had a similar error, it wasn't GW2 specific and even trying out glxgears produced an error like yours.

Are you perhaps running a laptop with optimus/primusrun?

As a general note, prior to uploading these new builds I tested them on 3 different systems: Mint 18.1 (aka Ubuntu 16.04) with Nvidia GPU, Ubuntu 18.04 (with Mesa 18.0 / Intel HD) and Debian 9 (with Mesa 13 / Intel HD). Aside from slow performance on the Intel HD's, all 3 checked out correctly.

I also have a dual-graphics laptop - Nvidia GPU + Intel HD one. I have only installed the open source nvidia 395 drivers (from the graphics-drivers ppa) and have set the Nvidia GPU as the default one in Nvidia settings. I also checked that it is the one in use.

I am not sure about Optimus. On my previous laptop (still with Ubuntu 12.04) I tried setting it up with bumblebee but didn't succeed and haven't bothered with it on this laptop at all. Not sure whether Optimus hasn't been implemented in the open source drivers. Quick googling didn't tell me much.

I tried the fix you suggested with the edditing of "/etc/security/limits.conf", setting it to a value 16 times larger than yours and I still get the same crash error and debug output. What domain did you use for the lines? I just put the * wildcard.

The 28th June still works perfectly well.

Did you install any specific libraries on the 3 different systems before isntalling your package? Maybe my wine-staging is missing something? And what Nvidia drivers did you use. Felix said on reddit that they are using 395 as well.

Link to comment
Share on other sites

@ArmoredVehicle.2849 said:

@ArmoredVehicle.2849 said:@"Turin.6921" said:Hello,

I seem to have crashes when ever i try to load into cities. I am on an R71700, RX470 with the Oibaf mesa drivers.This is the game crash report:
And this is the debug output:

Too many open files is something esync would cause, to solve it do the following:

As sudo (in a text editor) open "/etc/security/limits.conf" and at the end you'll find 2 entries named:
  • hard nofile (number)
  • soft nofile (number)

Set that number to something higher, in my case it's 1048576 and the game works fine that way. Save it and reboot your system.

I decided to try it real quick while I was still by my PC.Getting same errors "to many files" that is eluded to above. my limits.conf file does not contain that entry currently only hard/soft nproc but does list nofile above in the variables section that can be used. Can I just add it into the bottom of the file above the end file tag with a sufficiently high number or should I change the proc switch value? It looks like this right now:

        #*               soft    core            0        #*               hard    rss             10000        #@student        hard    nproc           20        #@faculty        soft    nproc           20        #@faculty        hard    nproc           50        #ftp             hard    nproc           0        #@student        -       maxlogins       4        # harden against fork-bombs        *               hard    nproc           16384        *               soft    nproc           4096        # root            hard    nproc           3000        # root            soft    nproc           1850        # End of file
Link to comment
Share on other sites

@loseridoit.2756 said:

@alcopaul.2156 said:what's the logic of playing gw2 on linux when all the premade gaming pcs are running on windows and gw2 is designed to run on mac/windows pc? must be sinister. lel.

You actually experience fewer driver issues on Linux. Linux drivers have a tendency to be written for correctness with a strong regression testing. IHV do not have room to play this driver obscuration game like they do on windows since all drivers are open source. For games like Gw2, Anet is pretty good at Q/A. If you see graphics issues on tech support, it is more likely it due to driver issues than Anet programmers.

why you wanna layer the direct calls? must be some dumb garbage-y hocus pocus. lel.

Link to comment
Share on other sites

@alcopaul.2156 said:

@alcopaul.2156 said:what's the logic of playing gw2 on linux when all the premade gaming pcs are running on windows and gw2 is designed to run on mac/windows pc? must be sinister. lel.

You actually experience fewer driver issues on Linux. Linux drivers have a tendency to be written for correctness with a strong regression testing. IHV do not have room to play this driver obscuration game like they do on windows since all drivers are open source. For games like Gw2, Anet is pretty good at Q/A. If you see graphics issues on tech support, it is more likely it due to driver issues than Anet programmers.

why you wanna layer the direct calls? must be some dumb garbage-y hocus pocus. lel.

yea? Most software is full of layers. Anet might be using a layer right now to get cross-platform audio.Btw, dx9 on vulkan is not a huge layer and gallium nine is actually a native d3d9 driver on linuxOn the other hand, D3d9 on Opengl is getting better but shader pauses might be on the unfixable size.https://twitter.com/id_aa_carmack/status/298628243630723074?lang=enhttps://www.reddit.com/r/linux/comments/17x0sh/john_carmack_asks_why_wine_isnt_good_enough/John Carmack doesnt care too much about layers. Games avoid interactions with the OS as often as they can as an optimization technique.The impact of a layer is lower than you think it is.

Link to comment
Share on other sites

@loseridoit.2756 said:

@alcopaul.2156 said:what's the logic of playing gw2 on linux when all the premade gaming pcs are running on windows and gw2 is designed to run on mac/windows pc? must be sinister. lel.

You actually experience fewer driver issues on Linux. Linux drivers have a tendency to be written for correctness with a strong regression testing. IHV do not have room to play this driver obscuration game like they do on windows since all drivers are open source. For games like Gw2, Anet is pretty good at Q/A. If you see graphics issues on tech support, it is more likely it due to driver issues than Anet programmers.

why you wanna layer the direct calls? must be some dumb garbage-y hocus pocus. lel.

yea? Most software is full of layers. Anet might be using a layer right now to get cross-platform audio.Btw, dx9 on vulkan is not a huge layer and gallium nine is actually a native d3d9 driver on linuxOn the other hand, D3d9 on Opengl is getting better but shader pauses might be on the unfixable size.
John Carmack doesnt care too much about layers. Games avoid interactions with the OS as often as they can as an optimization technique.The impact of a layer is lower than you think it is.

when you run a native windows app on a windows os, all are direct calls. you using linux to run windows apps to use layers is the dumbest concept has ever been concocted.

Link to comment
Share on other sites

@"alcopaul.2156" said:when you run a native windows app on a windows os, all are direct calls. you using linux to run windows apps to use layers is the dumbest concept has ever been concocted.

that just shows your complete lack of understanding of wine. Wine just turns Win API into an application library.

wine - wine is not an emulatorthere is a reason why wine creators made that acronym.https://www.winehq.org/

All wine calls are practically native like Java, Qt etc. React OS, a reimplementation of Windows, uses wine libraries.Overhead is rather minimal.Before you call ideas are stupid, understand what you are talking about.https://wiki.winehq.org/Wine_Developer%27s_Guide/Architecture_Overview

Link to comment
Share on other sites

@"jbrother.1340" said:Getting same errors "to many files" that is eluded to above. my limits.conf file does not contain that entry currently only hard/soft nproc but does list nofile above in the variables section that can be used. Can I just add it into the bottom of the file above the end file tag with a sufficiently high number or should I change the proc switch value? It looks like this right now:

        #*               soft    core            0        #*               hard    rss             10000        #@student        hard    nproc           20        #@faculty        soft    nproc           20        #@faculty        hard    nproc           50        #ftp             hard    nproc           0        #@student        -       maxlogins       4        # harden against fork-bombs        *               hard    nproc           16384        *               soft    nproc           4096        # root            hard    nproc           3000        # root            soft    nproc           1850        # End of file

If you add them manually it should fix the problem, "nproc" refers to number of processes (which doesn't apply for this problem) while "nofile" number of files. :-)

Link to comment
Share on other sites

@alcopaul.2156 said:

its easy. you put some sand to a pipe and the water flow will be slower. simple physics.

GW2 on Linux = Dumbest Concoction Ever.

You do not understand the concept of out of order cpu.An out of order cpu will rearrange the sand such that it would not block the water flow.Complicated hardware design solves many of these problems.

Link to comment
Share on other sites

@loseridoit.2756 said:

@"alcopaul.2156" said:

its easy. you put some sand to a pipe and the water flow will be slower. simple physics.

GW2 on Linux = Dumbest Concoction Ever.

You do not understand the concept of out of order cpu.An out of order cpu will rearrange the sand such that it would not block the water flow.Complicated hardware design solves many of these problems.

the out of order cpu rearrangement is another activity and obviously cause lag coz you have an extra activity.

even if you hyperthread it, another thread doing an activity and it adds to the total activities. +1 activity = lag.

Windows GW2.exe on Linux = Some dumb crap that some sh1tters invented.

And obviously look at the thread title = "GW2 on Linux: Performance Optimization blah blah." that means GW2 on Linux needs performance optimization, aka it's fucking laggy.

lel.

Link to comment
Share on other sites

@alcopaul.2156 said:

its easy. you put some sand to a pipe and the water flow will be slower. simple physics.

GW2 on Linux = Dumbest Concoction Ever.

You do not understand the concept of out of order cpu.An out of order cpu will rearrange the sand such that it would not block the water flow.Complicated hardware design solves many of these problems.

the out of order cpu rearrangement is another process and obviously cause lag coz you have an extra process.

CPU stalls pretty often.Rearranging instructions in between is cheaper in practice than executing everything in order.There is a joke that cpu designers run word, excel, or flash as a benchmark.

Link to comment
Share on other sites

@loseridoit.2756 said:

its easy. you put some sand to a pipe and the water flow will be slower. simple physics.

GW2 on Linux = Dumbest Concoction Ever.

You do not understand the concept of out of order cpu.An out of order cpu will rearrange the sand such that it would not block the water flow.Complicated hardware design solves many of these problems.

the out of order cpu rearrangement is another process and obviously cause lag coz you have an extra process.

CPU stalls pretty often.Rearranging instructions in between is cheaper in practice than executing everything in order.There is a joke that cpu designers run word, excel, or flash as a benchmark.

you sure? k, bruv. lel.

Link to comment
Share on other sites

@"alcopaul.2156" said:

you sure? k, bruv. lel.

http://zilles.cs.illinois.edu/papers/mcfarlin_asplos_2013.pdfhttps://pdfs.semanticscholar.org/presentation/efb5/dd8d92d85db634fcfa08bd55d439b60bfab2.pdf88% is due to better static scheduling12% is due to better dynamics scheduling.

Although 88% is achievable with a compiler, no compiler exists.

Here is a breden egg article about cpu utilization

http://www.brendangregg.com/blog/2017-05-09/cpu-utilization-is-wrong.html

CPU does nothing majority of their time. It is a pretty normal operation.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...