Jump to content
Eternal Lands Official Forums
Sign in to follow this  
Krones

Linux major performance reduction

Recommended Posts

I've experienced a drastic performance reduction with this last version of EL compared to the last one. On EL itself, the slowdown isn't that drastic. I've asked some other players how this new version was to them concerning performance, and they said it was a bit slower, but not awefuly, which seems to be compatible with the minor slowdown I noticed when playing. What troubles me is a major performance decrease on the desktop, and it's very noticeable when changing the focus of windows, even if it is not EL's (for example, if I minimize a browser, or open a text editor), or when working with menu tabs (pressing Alt+F or clicking on the File tab of your browser opens a menu tab). The system returns to normal after EL is closed. I run KDE.

After some testing, I came to the following conclusions:

*It is not my video setup. What sometimes happens to be the most limiting factor for performance on most 3D games, this is not the case. I ran EL on it's lowest (640x480, disabling all fancy 3D stuff, eyecandy, shadows and all that) and the problem persists. I can run other 3D stuff here without any problem, and I have a decent video card (NVIDIA GeForce FX 5200 256Mb).

*It doesn't seem to be a CPU problem. I notice that most CPU-freezing situations (even not EL-related) cause my other aplications to freeze, slow or stop responding. I sometimes listen to music while playing EL, and the player doesn't stop when the problem occurs, while most computer-interaction does. All tasks seem normal. Overloading my CPU normally stops Amarok. I have a Sempron 2800+.

*I have 768Mb memory, and I ran performance monitorations on EL. I could see that it eats up 15-30% of the memory. Shouldn't cause that much of a problem or slow the system that much.

*I have sound disabled on EL

*Tested it on fluxbox (other window manager, lighter) and the problem is as bad as in KDE.

I'm :)

Anyone else with this problems?

Krones

Edited by Krones

Share this post


Link to post
Share on other sites

Yes, I thouht about that too. Nope, problem persists, EL minimized or not... CPU usage seems to be normal (lower than when EL is maximized)

Edited by Krones

Share this post


Link to post
Share on other sites

Hey,

 

afaik, some objects/code is run despite its visible or not, I've seen that also. Not quite sure about what causes it.

 

One of the locations I saw that happening is inside Manu School, in PL. If I face the entrance (even if I don't see it) the CPU usage goes beserk (my usual cpu is 5-10% with 25fps limit, geforce quadro).

 

I can try to track down with greater granularity what is happening. Althrough is not easy.

 

PS: even with the map going on, the objects seem either to be drawn or the maths for them is being computed.

 

Álvaro

Share this post


Link to post
Share on other sites

True, my CPU goes frying everytime I see TG castle entrance (although that's somewhat better since I changed my video card), but that happened in the previous versions as well. And the performance cut doesn't seem to be place related in game.

Placid: good thinking! In console mode it doesn't slow down, or even in map mode (tab key). That helps, and works as a work around for the time. Thanks

Share this post


Link to post
Share on other sites

I am not sure if this is the same as what you are describing, but I have noticed a "pausing" of the xwindows system whenever I change windows from EL, but only when the graphical portion of the game is up (when in console mode I do not get the pauses)

 

The pause occurs systemwide, and is accompanied by a 100% CPU spike. I only see it happening with EL. I had initially thought it was a bug with my nvidia drivers, but I updated those and still got the issue.

 

S.

Share this post


Link to post
Share on other sites

I'm unable to reproduce any of the things you're describing (Nvidia GeForce4 Ti4200, 96.43.01 legacy drivers).

 

I did some profiling using callgrind, and with EL minimised, most of the CPU time is spent in draw_enhanced_actors() from draw_actors(), called from display_game_handler() in gamewin.c:998. The comment next to the draw_actors call is "// we need to 'touch' all the actors even if not drawing to avoid problems". I'm not quite sure what these problems are, since it doesn't seem to get called when the game window isn't displayed (ie. when looking at the console or the map).

 

The other thing using CPU while minimised is ec_idle(), which is related to the eye candy code, but this is very little compared to the above (81.5% vs. 16.77%).

Edited by Vegar

Share this post


Link to post
Share on other sites

I'm unable to reproduce any of the things you're describing (Nvidia GeForce4 Ti4200, 96.43.01 legacy drivers).

 

I have a very similar -- if not the same -- problem: performance is ok when the 3D world is shown, but decreases dramatically as soon as it is not shown, i.e. when opening the map or console in full screen, or minimizing the EL window, or moving to another screen (I use 8 virtual screens with the Gnome Desktop, but results are identical with other window managers).

 

Video card is a nVidia Corporation GeForce Go 6200 TurboCache (rev a1); kernel module NVIDIA UNIX x86 Kernel Module 1.0-9755 Mon Feb 26 23:21:15 PST 2007, GLInfo as follows:

 

Video card: GeForce Go 6200/PCI/SSE2

Vendor ID: NVIDIA Corporation

OpenGL Version: 2.1.0 NVIDIA 97.55

Supported extensions: GL_ARB_color_buffer_float GL_ARB_depth_texture GL_ARB_draw_buffers GL_ARB_fragment_program GL_ARB_fragment_program_shadow GL_ARB_fragment_shader GL_ARB_half_float_pixel GL_ARB_imaging 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_shadow GL_ARB_shader_objects GL_ARB_shading_language_100 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_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_buffer_object GL_ARB_vertex_program GL_ARB_vertex_shader GL_ARB_window_pos GL_ATI_draw_buffers GL_ATI_texture_float GL_ATI_texture_mirror_once GL_S3_s3tc GL_EXT_texture_env_add 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_Cg_shader GL_EXT_depth_bounds_test 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_pixel_buffer_object GL_EXT_point_parameters GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_specular_color GL_EXT_shadow_funcs GL_EXT_stencil_clear_tag GL_EXT_stencil_two_side GL_EXT_stencil_wrap GL_EXT_texture3D GL_EXT_texture_compression_s3tc GL_EXT_texture_cube_map GL_EXT_texture_edge_clamp GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_EXT_texture_filter_anisotropic GL_EXT_texture_lod GL_EXT_texture_lod_bias GL_EXT_texture_mirror_clamp GL_EXT_texture_object GL_EXT_texture_sRGB GL_EXT_timer_query GL_EXT_vertex_array GL_IBM_rasterpos_clip GL_IBM_texture_mirrored_repeat GL_KTX_buffer_region GL_NV_blend_square GL_NV_copy_depth_to_color GL_NV_depth_clamp GL_NV_fence GL_NV_float_buffer GL_NV_fog_distance GL_NV_fragment_program GL_NV_fragment_program_option GL_NV_fragment_program2 GL_NV_framebuffer_multisample_coverage GL_NV_half_float GL_NV_light_max_exponent GL_NV_multisample_filter_hint GL_NV_occlusion_query GL_NV_packed_depth_stencil GL_NV_pixel_data_range GL_NV_point_sprite GL_NV_primitive_restart GL_NV_register_combiners GL_NV_register_combiners2 GL_NV_texgen_reflection GL_NV_texture_compression_vtc GL_NV_texture_env_combine4 GL_NV_texture_expand_normal GL_NV_texture_rectangle GL_NV_texture_shader GL_NV_texture_shader2 GL_NV_texture_shader3 GL_NV_vertex_array_range GL_NV_vertex_array_range2 GL_NV_vertex_program GL_NV_vertex_program1_1 GL_NV_vertex_program2 GL_NV_vertex_program2_option GL_NV_vertex_program3 GL_NVX_conditional_render GL_SGIS_generate_mipmap GL_SGIS_texture_lod GL_SGIX_depth_texture GL_SGIX_shadow GL_SUN_slice_accum

 

I could not very well pinpoint exactly where in the code the performance drop occurs, but it has to do with graphics rendering for sure. Performance loss in my laptop is so severe that the audio DMA can't be fed fast enough, and the music and effects become jerky as soon as the 3D world is not shown on-screen...

 

If anybody more familiar with that code can provide some direction, I would be glad to do more testing.

Share this post


Link to post
Share on other sites

Spleenfeeder:

maybe there is a CPU 100% spike and my tools aren't measuring it correctly, because the default intervals are too big. Probably.

Console or map modes avoid the problem... and it's not the display driver. Very weird. It also happened that once or twice I had the whole X frozen completely. The apps would continue normaly, but I couldn't use the keyboard nor touch anything with the mouse, though it sill moved, displaying EL cursor. Very, very weird... but it has to do with this new update.

Share this post


Link to post
Share on other sites

On Windows I always noticed that problem, and what I do is just go in the console mode whenever not actually using the game.

Not sure if it is a bug or just that the game does take quite a lot of CPU. I noticed that with other games as well..

Share this post


Link to post
Share on other sites

What is happening to me has only started happening since 1.50, and I did initially think it was due to my system rather than the game. Whereas before it would pause for a fraction of a second maybe before changing screens or whatever, it is now pausing for over a second, which doesnt sound like much, but it is very noticable. Now that I see others noticing it using xwindows, I am less inclined to think it is a problem with my system.

 

I have also tried to see whether changing windows with other opengl games running (with high cpu usage) and I am not noticing the systemwide pause.

 

As you say Ent, I have now started to flick over to console mode before changing windows to prevent the pause. But it is new.

 

S.

Share this post


Link to post
Share on other sites

Ent:

I'm doing the same (putting the game in console mode), but I think the problem is not caused by an increase in the game's CPU consumption. Previous versions were much better, and there weren't significative 3D improvements from those versions (or at least, not to the point of cutting performance that much). Even if I set video options to the lowest, I still get those problems. And when playing the game it seems OK. If the game was eating up more CPU, the game itself would get slower, but what happens is that the game is not proporcionally slower to the downcut performance on Xwindows system. That's why I think it's more like a bug.

Share this post


Link to post
Share on other sites

If you detect these performance issues, pls lauch "top" and check which value is displayed at "si", which means software interrupt.

My performance issue where related to this value, which means, the higher the value was, the more performance the game uses. It would be highly interesting if you see the same behavior or not.

 

-Erdie

Share this post


Link to post
Share on other sites

top is of limited use here, for me anyway. it causes a COMPLETE system pause when I switch out of the EL window, so top is paused too. Every so often I catch top reporting full cpu usage of the xorg process, but thats about as useful as top gets in this case.

 

The only consistent trace I get of it is my gkrellm monitor has a big fat red spike in it where the pause occurs.

 

Again, latest nvidia drivers, not happening with any other opengl or otherwise program, and only since EL release 1.50.

 

S.

Share this post


Link to post
Share on other sites

Spleenfeeder:

Since it's only X that stops, redirect top's output to a file (top -b >>file). Don't forget the -b option.

Erdie:

After doing what I told Spleenfeeder, I could see that EL doesn't really use more of the CPU, but somehow makes the XWindows do it. Check this:

CPU | MEM | NAME
12.0   4.1	Xorg
25.3   21.2	el.x86.linux.bin
///////////////////////////////////////////////
66.6   4.1	Xorg
18.3   21.2	el.x86.linux.bin
////////////////////////////////////////////////
37.3   4.1	Xorg
34.3   21.2	el.x86.linux.bin
////////////////////////////////////////////////
87.9   4.1	Xorg							  <-- Whoa!
2.0	 21.2	el.x86.linux.bin
///////////////////////////////////////////////
80.6   4.1	Xorg
8.7	21.2	el.x86.linux.bin
////////////////////////////////////////////////
49.9   4.1	Xorg
31.6   21.2	el.x86.linux.bin
///////////////////////////////////////////////
8.0	 4.1	Xorg							   <-- Same op, but EL in console mode
11.3   21.2   el.x86.linux.bin

 

odd isn't it? Only happes with EL 1.5

Krones

Edited by Krones

Share this post


Link to post
Share on other sites

Heres my output:

 

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

26095 spleenie 23 0 316m 227m 88m R 55.4 22.5 414:32.72 elcvs.bin

4993 root 16 0 592m 323m 13m R 14.3 32.0 164:15.68 Xorg

 

 

26095 spleenie 19 0 316m 227m 88m R 44.5 22.5 414:34.06 elcvs.bin

4993 root 15 0 592m 323m 13m S 11.6 32.0 164:16.03 Xorg

 

 

26095 spleenie 16 0 316m 220m 88m R 28.3 21.8 414:34.91 elcvs.bin

4993 root 15 0 596m 323m 13m S 21.9 31.9 164:16.69 Xorg

 

 

4993 root 18 0 599m 327m 13m R 77.8 32.4 164:20.40 Xorg <---POW redspike

26095 spleenie 15 0 316m 220m 88m R 7.0 21.8 414:37.51 elcvs.bin

 

 

4993 root 15 0 592m 323m 13m R 27.2 32.0 164:21.22 Xorg

26095 spleenie 15 0 316m 220m 88m R 18.9 21.8 414:38.08 elcvs.bin

 

 

4993 root 16 0 593m 323m 13m S 64.7 31.9 164:24.22 Xorg <--and another (both simply by changing window focus)

26095 spleenie 16 0 316m 205m 88m R 23.6 20.3 414:39.50 elcvs.bin

 

 

26095 spleenie 15 0 316m 205m 88m S 34.9 20.3 414:40.55 elcvs.bin

4993 root 15 0 594m 323m 13m S 14.6 31.9 164:24.66 Xorg

 

 

26095 spleenie 15 0 316m 205m 88m S 24.8 20.3 414:41.30 elcvs.bin

4993 root 15 0 592m 323m 13m R 2.6 31.9 164:24.74 Xorg

 

S.

Share this post


Link to post
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
Sign in to follow this  

×